次のような中間変数を (入力データから) 作成する XSLT があります (ハードコーディングされた例ですが、本質的に動的です)。
<xsl:variable name="variableX">
<ValidCode CodePart="CP1" Code="C1"/>
<ValidCode CodePart="CP2" Code="C2"/>
<ValidCode CodePart="CP1" Code="C3"/>
<ValidCode CodePart="CP2" Code="C4"/>
<ValidCode CodePart="CP2" Code="C5"/>
</xsl:variable>
CodePart 値の個別の発生をループしたいと考えています。XSLT 2.0 では簡単です。
<xsl:for-each select="distinct-values($variableX/ValidCode/@CodePart)">...</xsl:for-each>
しかし、XSLT 1.0 でこれを行うにはどうすればよいでしょうか?
キーは動的に決定される変数であり、入力ファイルの一部ではないため、使用できないことに注意してください。
私の入力ファイルには、次のように可能なすべてのコード部分のリストが含まれています。
<root>
<CodePart><value>CP1</value></CodePart>
<CodePart><value>CP2</value></CodePart>
<CodePart><value>CP3</value></CodePart>
</root>
そのため、代わりにループオーバーし//CodePart/value
て、初心者向けの一意性を確保することを考えました。しかし、条件を含むXpath式が必要です
「値は、すべての $variableX/ValidCode/@CodePart 値のノード セットで発生します」
そして次のようなものを使用します
<xsl:for-each select="//CodePart[..condition..]/value">...</xsl:for-each>
私が探している Xpath 式の単純な形式はありますか?
または、別のアプローチが望ましいですか?