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

Xml 如何在xsl中将当前迭代数作为数组索引,xml,xslt,foreach,tags,iteration,Xml,Xslt,Foreach,Tags,Iteration,我正在使用的Xml "<default>" "<string>a</string>" "<string>Apple</string>" "<string>b</string>" "<string>Ball</string>" "<string>c</string>" "<string>Cat</str

我正在使用的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>
“”
“a”
“苹果”
“b”
“球”
“c”
“猫”
“d”
“狗”
""
这就是我正在使用的xsl
现在我希望我的xml采用这种格式

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

苹果
球
猫
狗
为此,我需要
中的当前迭代数和
。有人能帮我吗?

我想你是在寻找
位置()
函数,例如在
中为每个
使用
将产生
1
2
3
4
,等等

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

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

<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>

我认为您正在寻找
位置()
函数,例如,使用
将为每个
生成
1
2
3
4
,等等

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

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

<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>


hey@martin:我已经用了一半的方法了,但仍然不是我想要的格式。我已经编辑了这个问题,请再看一次。@Pulkit,我已经添加了一些代码来尝试实现您更改的需求。嘿@martin:我使用您的方法已经进行了一半,但它仍然不是我想要的格式。我已经编辑了这个问题,请再看一次。@Pulkit,我添加了一些代码来尝试实现您更改的需求。