web-dev-qa-db-fra.com

XSLT: ne contient pas de chèque

Je dois créer un fichier XSL vérifiant une condition "ne contient pas". Par exemple, mon XML est comme ceci:

<Categories>
  <category>
    <blog>ABC</blog>
    <link>http://www.msdn.com</link>
  </category>
</Categories>

Je veux montrer tous les <blog><link> ne contient pas "msdn". Je ne veux pas utiliser égaux parce que je veux juste vérifier une partie du lien.

13
TSSS22

Je ne sais pas exactement quel type de sortie HTML vous souhaitez, mais j'espère que cela vous aidera à démarrer.

<xsl:template match="category">
    <xsl:if test="not(contains(link, 'msdn'))">
        <a href="{link}">
            <xsl:value-of select="blog" />
        </a>
    </xsl:if>
</xsl:template>

Vous pouvez également inclure le test dans le prédicat de correspondance de modèle (ou le modèle apply-templates):

<xsl:template match="category[not(contains(link, 'msdn'))]">
33
Peter Jacoby

Utilisez la fonction not avec la fonction contient.

Exemple: not (contient ('XML', 'XM'))

Résultat: faux

http://www.w3schools.com/Xpath/xpath_functions.asp

1
Sam Trost

Xpath pour xsl: apply-templates ou xsl: value-of devrait contenir les éléments suivants

/Categories/category/blog[not( contains(following-sibling::link/text(), 'msdn'))]
0
Dewfy