XSLT - la Meilleure façon de diviser et de rendre séparées par des virgules, le texte au format HTML
J'ai des données dans un élément XML qui ressemble à ceci:
<item value="category1,category2">Item Name</item>
Le peu qui m'intéresse c'est la valeur attribut. Je suis en mesure d'obtenir les données contenues dans cet attribut dans un modèle qui ressemble à ceci:
<xsl:template name="RenderValues">
<xsl:param name="ValueList" />
<xsl:value-of select="$ValueList" /> <!-- outputs category1,category2-->
</xsl:template>
Ce que je veux faire est de traiter les valeurs séparées par des virgules dans une manière efficace. Quel est le meilleur moyen de rendre quelque chose comme de l'intérieur de la RenderValues modèle?
<a href="x.asp?item=category1">category1</a>
<a href="x.asp?item=category2">category2</a>
OriginalL'auteur Brian Lyttle | 2009-02-24
Vous devez vous connecter pour publier un commentaire.
Dans XSLT 2.0/XPath 2.0 utilisation la norme XPath 2.0 fonction de marquer().
Dans XSLT 1.0 on en a besoin, soit pour écrire une appelée récursivement modèle ou, plus facilement, utilisez la
str-split-à-dire
fonction/modèle de le FXSL bibliothèque.Voici un exemple de ce dernier:
Lors de la transformation ci-dessus est appliquée sur le document XML fourni par le:
le résultat voulu est produit:
La
pDelimiters
paramètre de ce modèle permettent aux multiples caractères de délimitation doit être spécifié. Dans l'exemple ci-dessus, aucun caractère de séparation peut être une virgule, un espace ou un caractère de nouvelle ligne.word
modèle est déjà utilisé dans la première, et à l'aide de remettre le même texte fixe dans le second. MerciPresque tout est possible. S'il vous plaît, demandez à une question et de letm-le moi savoir.
OriginalL'auteur Dimitre Novatchev
Vous êtes à la recherche pour le marquer la fonction:
http://www.xml.com/pub/a/2003/05/07/tr.html
Je pense que les modifications ajouter beaucoup. Je vous remercie.
OriginalL'auteur Craig O
C'est une question légitime, et les réponses fournies sont bonnes. Mais si vous êtes à l'aide de XSLT 1.0, et vous ne pouvez pas utiliser les fonctions d'extension, il est tout simplement pas possible. Modèles XSLT produire de résultat fragments d'arbres, et XSLT ne peut fonctionner que sur jeux de nœuds. La segmentation en XSLT requiert la récursivité, ce qui signifie appeler un modèle, ce qui signifie que la production d'une structure de données que vous ne pouvez pas le processus.
Si cette limitation s'applique à vous et vraiment, même si elle n'est pas - vous devez, si possible, de résoudre ce problème par trouver la personne qui est de produire un document XML dont le contenu doit être analysé nouveau après le DOM a déjà analysé il et lui permettre de s'arrêter. Mettre plusieurs valeurs dans un attribut est tout simplement faux.
Il est possible, par l'évaluation de chaque personnage, par exemple, stackoverflow.com/questions/1418884/complex-xslt-split
OriginalL'auteur Robert Rossney