この質問をもう一度申し訳ありません。前の質問の回答を使用しているときに問題が発生しました。私のxmlが次のようになっているとします。
<comp>
<section id="1">
<p>text</p>
<figure xml:id="c1-fig-002"/>
<p>text</p>
<figure xml:id="c1-fig-003"/>
</section>
<section id="2">
<p>text</p>
<figure xml:id="c1-fig-003"/>
<figure xml:id="c1-fig-004" resumeNumberingAt="7"/>
<figure xml:id="c1-fig-005"/>
<p>text</p>
</section>
<section id="3">
<p>text</p>
<figure xml:id="c1-fig-006"/>
<figure xml:id="c1-fig-007" resumeNumberingAt="18"/>
<p>text</p>
<figure xml:id="c1-fig-008"/>
<p>text</p>
<figure xml:id="c1-fig-009"/>
</section>
</comp>
次の結果を得るために xslt を使用しています。
<comp>
<section id="1">
<p>text</p>
<figure xml:id="c1-fig-002"/>
<fignum>2</fignum>
<p>text</p>
<figure xml:id="c1-fig-003"/>
<fignum>3</fignum>
</section>
<section id="2">
<p>text</p>
<figure xml:id="c1-fig-003"/>
<fignum>3</fignum>
<figure xml:id="c1-fig-004" resumeNumberingAt="7"/>
<fignum>7</fignum>
<figure xml:id="c1-fig-005"/>
<fignum>8</fignum>
<p>text</p>
</section>
<section id="3">
<p>text</p>
<figure xml:id="c1-fig-006"/>
<fignum>9</fignum>
<figure xml:id="c1-fig-007" resumeNumberingAt="18"/>
<fignum>18</fignum>
<p>text</p>
<figure xml:id="c1-fig-008"/>
<fignum>19</fignum>
<p>text</p>
<figure xml:id="c1-fig-009"/>
<fignum>20</fignum>
</section>
</comp>
2
からの図の後に来る数値から値を取得する必要がありますc1-fig-002
。
属性 resumeNumberingAt がある場合、通常の値の代わりにその値を使用し、次のノードの値をインクリメントする必要があります。これを行うために次の xslt を使用しましたが、機能していません。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="figure[@resumeNumberingAt != '']">
<xsl:call-template name="fig">
<xsl:with-param name="sequence" select="@resumeNumberingAt"/>
</xsl:call-template>
</xsl:template>
<xsl:template match ="section">
<!--some operation-->
</xsl:template>
<xsl:template match ="p">
<!--some operation-->
</xsl:template>
<xsl:template match="figure" name="fig">
<xsl:param name="sequence" select="substring(@xml:id, 10, 1)"/>
<figure>
<xsl:apply-templates select="@*"/>
<fignum>
<xsl:value-of select="$sequence"/>
</fignum>
</figure>
<xsl:apply-templates select="following-sibling::figure[1]">
<xsl:with-param name="sequence" select="$sequence + 1"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>