2017-10-10 24 views
0

Je dois parcourir un fichier XML complet et identifier si certains caractères existent et lesquels. J'ai ce qui suit, correspondant au texte()Lors de l'utilisation de xsl: analyze-string, je veux identifier la valeur qui correspond

<xsl:analyze-string select="." regex="[$~#^]"> 
    <xsl:matching-substring> 
    <xsl:value-of select="'yes'"/> 
    </xsl:matching-substring> 
    <xsl:non-matching-substring> 
    <xsl:value-of select="'no'"/> 
    </xsl:non-matching-substring> 
</xsl:analyze-string> 

Mais ce que je veux, c'est de sortir la valeur qui ne correspond pas.

ce xml devrait afficher $ et ~.

<sample> 
    <test>this is #^test1</test> 
</sample> 
+4

Votre sujet dit: « Je veux indentifier la valeur qui correspond à » votre texte « ce que je veux est sortie la valeur qui ne marche pas match. » Et cet exemple suggère que vous voulez quelque chose comme '('$', '~', '#', '^') [not (contient ('ceci est #^test1',.))]' (Respectivement dans le template ' ('$', '~', '#', '^') [not (contains (current(),.))]]. –

+0

@MartinHonnen, cela ressemble à une réponse à moi. Si vous le mettez dans un répondre, l'OP peut l'accepter –

Répondre

0

Pour le résultat de l'échantillon, vous pouvez utiliser par ex.

('$', '~', '#', '^')[not(contains('this is #^test1', .))] 

(respectivement dans le modèle)

('$', '~', '#', '^')[not(contains(current(), .))] 
+0

Cela fonctionne bien pour tous les nœuds, Si je veux étendre la vérification pour inclure l'attribut aussi, que puis-je faire? Pouvez-vous me guider? – ChipsnCoke

+0

A '' correspond à tous les noeuds d'attribut et tous les noeuds de texte, vous devez seulement vous assurer de traiter les noeuds d'attribut avec par exemple ' Si vous ne pouvez pas le comprendre, posez une nouvelle question avec un échantillon du XML et le résultat que vous voulez –

+0

Merci, j'ai posé une nouvelle question. – ChipsnCoke