🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #10136

Re: Parser une feuille de Styles.

#10136
From: Rapha�l THERY
Date: Mon, 11 Dec 2000 08:56
220 lines
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"/>&amp;navigation=precedent&amp;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"/>&amp;navigation=suivant&amp;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-mail
References: <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