【问题标题】:xsl: Store multiple items in a variable or param for later usexsl:将多个项目存储在一个变量或参数中以供以后使用
【发布时间】:2011-09-30 13:07:08
【问题描述】:

我需要将 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 做到这一点?

感谢您的帮助

【问题讨论】:

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


    【解决方案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()
                "/>
    

    【讨论】:

    • @AnkurMittal:我还添加了 XSLT 2.0 解决方案。
    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多