Article View: fr.comp.text.xml
Article #10141Re: Parser une feuille de Styles.
From: Tom.
Date: Mon, 11 Dec 2000 21:36
Date: Mon, 11 Dec 2000 21:36
83 lines
3753 bytes
3753 bytes
In article <GE0Z5.1706$g53.5464091@nnrp2.proxad.net>, "Rapha�l THERY"
<raphael.thery@nordnet.fr> wrote:
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:param name="lang" select="'english'"/>
> <xsl:variable name="Dico" select="document('messages.xml')" />
>
> <!-- REGLE GENERALE : DUPLICATION DE L'ARBRE A L'IDENTIQUE file://-->
> <xsl:template match="node()|@*">
> <xsl:copy><xsl:apply-templates select="node()|@*" /></xsl:copy>
> </xsl:template>
Il faut quand m�me s�lectionner les noeuds de texte !
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*|text()"/>
</xsl:copy>
</xsl:template>
Si tu veux recopier les commentaires et PI, il faut s�lectionner aussi
comment() et processing-instruction().
> <!-- REGLE FINE : IMG ayant l'attribut ALT file://-->
> <xsl:template match="img[@alt]">
> <xsl:copy>
> <xsl:apply-templates select="@*" />
>
> <xsl:attribute name="alt">
> <xsl:call-template name="Traduction">
> <xsl:with-param name="terme"><xsl:value-of
> select="@alt"/></xsl:with-param>
> </xsl:call-template>
> </xsl:attribute>
>
> <xsl:apply-templates/>
> </xsl:copy>
> </xsl:template>
Contente toi de "matcher" l'attribut, ce n'est pas "une image qui a un
attribut alt" que tu traduis, c'est "l'attribut alt d'une image" :
<xsl:template match="@alt"><!-- ou match="img/@alt" -->
<xsl:attribute name="alt">
<xsl:call-template name="Traduction">
<xsl:with-param name="terme" select="string()"/>
</xsl:call-template>
</xsl:attribute>
</xsl:template>
> <!-- REGLE FINE : contenu de TD et de TH file://-->
> <xsl:template match="th/text()|td/text()">
Tu ne traduis pas tous les noeuds de texte ? Enfin, � ta convenance.
> <xsl:call-template name="Traduction">
> <xsl:with-param name="terme"><xsl:value-of
> select="."/></xsl:with-param>
Reprendre l'exemple ci-dessus : select="string()", mais il y a en fait
plus simple, sans xsl:with-param.
> <!-- TRADUCTION file://-->
> <xsl:template name="Traduction">
> <xsl:param name="terme" />
Met une valeur par d�faut :
<xsl:param name="terme" select="string()"/>
Avec �a, pas besoin des xsl:with-param pr�c�dents, la valeur par d�faut
est celle qu'il nous faut (pas forc�ment dans tous les cas alors
laissons ca en param�tre).
> <xsl:variable name="idMot"
> select="$Dico/messages/msg[text()=$terme]/@id"/>
> <xsl:variable name="motTraduit"
> select="$Dico/messages/msg[@id=$idMot
> and @lang=$lang]"/>
Au lieu d'utiliser $Dico/messages/msg � chaque fois, tu aurais pu
d�clarer Dico comme ca :
<xsl:variable name="Dico"
select="document('messages.xml')/messages/msg"/>
Et tu l'utilises : $Dico[text() = $terme] par exemple.
Tom.
Technical Details
Message-ID:
<dvg319.4v4.ln@ptittom.free.fr>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!proxad.net!feeder2.proxad.net!nnrp1.proxad.net.POSTED!debian!ptittomReferences:
<1ROX5.921$X73.3283129@nnrp1.proxad.net> <g5ar09.sa1.ln@ptittom.free.fr> <GE0Z5.1706$g53.5464091@nnrp2.proxad.net>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,2a6ed2f88cdee320 X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2000-12-11 13:36:32 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!proxad.net!feeder2.proxad.net!nnrp1.proxad.net.POSTED!debian!ptittom From: "Tom." <ptittom@free.fr> Subject: Re: Parser une feuille de Styles. Newsgroups: fr.comp.text.xml Organization: - References: <1ROX5.921$X73.3283129@nnrp1.proxad.net> <g5ar09.sa1.ln@ptittom.free.fr> <GE0Z5.1706$g53.5464091@nnrp2.proxad.net> User-Agent: Pan/0.9.1 (Unix) X-No-Productlinks: Yes Message-ID: <dvg319.4v4.ln@ptittom.free.fr> Lines: 83 Date: Mon, 11 Dec 2000 21:36:29 GMT NNTP-Posting-Host: 213.228.43.47 X-Complaints-To: abuse@proxad.net X-Trace: nnrp1.proxad.net 976570589 213.228.43.47 (Mon, 11 Dec 2000 22:36:29 MET) NNTP-Posting-Date: Mon, 11 Dec 2000 22:36:29 MET