Re: Une histoire de styles ...
Tiscar Sebastien <[email protected]>
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Message-ID | <008d01c62e62$49903ca0$a7021cac@ODIN11> |
je pense que l exemple du bleu1 n existait que pour montrer une faiblesse du
template
<xsl:template match="@class[contains(., "blue")]>
qui matchera un attribut class="blue" ou "blue1" ou encore "saperlipoblue"
et autre non connu à l avance
l utilisation du normalize space avec une concaténation de blanc de part et
d autre du renvoit de la chaine contenue lève tous les doutes.
<xsl:template match="p[contains(concat(' ', normalize-space(@class), ' '), '
blue ')]">
----- Original Message -----
From: "Sandrine Soudant" <[email protected]>
To: <[email protected]>
Sent: Friday, February 10, 2006 3:44 PM
Subject: [xml-tech] Re: Une histoire de styles ...
Avec cette solution, la règle de précédence des templates lévera le
doute et choisira le bon template.
ex:
<xsl:template match="p">
<xsl:apply-templates select="@class">
...
</xsl:template>
<xsl:template match="@class[contains(., "blue1")]>
...
</xsl:template>
<xsl:template match="@class[contains(., "blue")]>
...
</xsl:template>
Sandrine Soudant
David Rivron a écrit :
> Je propose cette solution :
>
> <xsl:template match="p">
> <xsl:apply-templates select="@class">
> ...
> </xsl:template>
>
> <xsl:template match="@class[contains(., "blue")]>
> ...
> </xsl:template>
>
> Un problème survient lorsqu'un nom de classe en comprend un autre (ex :
> blue, blue1).
> Pour y remédier mais c'est assez lourd, on peut concaténer un espace
> blanc à la fin de la valeur de l'attribut : @class[contains(concat(., "
> "), "blue "].
>
> David RIVRON
>
> Jean-Luc Mathieu a écrit :
>
>>Oui, c'est ce à quoi je suis arrivé (style unique).
>>
>>Cependant, je souhaiterais avoir des templates indépendants, comme par
>>exemple :
>>
>><xsl:template ...><!-- template pour le rouge --></xsl:template>
>><xsl:template ...><!-- template pour le gras--></xsl:template>
>>
>>... afin de gérer toutes les combinaisons sans avoir à réécrire un
>>template à chaque fois :
>>
>><p class="rouge gras">...</p>
>><p class="rouge">...</p>
>><p class="gras">...</p>
>><p class="gras rouge">...</p>
>>...
>>
>>
>>Tiscar Sebastien a écrit :
>>
>>
>>>bonjour,
>>>il suffit dans le template de spécifier le prédicat qui correspond
>>>dans votre exemple
>>><p class="rouge gras"></p>
>>>
>>>matchera avec un template déclaré:
>>><xsl:template match=p[@class='rouge gras']></xsl:template>
>>>voila
>>>
>>>
>>>----- Original Message -----
>>>From: "Jean-Luc Mathieu" <[email protected]>
>>>To: <[email protected]>
>>>Sent: Friday, February 10, 2006 3:15 PM
>>>Subject: [xml-tech] Une histoire de styles ...
>>>
>>>
>>>Bonjour !
>>>
>>>Je cherche à reproduire un tant soit peu le système des classes de
>>>styles xhtml au sein d'une feuille de style XSL. En fait, je
>>>souhaiterais que la présence d'un attribut style sur n'importe quel
>>>noeud d'entrée provoque l'appel à un ou plusieurs templates, en fonction
>>>des noms de style que cet attribut contient.
>>>
>>>Par exemple, si je décode une balise <p class="rouge gras">...</p>, je
>>>souhaiterais déclencher les templates associés au style rouge et au
>>>style gras.
>>>
>>>Je ne sais pas si c'est faisable en XSL 1.0, c'est pourquoi je vous pose
>>>la question. J'ai réussi à trouver un moyen dans le cas où on spécifie
>>>qu'un seul style à la fois, mais pas dans le cas où plusieurs styles
>>>sont possibles ...
>>>
>>>Merci d'avance pour vos réponses.
>>>
>>>--
>>>Devenez redacteur <XML>fr et contribuez au developpement du
>>>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>>>
>>>Liste de diffusion "[email protected]" (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 [email protected]
>>>(mailto:[email protected]?Subject=unsubscribe)
>>>
>>>
>>>
>>>--
>>>Devenez redacteur <XML>fr et contribuez au developpement du
>>>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>>>
>>>Liste de diffusion "[email protected]" (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 [email protected]
>>>(mailto:[email protected]?Subject=unsubscribe)
>>>
>>>
>>>
>>>
>>>
>>
>>
>
>
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "[email protected]" (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 [email protected]
> (mailto:[email protected]?Subject=unsubscribe)
>
--
Sandrine Soudant <[email protected]>
Cogenit Tél : +33 (0) 1 40 20 08 43
53 rue Sainte Anne Fax : +33 (0) 1 40 20 08 45
75002 Paris <URL:http://www.cogenit.fr>
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "[email protected]" (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 [email protected]
(mailto:[email protected]?Subject=unsubscribe)