Article View: fr.comp.text.xml
Article #10136Re: Parser une feuille de Styles.
From: Rapha�l THERY
Date: Mon, 11 Dec 2000 08:56
Date: Mon, 11 Dec 2000 08:56
220 lines
8390 bytes
8390 bytes
Pour le processeur, j'utilise xalan-j_2_0_D01.
Quelques pr�cisions :
- Le premier des probl�mes c'est que je ne repr�sente pas toujours
graphiquement l'arbre, d'o� des regl�s sur des noeuds textes.
(si quelqu'un avait un graphique ...)
- Au fur et � mesure des mails et exemples j'essayes de peaufiner le "code"
mais ce n'est pas toujours evidant.
"> A part ca, j'aurai pas du tout eu la m�me approche de la transformation."
- je serais tr�s interess� s'il existait une quelconque r�f�rence sur la
philosophie XSLT, comment aborder les probl�mes ....
Pour toutes ces pr�cisions merci
Rapha�l
voici le flux XML (une partie, ce qui nous interesse)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="../Global.xsl"/>
<xsl:output method="html" encoding="ISO-8859-1"/>
<xsl:template match="fr.generix.metier.viewDocument.ListeEvenements">
<table>
<tr>
<th colspan="3">Num�ro</th>
<th>Etat</th>
<th>Tiers</th>
<th>Repr�sentant</th>
<th>Date</th>
<th>Livraison</th>
<th>Confirmation</th>
<th>R�f�rence</th>
<th colspan="2">T.T.C.</th>
<th colspan="3">Origine</th>
<th colspan="3">Source</th>
<th>
<!-- Creation des Boutons de navigation de la page -->
<a>
<xsl:attribute name="href">
<xsl:value-of
select="$URL"/>&navigation=precedent&navigation-vue=<xsl:value-of
select="$DOCUMENT_ListeEvenements"/>
</xsl:attribute>
<img alt="Pr�c�dent" border="0"
src="/generix/images/precedent.gif"></img>
</a>
<a>
<xsl:attribute name="href">
<xsl:value-of
select="$URL"/>&navigation=suivant&navigation-vue=<xsl:value-of
select="$DOCUMENT_ListeEvenements"/>
</xsl:attribute>
<img alt="Suivant" border="0"
src="/generix/images/suivant.gif"></img>
</a>
</th>
</tr>
<xsl:apply-templates select="JEveView"/>
<tr><th colspan="19">
<xsl:apply-templates
select="../fr.generix.metier.viewDocument.ListeEvenements/Pages"/>
</th></tr>
</table>
</xsl:template>
</xsl:stylesheet>
Voici la feuille XSL (en int�gralit� en prenant compte tes remarques)
<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>
<!-- 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>
<!-- REGLE FINE : contenu de TD et de TH file://-->
<xsl:template match="th/text()|td/text()">
<xsl:call-template name="Traduction">
<xsl:with-param name="terme"><xsl:value-of select="."/></xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- TRADUCTION file://-->
<xsl:template name="Traduction">
<xsl:param name="terme" />
<!--<xsl:message>Traduire : <xsl:value-of select="$terme"/></xsl:message>
file://-->
<xsl:variable name="idMot"
select="$Dico/messages/msg[text()=$terme]/@id"/>
<xsl:variable name="motTraduit" select="$Dico/messages/msg[@id=$idMot
and @lang=$lang]"/>
<xsl:choose>
<xsl:when test="string-length($motTraduit) != 0">
<xsl:value-of select="$motTraduit"/>
</xsl:when>
<xsl:otherwise>
<xsl:message><xsl:value-of select="$terme"/></xsl:message>
<xsl:value-of select="$terme"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Tom. <ptittom@free.fr> a �crit dans le message :
g5ar09.sa1.ln@ptittom.free.fr...
> In article <1ROX5.921$X73.3283129@nnrp1.proxad.net>, "Rapha�l THERY"
> <raphael.thery@nordnet.fr> wrote:
> > j'ai donc la r�gle G�n�rale suivante qui me permet de dupliquer mon
> > arbre xsl � l'identique !
> > <xsl:template match="@*|*|text()">
> > <xsl:copy>
> > <xsl:apply-templates select="@*|*|text()" />
> > </xsl:copy>
> > </xsl:template>
>
> Enl�ves les text() du pattern, le built-in template pour text() se
> contente de recopier le texte dans l'arbre de sortie, et c'est
> exactement ce que tu fais l�.
>
> > Suite � quoi j'ajoute des r�gles plus sp�cifiques pour les traductions
> > de certaines balises HTML Exemple : traduire l'attribut ALT d'une
> > balise IMG
> > <xsl:template match="img[@alt]">
> > <xsl:copy>
> > <xsl:call-template name="Attributs" />
> > <!-- duplique tous les attributs existants ! -->
>
> Avec le template d�clar� ci-dessus, tu peux faire <xsl:apply-templates
> select="@*"/> pour le m�me r�sultat.
>
> > <xsl:attribute name="alt"> <!-- recr�e l'attribut ALT pour
> > lequel on traduit la valeur.-->
> > <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>
> >
> > L� o� je n'y arrive pas c'est pour changer la valeur d'une cellule
> > d'un tableau <td>laValeurATraduire</td>
> > (en fait je ne sais pas identifier laValeurATraduire)
> >
> > <xsl:template match="th/text()">
> > <xsl:copy>
>
> Ceci copie le texte, le contenu de <xsl:copy/> est pris en compte apr�s.
>
> > <xsl:call-template name="Attributs" />
>
> Un noeud de texte n'a pas d'attributs.
>
> > <xsl:call-template name="Traduction">
> > <xsl:with-param name="terme"><xsl:value-of
> > select="."/></xsl:with-param>
> > </xsl:call-template>
> >
> > <xsl:apply-templates/>
>
> Un noeud de texte n'a pas de descendant, xsl:apply-templates ne sert �
> rien ici.
>
> > </xsl:copy>
> > </xsl:template>
>
> In article <HJ8Y5.1226$b07.4097116@nnrp1.proxad.net>, "Rapha�l THERY"
> <raphael.thery@nordnet.fr> wrote:
>
> > par contre je suis toujours bloqu� avec ce genre de flux
> > <th>
> > <!-- Creation des Boutons de navigation de la page -->
> > .....
> > </th>
> > il le transforme en
> > <th> Creation des Boutons de navigation de la page ....
>
> C'est quoi ton processeur XSLT ?
> Ca ressemble pas mal � un bug.
>
> Ton th a a priori (tu ne dis pas le contraire) �t� "proc�d�" par le
> template reproduit en t�te de ce message, et celui-ci ne s�lectionne
> pas les commentaires. Ceux-ci devraient donc "disparaitrent" de la
> sortie.
> Tu peux en montrer plus ? Eventuellement mettre un exemple accessible
> en ligne ?
>
> A part ca, j'aurai pas du tout eu la m�me approche de la transformation.
>
> Tom.
Technical Details
Message-ID:
<GE0Z5.1706$g53.5464091@nnrp2.proxad.net>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!teaser.fr!proxad.net!feeder2.proxad.net!nnrp2.proxad.net.POSTED!not-for-mailReferences:
<1ROX5.921$X73.3283129@nnrp1.proxad.net> <g5ar09.sa1.ln@ptittom.free.fr>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 00:56:13 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!teaser.fr!proxad.net!feeder2.proxad.net!nnrp2.proxad.net.POSTED!not-for-mail From: "Rapha�l THERY" <raphael.thery@nordnet.fr> Newsgroups: fr.comp.text.xml References: <1ROX5.921$X73.3283129@nnrp1.proxad.net> <g5ar09.sa1.ln@ptittom.free.fr> Subject: Re: Parser une feuille de Styles. Lines: 222 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2314.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300 Message-ID: <GE0Z5.1706$g53.5464091@nnrp2.proxad.net> Date: Mon, 11 Dec 2000 08:56:06 GMT NNTP-Posting-Host: 195.115.154.77 X-Complaints-To: abuse@proxad.net X-Trace: nnrp2.proxad.net 976524966 195.115.154.77 (Mon, 11 Dec 2000 09:56:06 CET) NNTP-Posting-Date: Mon, 11 Dec 2000 09:56:06 CET Organization: Guest of ProXad - France