У меня есть XML, который содержит серию шагов. Я пытаюсь сбросить нумерацию шагов, когда заголовок имеет место.XSLT 1.0/XSL: FO - как сбросить нумерацию при возникновении определенного дочернего узла
Каждый шаг будет содержать один или несколько элементов «пара».
Каждый шаг может необязательно содержать один элемент «title».
Каждый шаг должен иметь последовательный номер, однако при появлении заголовка нумерация шагов должна перезапускаться.
Это должно быть выполнено с использованием 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.