【发布时间】:2012-07-02 04:01:54
【问题描述】:
我在“组”节点中。从中,我想找到这样的 'item' 节点,它的 'id' 属性等于当前的 'group' 节点 'ref_item_id' 属性值。因此,在我的情况下,通过在“组”节点 B 中,我希望“项目”节点 A 作为输出。这有效:
<xsl:value-of select="preceding-sibling::item[@id='1']/@description"/>
但这并没有(什么都不提供):
<xsl:value-of select="preceding-sibling::item[@id=@ref_item_id]/@description"/>
当我输入时:
<xsl:value-of select="@ref_item_id"/>
结果是“1”。所以这个属性肯定是可访问的,但我无法从上面的 XPath 表达式中找到它的路径。我尝试了许多 '../' 组合,但无法正常工作。
要测试的代码:http://www.xmlplayground.com/7l42fo
完整的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item description="A" id="1"/>
<item description="C" id="2"/>
<group description="B" ref_item_id="1"/>
</root>
完整的 XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="no"/>
<xsl:template match="root">
<xsl:for-each select="group">
<xsl:value-of select="preceding-sibling::item[@id=@ref_item_id]/@description"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
几个问题需要澄清。你可以有许多具有特定 id 的
- 节点吗?是否所有
- 节点都放在
节点之前? - 节点吗?是否所有
-
@Ravz 'id' 在
- 节点中是唯一的。所有
之前- 都放在
- 节点中是唯一的。所有