私は「グループ」ノードにいます。それから、現在の「グループ」ノード「ref_item_id」属性値と等しい「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>