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)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.