我在“组”节点中。从中,我想找到这样的“项目”节点,它的“id”属性等于当前的“组”节点“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>