更多供参考而非实际需要:XPath
语法是什么允许我在其他地方使用相同元素名称时引用xsl:for-each
块中的元素?
请注意,遗憾的是,这必须是1.0解决方案
例如,我有以下简单的XML,我想匹配具有相同id
值的项目......
<data>
<block1>
<item><id>1</id><text>Hello</text></item>
<item><id>2</id><text>World</text></item>
</block1>
<block2>
<item><id>1</id><text>123</text></item>
<item><id>2</id><text>ABC</text></item>
</block2>
</data>
如果for-each
上有block1
,我如何引用id
中的block1
和{{1}中的id
}}?
这会有效,但我觉得它很混乱......
block2
结果......
<xsl:for-each select="//block1/item">
<xsl:variable name="id" select="id"/>
<xsl:value-of select="text"/> - <xsl:value-of select="//block2/item[id=$id]/text"/>
</xsl:for-each>
是否有一种简化的方法可以替换Hello - 123
World - ABC
中的$id
,以便它引用select="//block2/item[id=$id]/text"
中的id
元素?
答案 0 :(得分:1)
另一种方法,你可能会发现更清晰,可能更快,是使用键:
<xsl:key name="b2" match="block2/item" use="id"/>
然后
<xsl:value-of select="key('b2', id)/text"/>
答案 1 :(得分:0)
你所拥有的是正确和普遍的。没有必要进一步简化它;它是使用XSLT的人员认可和使用的标准习语。