我有一个 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 表达式的简单形式?
还是另一种方法更可取?