Bonjour,
Je viens de publier une FAQ pour tenter d'expliquer tout cela...
http://xmlfr.org/documentations/faq/050715-0001
Cordialement,
Eric van der Vlist
On jeu, 2005-07-14 at 15:59 +0200, Eric van der Vlist wrote:
> On jeu, 2005-07-14 at 10:16 +0200, Patrice Harmegnies wrote:
> > Tu peux mettre ton expression type string dans une variable.
> > Du genre
> > <xsl:variable name='test'> ton expression </xsl:variable>
> >
> > Et l'appeler dans ton expression ...
> > Simplement avec $test,
>
> Effectivement, et c'est un bon moyen de contourner le problème.
>
> Il est néanmoins possible d'écrire cette expression XPath sans avoir
> recours à une variable même si cela demande un peu plus de
> réflexion :-) ...
>
> Lorsque l'on écrit :
>
> <xsl:when test="./@commune='Les roches l'eveque' or ./@commune='les roches l'eveque' or
> ./@commune='LES ROCHES L'EVEQUE'">
>
> le parseur XML qui lit la transformation XSLT comme n'importe quel
> document XML communique au processeur XSLT un attribut "test" ayant la
> valeur suivante :
>
> ./@commune='Les roches l'eveque' or ./@commune='les roches l'eveque' or
> ./@commune='LES ROCHES L'EVEQUE'
>
> Dans cette expression XPath, le caractère apostrophe est utilisé pour
> délimiter les constantes de type chaîne de caractères et il ne peut donc
> pas être utilisé à l'intérieur de ces constantes.
>
> Pour résoudre ce problème, on va utiliser la possibilité d'écrire les
> caractères apostrophe et/ou guillemet sous forme d'un appel à l'une des
> cinq entités pré-définies en XML : "'" et/ou """.
>
> On peut être tenté d'écrire tout simplement :
>
> <xsl:when test="./@commune='Les roches l'eveque' or ./@commune='les roches
> l'eveque' or ./@commune='LES ROCHES L'EVEQUE'">
>
> et on s'apercevra alors que le processeur XSLT nous renvoie exactement
> la même erreur.
>
> C'est normal puisque dans ce cas, le parseur XML remplacera ' par
> le caractère ' et renverra exactement la même valeur d'attribut au
> processeur XSLT.
>
> Ici, en fait ce que nous voulons, c'est que la valeur renvoyée au
> processeur XSLT soit :
>
> ./@commune="Les roches l'eveque" or ./@commune="les roches l'eveque"
> or ./@commune="LES ROCHES L'EVEQUE"
>
> Pour cela, nous avons deux options.
>
> Si nous souhaitons conserver des guillemets pour encadrer notre valeur
> d'attribut, nous écrirons :
>
> <xsl:when test="./@commune="Les roches l'eque" or
> ./@commune="les roches l'eveque" or
> ./@commune="LES ROCHES L'EVEQUE"">
>
> Mais nous pouvons également simplifier cela et utilisant des apostrophes
> pour encadrer nos valeurs d'attributs :
>
> <xsl:when test='./@commune="Les roches l'eveque" or
> ./@commune="les roches l'eveque" or
> ./@commune="LES ROCHES L'EVEQUE"'>
>
> Ces deux variations renvoient la même valeur d'attribut et sont donc
> totalement équivalentes en XML.
>
> Cordialement,
>
> Eric van der Vlist
--
If you have a XML document, you have its schema.
http://examplotron.org
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
--
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)
Received on Fri Jul 15 16:13:30 2005