XSL自动编号

时间:2017-06-03 21:48:20

标签: xml xslt xslt-1.0

鉴于以下结构,

<?xml version="1.0" encoding="utf-8"?>
<crew>
  <crewDrill>
    <step>
      <if>
        <step></step>
        <step></step>
      </if>
    </step>
    <if>
      <step>
        <if>
          <step></step>
          <step></step>
        </if>
      </step>
    </if>
  </crewDrill>
  <crewDrill>
    <step>
      <if>
        <step></step>
        <step></step>
      </if>
    </step>
    <if>
      <step></step>
      <step></step>
    </if>
  </crewDrill>
</crew>

我想通过向每个<step>节点添加一个属性来使用xsl 1.0来自动编号。我想在每个<crew>元素的开头使用多个级别并重新开始编号。更具体地说,我想得到以下结果:

<crew>
  <crewDrill>
    <step nb="1">
      <if>
        <step nb="1.1"></step>
        <step nb="1.2"></step>
      </if>
    </step>
    <if>
      <step nb="2">
        <if>
          <step nb="2.1"></step>
          <step nb="2.2"></step>
        </if>
      </step>
    </if>
  </crewDrill>
  <crewDrill>
    <step nb="1">
      <if>
        <step nb="1.1"></step>
        <step nb="1.2"></step>
      </if>
    </step>
    <if>
      <step nb="2"></step>
      <step nb="2"></step>
    </if>
  </crewDrill>
</crew>

我尝试过以下操作但没有成功:

<xsl:template match="step">
    <xsl:copy>
      <xsl:attribute name="proceduralStepNumber">
        <xsl:number format="1. " level="multiple" from="crewDrill"/>
      </xsl:attribute>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>

0 个答案:

没有答案