我有包含一系列步骤的 XML。我正在尝试在出现标题时重置步骤编号。
每个步骤将包含一个或多个“para”元素。
每个步骤可以可选地包含一个“标题”元素。
每个步骤都应该收到一个连续的编号,但是当出现标题时,步骤编号应该重新开始。
这需要使用 XSLT 1.0/XSL:FO 来完成。
XML:
<top>
<Step>
<title>Toilet Paper Holder</title>
<para>It holds toilet paper.</para>
<para>It holds 1 roll.</para>
</Step>
<Step>
<para>It is red.</para>
</Step>
<Step>
<para>It is metal.</para>
</Step>
<Step>
<title>Toilet</title>
<para>You sit on it.</para>
</Step>
<Step>
<para>It is white.</para>
</Step>
<Step>
<para>It is porcelain.</para>
</Step>
</top>
XSL:
<xsl:template match="Step">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="title">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="para">
<fo:block>
<xsl:if test="not(preceding-sibling::para)">
<xsl:number count="Step[child::para]" from="top" format="1."/>
</xsl:if>
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
电流输出:
Toilet Paper Holder
1. It holds toilet paper.
It holds 1 roll.
2. It is red.
3. It is metal.
Toilet
4. You sit on it.
5. It is white.
6. It is porcelain.
期望的输出:
Toilet Paper Holder
1. It holds toilet paper.
It holds 1 roll.
2. It is red.
3. It is metal.
Toilet
1. You sit on it.
2. It is white.
3. It is porcelain.