xsl:将多个项目存储在变量或参数中以供以后使用

时间:2011-09-30 13:07:08

标签: xml xslt xml-parsing xslt-2.0 saxon

我需要将xml转换为某种自定义xml格式。

在新格式中,我将拥有许多sections节点,并且对于每个节点,我使用以下方法创建唯一ID:

<xsl:attribute name="identifier">
                <xsl:variable name="uid" select="util:randomUUID()"/>A<xsl:value-of select="util:toString($uid)"/>
</xsl:attribute>

我需要一种方法将所有这些ID存储在列表或数组中,以便我可以从其他模板中引用它并在for-each循环中使用它们。

有没有办法用xsl做到这一点?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

将这些全局声明

<xsl:variable name="vrtfRandList">
 <xsl:for-each select="yourNodeSet">
  <rand><xsl:value-of select="util:randomUUID()"/></rand>
 </xsl:for-each>
</xsl:variable>

<xsl:variable name="vRandlist" select="ext:node-set($vrtfRandList)/*"/>

然后再使用

$vRandlist[$k]

使用XSLT 2.0

<xsl:variable name="vRandlist" as="xs:integer*"
     select="for $i in 1 to count(yourNodeSet)
              return 
                 util:randomUUID()
            "/>