From: Cyril Jandia (cjandia@logfi.fr)
Date: 06/06/2002 - 09:48
> De : Frédéric Laurent
> À : xml-tech@xmlfr.org
> Objet : [xml-tech] formulation xpath
>
> Bonjour,
>
> j'ai un petit problème pour exprimer une condition sur un document XML
> dans une feuille XSLT.
> [...]je voudrais traiter les cas d'erreurs dans le document. Un cas d'erreur
> est un attribut kind ne commençant pas par "j-"
> Mon expressions serait donc: "s'il y a au moins 1 noeud ayant kind pour
> attribut et que cet attribut ne commence pas par j-"
>
> quelque chose qui pourrait s'apparenter à
> <xsl:if test="//*[not(starts-with(@kind,'j-'))]">
> il y a des erreurs : traitement ...
> </xsl:if>
> [...]quelqu'un a une idée, une piste ?
Une solution en deux temps est :
1) d' "accumuler" dans une variable des caractères arbitraires (par exemple de
multiples "!") pour tous les attributs "kind" (trouvés) n'ayant pas une écriture
de valeur correcte;
2) de tester cette variable en tant que chaîne pour savoir si elle est vide;
alors :
chaîne vide <==> tous les attributs "kind" (trouvés) sont OK.
Ainsi, ceci :
<?xml version="1.0" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:variable name="kind-check"><xsl:for-each select="//*/@kind">
<xsl:choose><xsl:when test="not(starts-with(string(.),
'j-'))">!</xsl:when><xsl:otherwise /></xsl:choose>
</xsl:for-each></xsl:variable>
<xsl:template match="/">
<html>
<head>
<title>Valid kinds ?</title>
</head>
<body>
<h1>Valid kinds ?</h1>
<xsl:choose>
<xsl:when test="string($kind-check) != ''">
One kind (at least) NOT OK
</xsl:when>
<xsl:otherwise>
Kinds OK
</xsl:otherwise>
</xsl:choose>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Donne :
a) sur cette entrée :
<root>
<info kind="j-a">...</info>
<info kind="j-b">...</info>
<info kind="j-c">...</info>
</root>
ce résultat :
Valid kinds ?
Kinds OK
b) sur cette entrée :
<root>
<info kind="j-a">...</info>
<info kind="b">...</info>
<info kind="j-c">...</info>
</root>
ce résultat :
Valid kinds ?
One kind (at least) NOT OK
c) enfin, sur cette entrée :
<root>
...
</root>
ce résultat :
Valid kinds ?
Kinds OK
> --
> Frédéric Laurent
> http://www.opikanoba.org
Cordialement,
--CJ
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|