【问题标题】:how to put current iteration number as array index in xsl如何将当前迭代次数作为数组索引放入xsl
【发布时间】:2013-12-18 03:39:58
【问题描述】:

我正在使用的 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>

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

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

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

【问题讨论】:

    标签: xml xslt foreach tags iteration


    【解决方案1】:

    我认为您正在寻找 position() 函数,例如在for-each 中使用&lt;xsl:value-of select="position()"/&gt; 将产生1234 等。

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

    【讨论】:

    • 嘿@martin:我使用你的方法已经完成了一半,但它仍然不是我想要的格式。我已经编辑了问题,请再看一遍。
    • @Pulkit,我添加了一些代码来尝试实现您更改的要求。
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2022-12-20
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多