2010-09-16 4 views
0

J'ai un fichier XML qui ressemble à ceci:Comment transformer un élément enfant en majuscule si un élément enfant portant le même nom existe?

..
<PersonalInfo>
<LastName>Smith</LastName>
...
</PersonalInfo>
<DependentInfo>
<LastName>Johnson</LastName>
...
</DependentInfo>
...

et je dois convertir le nom de la personne à charge en majuscules.

J'ai écrit ce XSLT

<xsl:value-of select="translate(//LastName, $smallcase, $uppercase)" /> 

Il convertit nom de la personne à charge au nom de l'info personnelle en majuscules. Donc, il le convertit en SMITH et je veux qu'il soit converti en JOHNSON. Quelqu'un pourrait-il me dire comment je peux faire cela? Merci beaucoup.

+1

'// LastName' désigne tout élément' LastName' dans le document. Alors 'fn: traslate' prend le premier noeud de cet ensemble de nœuds. Donc, il sera toujours évalué à la même valeur de chaîne ... Vous devriez nous dire quel est le contexte de ce 'xsl: value-of' –

Répondre

1

Il est difficile de dire avec certitude sur la base de l'exemple XML et le petit fragment XSL, mais il semble que le contexte dans lequel vous utilisez le xsl:value-of est DependentInfo. En utilisant //LastName dans la fonction translate(), vous dites au processeur de sélectionner LastName dans le fichier XML. (Dans ce cas, il semble sélectionner la première occurrence de LastName dans PersonalInfo.)

Essayez de supprimer les // de votre xsl:value-of:

<xsl:value-of select="translate(LastName, $smallcase, $uppercase)" /> 

Si cela ne fonctionne pas, essayez de poster plus de votre XSL pour nous de regarder.

0
<xsl:value-of select="translate(DependentInfo/LastName, $smallcase, $uppercase)" /> 
0

Utilisation:

translate(/*/DependentInfo/LastName, $smallcase, $uppercase) 
Questions connexes