我有一个包含节点集的变量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的新手,我不知道如何解决这个问题。任何帮助将不胜感激!
答案 0 :(得分:0)
要编写XSLT代码,您需要了解的一个概念是“上下文”。路径表达式(如/ b / c)选择相对于某个上下文项的节点; xsl:for-each
指令更改上下文项。如果绑定vName
时要选择的DATAPACKET与绑定vHeaders
时选择的DATAPACKET相同,那么最简单的解决方案是将vName
的声明移到{{1}之外因为它不以任何方式依赖于xsl:for-each
建立的新上下文。
(另一方面,如果xsl:for-each
属性与@blah
变量有关,那么此处也存在其他问题。)