2009-03-24 7 views
2

J'ai une variable XSLT que je crée et peuplant la valeur d'un attribut en haut de la feuille de style comme si ...Utilisez XSLT variable comme nom de champ

<xsl:variable name="MyAttributeValue" select="/Source/Fields/Field[@SpecialAttribute]/@MyAttributeValue" /> 

Plus tard dans la traitement, je veux utiliser $ MyAttributeValue comme nom de champ tout comme je le pouvais avec une chaîne codée en dur. Par exemple:

<xsl:value-of select="MyField"/> 

Cela retournera correctement la valeur de MyField dans le fichier XML pendant le traitement de XSLT. Je veux utiliser la variable que j'ai définie plus tôt pour le faire. Par exemple:

<xsl:value-of select="$MyAttributeValue"/> 

Ainsi, $ MyAttributeValue contient « MyField », mais je veux le lorsque vous utilisez la variable valeur de MyField dans le fichier XML à afficher plutôt que le texte littéral « MyField ».

Comment cela peut-il être fait?

Merci!

Répondre

1
<xsl:value-of select="*[local-name() = $MyAttributeValue]" /> 

retournera chaque nœud d'élément enfant avec un nom égal au contenu de $MyAttributeValue.

Si votre variable contient un espace de nom qualifié, comme "foo:MyField", utilisez la fonction name() à la place:

<xsl:value-of select="*[name() = $MyAttributeValue]" /> 
+0

@Tomalak. Cela a fait l'affaire. – OneSource

Questions connexes