如何将当前迭代次数作为数组索引放在xsl中

Pul*_*kit 1 xml tags iteration xslt foreach

我正在使用的Xml

"<default>"
    "<string>a</string>"
    "<string>Apple</string>"
    "<string>b</string>"
    "<string>Ball</string>"
    "<string>c</string>"
    "<string>Cat</string>"
    "<string>d</string>"
    "<string>Dog</string>"
"</default>"

and this is the xsl I am using

  <xsl:for-each select="//default/string">
        <xsl:element name="{/default/string[?]\">
             <xsl:value-of select="/default/string[?]\"/>
        </xsl:element>
  </xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

现在我希望我的xml采用这种格式

<default>
   <a>Apple</a>
   <b>Ball</b>
   <c>Cat</c>
   <d>Dog</d>
</default>
Run Code Online (Sandbox Code Playgroud)

为此,我需要当前的迭代次数<xsl:element name="{/default/string[?]\">和增量值<xsl:value-of select="/default/string[?]\"/> .有人可以帮助我吗?

Mar*_*nen 5

我认为你正在寻找的position(),例如内部功能for-each使用<xsl:value-of select="position()"/>将产生1,2,3,4,等.

<xsl:for-each select="//default/string">
  <xsl:element name="{.}"><xsl:value-of select="position()"/></xsl:element>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

我认为您最近的编辑不使用任何索引或位置,而是您想要的

<xsl:for-each select="//default/string[position() mod 2 = 1]">
  <xsl:element name="{.}"><xsl:value-of select="following-sibling::string[1]"/></xsl:element>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)