gs,
when I use the following stylesheet:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="*" priority=".1">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="mo[.='(']" priority="1">
<xsl:variable name="moWithParen" select="count(preceding::mo[text() = '('])"/>
<prompt><goto next = "{$moWithParen}"/></prompt>
<prompt><xsl:text disable-output-escaping="yes"></form></xsl:text></prompt><xsl:text disable-output-escaping="yes">
<prompt>
<form name = "</xsl:text><xsl:value-of select="$moWithParen"/><xsl:text disable-output-escaping="yes">">
</prompt></xsl:text>
</xsl:template>
</xsl:stylesheet>
to transform the following XML:
<test>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<mo>(</mo>
<mrow>
<mi>a</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
<mo>#8290;</mo>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<mo>(</mo>
<mrow>
<mi>b</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<mo>(</mo>
<mrow>
<mi>a</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
<mo>#8290;</mo>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<mo>(</mo>
<mrow>
<mi>b</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
</test>
I get the following output:
<test>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<prompt>
<goto next="0"></goto>
</prompt>
<prompt></form></prompt>
<prompt>
<form name = "0">
</prompt>
<mrow>
<mi>a</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
<mo>#8290;</mo>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<prompt>
<goto next="1"></goto>
</prompt>
<prompt></form></prompt>
<prompt>
<form name = "1">
</prompt>
<mrow>
<mi>b</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<prompt>
<goto next="2"></goto>
</prompt>
<prompt></form></prompt>
<prompt>
<form name = "2">
</prompt>
<mrow>
<mi>a</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
<mo>#8290;</mo>
<mrow>
<mi>erf</mi>
<mo>#8289;</mo>
<prompt>
<goto next="3"></goto>
</prompt>
<prompt></form></prompt>
<prompt>
<form name = "3">
</prompt>
<mrow>
<mi>b</mi>
<mo>#8290;</mo>
<mi>z</mi>
</mrow>
<mo>)</mo>
</mrow>
</test>
which looks to be incrementing fine in both places. You'll need to provide more information to debug your problem: what XSLT processor are you using? Can you provide the sample XML, XSL, and output you are getting?
...sam
|