XSLT 1.0 variante distincte des valeurs

J'ai une transformation XSLT dans lequel j'ai créer (à partir de la donnée d'entrée) intermédiaire des variables comme la suivante (codée en dur dans l'exemple, mais de nature dynamique):

<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>

Je souhaite faire une boucle sur les différentes occurrences de CodePart valeurs. En XSLT 2.0, c'est facile:

<xsl:for-each select="distinct-values($variableX/ValidCode/@CodePart)">...</xsl:for-each>

Mais comment mieux le faire en XSLT 1.0?
Notez que je ne peux pas utiliser une clé, comme il est déterminé de façon dynamique variable et ne fait pas partie du fichier d'entrée.

Mon fichier d'entrée contient une liste de toutes les parties de code comme suit:

<root>
    <CodePart><value>CP1</value></CodePart>
    <CodePart><value>CP2</value></CodePart>
    <CodePart><value>CP3</value></CodePart>
</root>

Alors j'ai pensé à boucler sur //CodePart/value au lieu de cela, s'assurer de l'unicité pour les débutants. Mais ensuite, j'ai besoin d'une expression Xpath qui comprend l'état

"valeur se produit dans le node-set de tous les $variableX/ValidCode/@CodePart valeurs"

et d'utiliser quelque chose comme

<xsl:for-each select="//CodePart[..condition..]/value">...</xsl:for-each>

Est-il une forme simple de l'expression Xpath je suis à la recherche d'?
Ou est une autre approche préférable?

L'affirmation que " lesI can't use a key, as it's a dynamically determined variable and not part of the input file" -- n'est pas vrai. En fait, le plus simple et efficace solution à ce problème utilise des clés.

OriginalL'auteur Maestro13 | 2012-06-19