2010-05-19 10 views
0

J'essaie de convertir des éléments XML dont le contenu est une liste d'identifiants CSV, la forme exacte n'a pas d'importance. Je veux exclure chaque élément qui contient le caractère "/". Le meilleur que je suis venu avec estFiltrer une liste CSV dans XSLT

translate(./someElement, ",*/*", "") 

mais cela a au moins deux problèmes; Je suis assez sûr que xsl n'accepte pas les caractères génériques, et "," est un caractère illégal dans xpaths.

Existe-t-il un moyen simple de faire ce genre de chose?

+0

Pourriez-vous nous donner un exemple de l'entrée et de sortie que vous voulez? Je ne suis pas tout à fait certain d'avoir saisi la question ici. Si vous demandez ce que je pense que vous pourriez être, alors peut-être ceci: http://stackoverflow.com/questions/136500/does-xslt-have-a-split-function pourrait aider; l'idée de base serait de scinder récursivement la chaîne à la virgule, mais de ne sortir que les sous-chaînes qui n'ont pas de barre oblique (vérifiée avec contains(), say.) –

+0

Oh, aussi, si vous utilisez XSLT 2, jetez un oeil dans tokenize(): http://www.xml.com/lpt/a/1205 –

+0

Pour clarification: Étant donné un élément avec du contenu textuel qui est en fait une liste csv d'éléments, disons a, aa, a/b, 1,1/2, ... Je veux supprimer tous les éléments qui contiennent /, laissant dans ce cas: a, aa, 1 l'exemple lié ne semble être le long de la droite lignes, merci. Je le fais dans .Net si bien dans le contexte, en utilisant un objet d'extension qui référence une fonction VB qui existe déjà est plus facile. –

Répondre

0

En XPath 2, vous pouvez dire:

tokenize($s,",")[not(contains(.,"/"))] 
Questions connexes