特定のノードの値を取得するには、id
属性で指定します。しかし、私のXSLパーサであるSaxonの動作は、どうやって動作するのかということではありません。XPathでの属性値の比較
これは私のXSLコードです:私はちょうどconnecteur
属性を持つsynonyme
という名前のタグにマッチした
<xsl:template match="synonyme">
<xsl:element name="corr">
<xsl:value-of select="@connecteur" />
<xsl:value-of select="/liste/connecteur[@[email protected]]/forme[1]" />
</xsl:element>
</xsl:template>
。私のコードは、この属性の値を出力します。
connecteur
属性に一致するid
属性を持つ別のノードの値を、現在一致しているsynonyme
タグの出力したいとします。しかし、このクエリで結果が見つからない場合は、2番目のvalue-of
には常に空の出力があります。
[@id='c160']
、c160
は最初のvalue-of
によって出力されるのと全く同じものですが、動作します!しかし、私のマッチしたノードの@attribute
と比較してはいけません。これをどうすれば解決できますか?
XMLは基本的に
<liste><connecteur id="c160"><forme>foo</forme></connecteur>
<connecteur id="c161"><synonyme connecteur="c160" /></connecteur>
</liste>
あるとsynonyme
の代わりに、予想される出力は<corr>c160 foo</corr>
です。