J'ai du XML que je veux traiter avec XSLT. Une bonne quantité de données passe dans des paires de valeur clé (voir ci-dessous). Je me débats avec comment extraire la base de valeur sur la clé en une variable. J'aimerais pouvoir faire quelque chose comme ceci: mais cela ne semble pas fonctionner. Voici un échantillon XML. P> <?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<entry>
<key>
foo
</key>
<value>
bar
</value>
</entry>
</root>
3 Réponses :
Votre XPath fonctionne bien pour le document suivant (équivalent): Vous pouvez utiliser la fonction XPath contient code> pour obtenir le même résultat sans restructurer votre XML: p>
J'aurais dû savoir que cela aurait été quelque chose comme ça. Malheureusement, expliquer le changement de XML aux personnes créant le XML serait trop difficile. Je vais utiliser le XPath. Merci beaucoup.
Solution très simple, mais si
La transformation suivante montre deux façons d'atteindre ce fort> - avec et sans l'utilisation de
() code > Fonction:
normalisation-espace () code> fonction forte> pour dépouiller les caractères de l'espacement de premier plan ou de fuite du Valeur de
@Tahoewolverine: en pure xpath One a i> d'utiliser cette expression. Chaque fois que XPath est hébergé par XSLT, je préfère toujours utiliser des clés - N'est-ce pas notable comment la clé-expression est plus simple que la "pure" xpath? Un autre argument très fort en faveur des clés est que, dans la plupart des cas, l'utilisation de clés est de nombreux facteurs de grandeur plus rapidement.
Oui, je vois ça maintenant. J'étais un peu confus parce que je n'ai pas vu où vous définissez des variables. Une fois que j'ai commencé à créer les variables de cette façon, les choses sont devenues un peu plus propre. Merci.
<xsl:variable name="foo" select="/root/entry[key='foo']/value" /> This is an exact match so make sure there are no spare spaces or new line characters around foo in your XML. Otherwise use replace function and a regular expression to trim them.
Bonne question (+1). Saviez-vous que la réponse que vous avez sélectionnée n'est pas généralement correcte? Voir ma réponse pour une explication et pour deux vraies solutions. :)