<xsl:if test child::a>
<xsl:apply-templates select="a" mode="test"/>
</xsl:if>
This seems to be the same problem as the "Axis specifers" list posted
earlier, as explained there, teh xsl:if is not doing anything, the above
three lines are equivalent to
<xsl:apply-templates select="a" mode="test"/>
and these have teh effect of processing all a elements, you don't want
to do that you want to process all elements in order, both a and b. so
just have
<xsl:template match="r1">
<xsl:apply-templates />
</xsl:template>
a elements appear to be paragraphs
<xsl:template match="a">
<p><xsl:apply-templates /></p>
</xsl:template>
and you want elements to be numbered
<xsl:template match="b">
<p><xsl:number/><xsl:apply-templates /></p>
</xsl:template>
this is again equivalent to the code posted in the earlier thread.
How do I check that if there are <a> elements before
<b> element inside <r1>, then they should be displayed
before the <b> element. And if there are <a> elements
after the <b> element, they should be displayed after
the <b> element?
you could check with test="b/preceding-sibling::a" but there is no need
to check as the behaviour that you want is the defualt behaviour, the
only reason that the a and b elements are being processed out of order
is that elsewhere in your code you explictly select all the a elements
so they are being processed first.
David
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--