在节点集变量中使用元素

时间:2018-04-01 23:06:23

标签: xml xslt

我有一个包含节点集的变量vHeaders

我现在想创建一个 for循环,这样,对于vHeaders中的每个元素,我正在创建一个包含另一个节点集的变量:

    <xsl:variable name = "vHeaders" select = "DATAPACKET/METADATA/FIELDS/*/@attrname"/>
    <xsl:for-each select="$vHeaders">
        <xsl:variable name="blah" select= "."/>
        <xsl:variable name = "vName" select = "DATAPACKET/ROWDATA/*/$blah"/>
        <xsl:value-of select = "vName[1]"/>
    </xsl:for-each>

我是XML的新手,我不知道如何解决这个问题。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

要编写XSLT代码,您需要了解的一个概念是“上下文”。路径表达式(如/ b / c)选择相对于某个上下文项的节点; xsl:for-each指令更改上下文项。如果绑定vName时要选择的DATAPACKET与绑定vHeaders时选择的DATAPACKET相同,那么最简单的解决方案是将vName的声明移到{{1}之外因为它不以任何方式依赖于xsl:for-each建立的新上下文。

(另一方面,如果xsl:for-each属性与@blah变量有关,那么此处也存在其他问题。)