私は次のテンプレートを持っています:
<xsl:template match="footnote">
<xsl:variable name = "string">
<xsl:value-of select="."/>
</xsl:variable>
<xsl:variable name = "bool">
<xsl:if test="$string = preceding-sibling::node()/$string">
<xsl:text>false</xsl:test>
</xsl:if>
</xsl:variable>
<xsl:if test="$bool != 'false'">
<!-- DO STUFF -->
</xsl:if>
</xsl:template>
現在のノードの$string変数をチェックし、以前のすべての脚注ノードと照合して、同じ$string変数があるかどうかを確認しようとしています。前の兄弟のいずれとも一致しない場合は、何かを実行する必要があります。それ以外の場合は、何も実行しないでください。
私が持っているコードでは、脚注ノードがまだ作成されていない場合でも、テスト "$ string = previous-sibling :: node()/$string"は常にtrueと評価されます。
誰かが私を助けることができますか?以前のすべての兄弟の変数と比較する式を作成するのに苦労しています。
編集:サンプルXML:
<xml>
<footnote>Footnote 1</footnote>
<footnote>Footnote 2</footnote>
<footnote>Footnote 1</footnote>
<footnote>Footnote 1</footnote>
<footnore>Footnote 3</footenote>
</xml>
私はそれを次のように変換しようとしています:
<xml>
<footnote>Footnote 1</footnote>
<footnote>Footnote 2</footnote>
<footnote>Footnore 3</footnore>
</xml