<xsl:template match="Compositeurs"> <H3 align="center"> Oeuvres de <br/> <xsl:apply-templates/> </H3> </xsl:template> <xsl:template match="Compositeur"> <xsl:value-of select="."/> <xsl:if test="not(position() = last())">, </xsl:if> </xsl:template> |
xsl:if |
<xsl:if test=" ... expression XPath ... "> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:if> |
<xsl:template match="... motif (pattern) ..."> <xsl:if test=" ... expression XPath ... "> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:if> </xsl:template> |
Concert.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Concert> <Entête> "Les Concerts d'Anacréon" </Entête> <Date>Jeudi 17 Janvier 2002, 20H30</Date> <Lieu>Chapelle des Ursules</Lieu> <Ensemble> "A deux violes esgales" </Ensemble> <Interprète> <Nom> Jonathan Dunford </Nom> <Instrument>Basse de viole</Instrument> </Interprète> <Interprète> <Nom> Sylvia Abramowicz </Nom> <Instrument>Basse de viole</Instrument> </Interprète> <Interprète> <Nom> Benjamin Perrot </Nom> <Instrument>Théorbe et Guitare baroque</Instrument> </Interprète> <TitreConcert> Folies d'Espagne et diminutions d'Italie </TitreConcert> <Compositeurs> <Compositeur>M. Marais</Compositeur> <Compositeur>D. Castello</Compositeur> <Compositeur>F. Rognoni</Compositeur> </Compositeurs> </Concert> |
<xsl:template match="Compositeur"> ... </xsl:template> |
Concert.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='html' encoding='ISO-8859-1' /> <xsl:strip-space elements='Compositeurs'/> <xsl:template match="/"> <html> <head> <title><xsl:value-of select="/Concert/Entête"/></title> </head> <body bgcolor="white" text="black"> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="Entête"> <p> <xsl:value-of select="."/> présentent </p> </xsl:template> <xsl:template match="Date"> <H1 align="center"> Concert du <xsl:value-of select="."/> </H1> </xsl:template> <xsl:template match="Lieu"> <H4 align="center"> <xsl:value-of select="."/> </H4> </xsl:template> <xsl:template match="Ensemble"> <H2 align="center"> Ensemble <xsl:value-of select="."/></H2> </xsl:template> <xsl:template match="Compositeurs"> <H3 align="center"> Oeuvres de <br/> <xsl:apply-templates/> </H3> </xsl:template> <xsl:template match="Compositeur"> <xsl:value-of select="."/> <xsl:if test="not(position() = last())">, </xsl:if> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Concert.html |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title> Les Concerts d’Anacréon </title> </head> <body bgcolor="white" text="black"> <p> Les Concerts d’Anacréon présentent </p> <H1 align="center"> Concert du Jeudi 17 Janvier 2002, 20H30</H1> <H4 align="center">Chapelle des Ursules</H4> <H2 align="center"> Ensemble «A deux violes esgales» </H2> <H3 align="center"> Oeuvres de <br>M. Marais, D. Castello, F. Rognoni </H3> </body> </html> |
<xsl:choose> <xsl:when test="count(./Interprète) = 1 "> <xsl:value-of select="Interprète"/> </xsl:when> <xsl:when test="count(./Interprète) = 2 "> <xsl:value-of select="Interprète[1]"/> et <xsl:value-of select="Interprète[2]"/> </xsl:when> <xsl:otherwise> <xsl:for-each select="Interprète"> <xsl:value-of select="."/><xsl:if test="not(position() = last())">, </xsl:if> </xsl:for-each> </xsl:otherwise> </xsl:choose> |
xsl:choose |
<xsl:choose> <!-- autant de xsl:when que l'on veut, mais au moins 1 en tout --> <xsl:when test=" ... expression XPath ... "> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:when> <xsl:when test=" ... expression XPath ... "> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:when> ... <!-- l'élément xsl:otherwise est facultatif --> <xsl:otherwise> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:otherwise> </xsl:choose> |
<xsl:template match="... motif (pattern) ..."> <xsl:choose> <xsl:when test=" ... expression XPath ... "> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:when> <xsl:otherwise> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:otherwise> </xsl:choose> </xsl:template> |
ProgrammeConcert.xml |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProgrammeConcert> <PageTitre> <Entête> "Les Concerts d'Anacréon" <Date>Samedi 9 Octobre 1999, 20H30</Date> <Lieu>Chapelle des Ursules</Lieu> </Entête> <Ensemble> <Nom> La Cetra d'Orfeo </Nom> <Direction> Michel Keustermans </Direction> </Ensemble> <Interprètes> <Role> ténor <Interprète> Yvan Goossens </Interprète> </Role> <Role> basse <Interprète> Conor Biggs </Interprète> </Role> <Role> flûte à bec <Interprète> Michel Keustermans </Interprète> <Interprète> Laura Pok </Interprète> </Role> <Role> viole d'amour <Interprète> Vinciane Baudhuin </Interprète> </Role> <Role> oboe da caccia <Interprète> Blai Justo </Interprète> </Role> <Role> viole de gambe <Interprète> Rika Murata </Interprète> <Interprète> Martin Bauer </Interprète> <Interprète> Sophie Watillon </Interprète> </Role> <Role> violone <Interprète> Benoit vanden Bemden </Interprète> </Role> <Role> orgue positif et clavecin <Interprète> Jacques Willemijns </Interprète> </Role> </Interprètes> <TitreConcert> Cantates allemandes </TitreConcert> <Compositeurs> <Compositeur> Bach </Compositeur> <Compositeur> Telemann </Compositeur> </Compositeurs> </PageTitre> </ProgrammeConcert> |
ProgrammeConcert.xsl |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:template match="Role"> <xsl:value-of select="./child::text()"/> : <xsl:choose> <xsl:when test="count(./Interprète) = 1 "> <xsl:value-of select="Interprète"/> </xsl:when> <xsl:when test="count(./Interprète) = 2 "> <xsl:value-of select="Interprète[1]"/> et <xsl:value-of select="Interprète[2]"/> </xsl:when> <xsl:otherwise> <xsl:for-each select="Interprète"> <xsl:value-of select="."/><xsl:if test="not(position() = last())">, </xsl:if> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
flûte à bec : Michel Keustermans et Laura Pok viole d'amour : Vinciane Baudhuin oboe da caccia : Blai Justo viole de gambe : Rika Murata , Martin Bauer , Sophie Watillon violone : Benoit vanden Bemden orgue positif et clavecin : Jacques Willemijns |
<xsl:variable name="nombreInterprètes" select="count(./Interprète)" /> <xsl:choose> <xsl:when test="$nombreInterprètes = 1 "> <xsl:value-of select="Interprète"/> </xsl:when> <xsl:when test="$nombreInterprètes = 2 "> <xsl:value-of select="Interprète[1]"/> et <xsl:value-of select="Interprète[2]"/> </xsl:when> <xsl:otherwise> <xsl:for-each select="Interprète"> <xsl:value-of select="."/><xsl:if test="not(position() = last())">, </xsl:if> </xsl:for-each> </xsl:otherwise> </xsl:choose> |
<xsl:variable name="maison"> <RDC> <cuisine surface='12m2'> Evier inox. Mobilier encastré. </cuisine> <WC> Lavabo. Cumulus 200L. </WC> <séjour surface='40m2'> Cheminée en pierre. Poutres au plafond. Carrelage terre cuite. Grande baie vitrée. </séjour> <bureau surface='15m2'> Bibliothèque encastrée. </bureau> <jardin surface='150m2'> Palmier en zinc figurant le désert. </jardin> <garage/> </RDC> </xsl:variable> |
<xsl:variable name="mouvement"> <insert> <Ensemble> <Nom><xsl:value-of select="NomEnsemble"/></Nom> <Direction><xsl:value-of select="Chef"/></Direction> </Ensemble> <Concert> <Date><xsl:value-of select="Date"/></Date> <Ville><xsl:value-of select="Ville"/></Ville> <Lieu><xsl:value-of select="Salle"/></Lieu> <Titre><xsl:value-of select="TitreConcert"/></Titre> </Concert> </insert> </xsl:variable> |
xsl:variable |
<xsl:variable name="..." select=" ... expression XPath ... "/> |
xsl:variable |
<xsl:variable name="..."> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:variable> |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='...' encoding='ISO-8859-1' /> <xsl:variable name='...' select='...' /> <xsl:template match="..."> <xsl:variable name='...'> ... </xsl:variable> ... </xsl:template> <xsl:variable name='...'> ... </xsl:variable> <xsl:template match="..."> <xsl:variable name='...' select='...' /> ... </xsl:template> ... </xsl:stylesheet> |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="..."> <!-- modèle de transformation propre à la règle --> ... <xsl:variable name='...'> <!-- modèle de transformation propre à la variable --> ... <!-- fin du modèle de transformation propre à la variable --> </xsl:variable> ... <!-- fin du modèle de transformation propre à la règle --> </xsl:template> ... </xsl:stylesheet> |
ProgrammeConcert.xsl |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:template match="Role"> *<xsl:value-of select="normalize-space(./child::text())"/> : <xsl:choose> <xsl:when test="count(./Interprète) = 1 "> <xsl:value-of select="Interprète"/> </xsl:when> <xsl:when test="count(./Interprète) = 2 "> <xsl:value-of select="Interprète[1]"/> et <xsl:value-of select="Interprète[2]"/> </xsl:when> <xsl:otherwise> <xsl:for-each select="Interprète"> <xsl:value-of select="."/><xsl:if test="not(position() = last())">, </xsl:if> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
ProgrammeConcert.xsl |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:template match="Role"> *<xsl:value-of select="normalize-space(./child::text())"/> : <xsl:variable name="nombreInterprètes" select="count(./Interprète)" /> <xsl:choose> <xsl:when test="$nombreInterprètes = 1 "> <xsl:value-of select="Interprète"/> </xsl:when> <xsl:when test="$nombreInterprètes = 2 "> <xsl:value-of select="Interprète[1]"/> et <xsl:value-of select="Interprète[2]"/> </xsl:when> <xsl:otherwise> <xsl:for-each select="Interprète"> <xsl:value-of select="."/><xsl:if test="not(position() = last())">, </xsl:if> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
BaseProduits.xml |
<?xml version="1.0" encoding="UCS-2" standalone="yes"?> <BaseProduits> <LesProduits> <Livre ref="vernes1" NoISBN="193335" gamme="roman" media="papier"> <refOeuvre> <Ref valeur="20000lslm"/> </refOeuvre> <Prix valeur="40.5" monnaie="FF"/> <Prix valeur="5" monnaie="£"/> </Livre> <Livre ref="boileaunarcejac1" NoISBN="533791" gamme="roman" media="papier"> <refOeuvre> <Ref valeur="liatlc.bn"/> </refOeuvre> <Prix valeur="30" monnaie="FF"/> <Prix valeur="3" monnaie="£"/> </Livre> <Enregistrement ref="marais1" RefEditeur="LC000280" gamme="violedegambe" media="CD"> ... sans intérêt pour l'exemple </Enregistrement> <Matériel ref="HarKar1" refConstructeur="XL-FZ158BK" gamme="lecteurCD" marque="HarKar"> ... sans intérêt pour l'exemple </Matériel> <Livre ref="phbeaussant1" NoISBN="138301" gamme="essai" media="papier"> <refOeuvre> <Ref valeur="vadb.phb"/> </refOeuvre> <Prix valeur="60" monnaie="FF"/> <Prix valeur="8" monnaie="£"/> </Livre> </LesProduits> <LesOeuvres> <Oeuvre ref="20000lslm"> <Titre> Vingt mille lieues sous les mers </Titre> <refAuteurs> <Ref valeur="JVernes"/> </refAuteurs> </Oeuvre> <Oeuvre ref="marais.folies"> <Titre> Les Folies d'Espagne </Titre> <refAuteurs> <Ref valeur="MMarais"/> </refAuteurs> </Oeuvre> <Oeuvre ref="vadb.phb"> <Titre> Vous avez dit baroque ? </Titre> <refAuteurs> <Ref valeur="PhBeaussant"/> </refAuteurs> </Oeuvre> <Oeuvre ref="marais.pieces1685"> <Titre> Pièces de viole en manuscrit </Titre> <refAuteurs> <Ref valeur="MMarais"/> </refAuteurs> </Oeuvre> <Oeuvre ref="liatlc.bn"> <Titre> L'ingénieur aimait trop les chiffres </Titre> <refAuteurs> <Ref valeur="PBoileau"/> <Ref valeur="ThNarcejac"/> </refAuteurs> </Oeuvre> </LesOeuvres> <!-- ... suite du fichier sans intérêt pour l'exemple ... --> </BaseProduits> |
BaseProduits.xsl |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:variable name="livresAuCatalogue" select="/BaseProduits/LesProduits/Livre"/> <xsl:template match="Oeuvre"> <xsl:variable name="oeuvreCourante" select="."/> <xsl:for-each select="$livresAuCatalogue"> <xsl:if test="$oeuvreCourante/@ref = ./refOeuvre/Ref/@valeur"> - <xsl:value-of select="$oeuvreCourante/Titre"/> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
- Vingt mille lieues sous les mers - Vous avez dit baroque ? - L'ingénieur aimait trop les chiffres |
BaseProduits.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:variable name="lesOeuvres" select="BaseProduits/LesOeuvres/Oeuvre"/> <xsl:template match="Livre"> <xsl:variable name="reference" select="./refOeuvre/Ref/@valeur"/> - <xsl:value-of select="$lesOeuvres/Titre[ parent::Oeuvre[ @ref = $reference ] ]"/> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
<xsl:template match="Livre"> - <xsl:value-of select="/BaseProduits/LesOeuvres/Oeuvre/Titre[ parent::Oeuvre[ @ref = current()/refOeuvre/Ref/@valeur ] ]"/> </xsl:template> |
<xsl:variable name="maison"> <RDC> <cuisine surface='12m2'> Evier inox. Mobilier encastré. </cuisine> <WC> Lavabo. Cumulus 200L. </WC> <séjour surface='40m2'> Cheminée en pierre. Poutres au plafond. Carrelage terre cuite. Grande baie vitrée. </séjour> <bureau surface='15m2'> Bibliothèque encastrée. </bureau> <jardin surface='150m2'> Palmier en zinc figurant le désert. </jardin> <garage/> </RDC> </xsl:variable> |
<xsl:variable name="instrument"> viole de gambe <Interprète> Rika Murata </Interprète> <Interprète> Martin Bauer </Interprète> <Interprète> Sophie Watillon </Interprète> </xsl:variable> |
<xsl:variable name="mouvement"> <insert> <Ensemble> <Nom><xsl:value-of select="NomEnsemble"/></Nom> <Direction><xsl:value-of select="Chef"/></Direction> </Ensemble> <Concert> <Date><xsl:value-of select="Date"/></Date> <Ville><xsl:value-of select="Ville"/></Ville> <Lieu><xsl:value-of select="Salle"/></Lieu> <Titre><xsl:value-of select="TitreConcert"/></Titre> </Concert> </insert> </xsl:variable> |
<xsl:variable name="instrument">saqueboute</xsl:variable> |
<xsl:variable name="instrument" select="'saqueboute'"/> |
<xsl:variable name="instrument" select="saqueboute"/> <!-- faux ! --> |
<xsl:variable name="result"> <xsl:value-of select='concat( $replacement, .)'/> </xsl:variable> |
<xsl:variable name="result"> <xsl:variable name="begin" select="$fragments[position() = 1]"/> <xsl:choose> <xsl:when test="starts-with( $unTexte, $givenChar )"> <xsl:value-of select="$replacement"/> <xsl:value-of select="$begin"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$begin"/> </xsl:otherwise> </xsl:choose> <xsl:for-each select="$fragments[position() > 1]"> <xsl:value-of select='concat( $replacement, .)'/> </xsl:for-each> </xsl:variable> |
Utilisation transparente d'un TST avec Saxon 6.5 |
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> |
<xsl:variable name="entête"> <hautDePage> <gauche> musique </gauche> <centre> Anacréon </centre> <droite> baroque </droite> </hautDePage> </xsl:variable> |
Concerts.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> <xsl:output method='html' encoding='ISO-8859-1' /> <xsl:variable name="entête"> <hautDePage> <gauche> musique </gauche> <centre> Anacréon </centre> <droite> baroque </droite> </hautDePage> </xsl:variable> <xsl:template match="/"> <html> <head> <title><xsl:value-of select="/Concert/Entête"/></title> </head> <body bgcolor="white" text="black"> <TABLE valign="top" width="100%" height="2%" BORDER="0" > <TR> <TD align="left"> <xsl:value-of select="$entête/hautDePage/gauche"/> </TD> <TD align="center"> <xsl:value-of select="$entête/hautDePage/centre"/> </TD> <TD align="right"> <xsl:value-of select="$entête/hautDePage/droite"/> </TD> </TR> </TABLE> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="Entête"> <p> <xsl:value-of select="."/> présentent </p> </xsl:template> <xsl:template match="Date"> <H1 align="center"> Concert du <xsl:value-of select="."/> </H1> </xsl:template> <xsl:template match="Lieu"> <H4 align="center"> <xsl:value-of select="."/> </H4> </xsl:template> <xsl:template match="Ensemble"> <H2 align="center"> Ensemble <xsl:value-of select="."/></H2> </xsl:template> <xsl:template match="Compositeurs"> <H3 align="center"> Oeuvres de <br/> <xsl:value-of select="."/> </H3> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Concerts.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Concert> <Entête> Les Concerts d'Anacréon </Entête> <Date>Jeudi 17 Janvier 2002, 20H30</Date> <Lieu>Chapelle des Ursules</Lieu> <Ensemble> "A deux violes esgales" </Ensemble> <Interprète> <Nom> Jonathan Dunford </Nom> <Instrument>Basse de viole</Instrument> </Interprète> <Interprète> <Nom> Sylvia Abramowicz </Nom> <Instrument>Basse de viole</Instrument> </Interprète> <Interprète> <Nom> Benjamin Perrot </Nom> <Instrument>Théorbe et Guitare baroque</Instrument> </Interprète> <TitreConcert> Folies d'Espagne et diminutions d'Italie </TitreConcert> <Compositeurs> <Compositeur>M. Marais</Compositeur> <Compositeur>D. Castello</Compositeur> <Compositeur>F. Rognoni</Compositeur> </Compositeurs> </Concert> |
Concerts.html |
<html xmlns:xalan="http://xml.apache.org/xalan"> <head> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title> Les Concerts d’Anacréon </title> </head> <body text="black" bgcolor="white"> <TABLE BORDER="0" height="2%" width="100%" valign="top"> <TR> <TD align="left"> musique </TD><TD align="center"> Anacréon </TD><TD align="right"> baroque </TD> </TR> </TABLE> <H1 align="center"> Concert du Jeudi 17 Janvier 2002, 20H30</H1> </body> </html> |
rawInsert.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <insertions> <Concert> <NomEnsemble>A deux violes esgales</NomEnsemble> <Chef>-</Chef> <Date>Jeudi 17 Janvier 2002, 20H30</Date> <Ville>Angers</Ville> <Salle>Chapelle des Ursules</Salle> <TitreConcert> Folies d'Espagne et diminutions d'Italie </TitreConcert> </Concert> <Concert> <NomEnsemble>La Cetra d'Orfeo</NomEnsemble> <Chef>Michel Keustermans</Chef> <Date>Mercredi 20 Mars 2002, 20H30</Date> <Ville>Bordeaux</Ville> <Salle>Théâtre</Salle> <TitreConcert> Habendmusiken </TitreConcert> </Concert> <Concert> <NomEnsemble>Suonare e cantare</NomEnsemble> <Chef>Jean Gaillard</Chef> <Date>Vendredi 26 Octobre 2001, 20H30</Date> <Ville>Nantes</Ville> <Salle>Musée des Beaux-Arts</Salle> <TitreConcert> Madrigali e altre musiche concertate </TitreConcert> </Concert> </insertions> |
insert.xml |
<?xml version="1.0" encoding="ISO-8859-1"?> <Mouvements> <insert> <Ensemble> <Nom>A deux violes esgales</Nom> <Direction>-</Direction> </Ensemble> <Concert> <Date>Jeudi 17 Janvier 2002, 20H30</Date> <Ville>Angers</Ville> <Lieu>Chapelle des Ursules</Lieu> <Titre> Folies d'Espagne et diminutions d'Italie </Titre> </Concert> </insert> <insert> <Ensemble> <Nom>La Cetra d'Orfeo</Nom> <Direction>Michel Keustermans</Direction> </Ensemble> <Concert> <Date>Mercredi 20 Mars 2002, 20H30</Date> <Ville>Bordeaux</Ville> <Lieu>Théâtre</Lieu> <Titre> Habendmusiken </Titre> </Concert> </insert> <insert> <Ensemble> <Nom>Suonare e cantare</Nom> <Direction>Jean Gaillard</Direction> </Ensemble> <Concert> <Date>Vendredi 26 Octobre 2001, 20H30</Date> <Ville>Nantes</Ville> <Lieu>Musée des Beaux-Arts</Lieu> <Titre> Madrigali e altre musiche concertate </Titre> </Concert> </insert> </Mouvements> |
prepareInsert.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='xml' encoding='ISO-8859-1' /> <xsl:template match="/"> <Mouvements> <xsl:apply-templates/> </Mouvements> </xsl:template> <xsl:template match="Concert"> <xsl:variable name="mouvement"> <insert> <Ensemble> <Nom><xsl:value-of select="NomEnsemble"/></Nom> <Direction><xsl:value-of select="Chef"/></Direction> </Ensemble> <Concert> <Date><xsl:value-of select="Date"/></Date> <Ville><xsl:value-of select="Ville"/></Ville> <Lieu><xsl:value-of select="Salle"/></Lieu> <Titre><xsl:value-of select="TitreConcert"/></Titre> </Concert> </insert> </xsl:variable> <xsl:copy-of select="$mouvement"/> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
insert.xml |
<?xml version="1.0" encoding="ISO-8859-1"?><Mouvements><insert><Ensemble><Nom>A deux violes esgales</Nom><Direction>-</Direction></Ensemble><Concert><Date>Jeudi 17 Janvier 2002, 20H30</Date><Ville>Angers</Ville><Lieu>Chapelle des Ursules</Lieu><Titre> Folies d'Espagne et diminutions d'Italie </Titre></Concert></insert><insert><Ensemble><Nom>La Cetra d'Orfeo</Nom><Direction>Michel Keustermans</Direction></Ensemble><Concert><Date>Mercredi 20 Mars 2002, 20H30</Date><Ville>Bordeaux</Ville><Lieu>Théâtre</Lieu><Titre> Habendmusiken </Titre></Concert></insert><insert><Ensemble><Nom>Suonare e cantare</Nom><Direction>Jean Gaillard</Direction></Ensemble><Concert><Date>Vendredi 26 Octobre 2001, 20H30</Date><Ville>Nantes</Ville><Lieu>Musée des Beaux-Arts</Lieu><Titre> Madrigali e altre musiche concertate </Titre></Concert></insert></Mouvements> |
<xsl:copy-of select="$mouvement/insert/Ensemble"/> |
<xsl:copy-of select="$mouvement"/> |
produits.xml |
<?xml version="1.0" encoding="UTF-16"?> <LesProduits> <Livre ref="vernes1" NoISBN="193335" gamme="roman" media="papier"> <refOeuvre> <Ref valeur="20000lslm"/> </refOeuvre> <Prix valeur="40.5" monnaie="FF"/> <Prix valeur="5" monnaie="£"/> </Livre> <Livre ref="boileaunarcejac1" NoISBN="533791" gamme="roman" media="papier"> <refOeuvre> <Ref valeur="liatlc.bn"/> </refOeuvre> <Prix valeur="30"/> </Livre> </LesProduits> |
produits.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:template match="Livre"> <xsl:variable name="monnaie"> <xsl:choose> <xsl:when test="Prix/@monnaie"> <xsl:value-of select="Prix/@monnaie"/> </xsl:when> <xsl:otherwise>FF</xsl:otherwise> </xsl:choose> </xsl:variable> -- ref: <xsl:value-of select="@ref"/> prix: <xsl:value-of select="Prix/@valeur"/> <xsl:value-of select="$monnaie"/> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
-- ref: vernes1 prix: 40.5FF -- ref: boileaunarcejac1 prix: 30FF |
<xsl:variable name="maison"> <RDC> <cuisine surface='12m2'> Evier inox. Mobilier encastré. </cuisine> <WC> Lavabo. Cumulus 200L. </WC> <séjour surface='40m2'> Cheminée en pierre. Poutres au plafond. Carrelage terre cuite. Grande baie vitrée. </séjour> <bureau surface='15m2'> Bibliothèque encastrée. </bureau> <jardin surface='150m2'> Palmier en zinc figurant le désert. </jardin> <garage/> </RDC> </xsl:variable> |
Concerts.xsl |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xalan" version="1.0"> <xsl:output method='html' encoding='ISO-8859-1' /> <xsl:variable name="entête"> <hautDePage> <gauche> musique </gauche> <centre> Anacréon </centre> <droite> baroque </droite> </hautDePage> </xsl:variable> <xsl:template match="/"> <html> <head> <title><xsl:value-of select="/Concert/Entête"/></title> </head> <body bgcolor="white" text="black"> <TABLE valign="top" width="100%" height="2%" BORDER="0" > <TR> <TD align="left"> <xsl:value-of select="xalan:nodeset($entête)/hautDePage/gauche"/> </TD> <TD align="center"> <xsl:value-of select="xalan:nodeset($entête)/hautDePage/centre"/> </TD> <TD align="right"> <xsl:value-of select="xalan:nodeset($entête)/hautDePage/droite"/> </TD> </TR> </TABLE> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="Entête"> <p> <xsl:value-of select="."/> présentent </p> </xsl:template> <xsl:template match="Date"> <H1 align="center"> Concert du <xsl:value-of select="."/> </H1> </xsl:template> <xsl:template match="Lieu"> <H4 align="center"> <xsl:value-of select="."/> </H4> </xsl:template> <xsl:template match="Ensemble"> <H2 align="center"> Ensemble <xsl:value-of select="."/></H2> </xsl:template> <xsl:template match="Compositeurs"> <H3 align="center"> Oeuvres de <br/> <xsl:value-of select="."/> </H3> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:variable name="valeur"> <xsl:value-of select="$valeur"/> <!-- interdit ! --> </xsl:variable> <xsl:template match="TitreConcert" > ... </xsl:template> <xsl:template match="Concert"> ... </xsl:template> </xsl:stylesheet> |
<?xml version="1.0" encoding="UCS-2"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:variable name="truc"> <xsl:apply-templates /> </xsl:variable> <xsl:template match="TitreConcert" > ... </xsl:template> <xsl:template match="Concert"> <xsl:value-of select="$valeur"/> </xsl:template> </xsl:stylesheet> |
<?xml version="1.0" encoding="UCS-2"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method='text' encoding='ISO-8859-1' />
<xsl:variable name="amorce">
<xsl:apply-templates />
</xsl:variable>
<xsl:template match="$amorce/child::Interprète/child::Nom" >
...
</xsl:template>
<xsl:template match="..." >
...
</xsl:template>
</xsl:stylesheet> |
Début d'une feuille de style |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:param name="monnaieUsuelle" select="'FF'"/> ... <xsl:value-of select="$monnaieUsuelle"/> ... |
Lancement du processeur XSLT |
java com.icl.saxon.StyleSheet -o produits.txt produits.xml produits.xsl monnaieUsuelle=DM |
xsl:param |
<xsl:param name="..." select=" ... expression XPath ... "/> |
xsl:param |
<xsl:param name="..."> <!-- modèle de transformation --> ... texte ou instructions XSLT ... <!-- fin du modèle de transformation --> </xsl:param> |
produits.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:param name="monnaieUsuelle" select="'FF'"/> <xsl:template match="Livre"> <xsl:variable name="monnaie"> <xsl:choose> <xsl:when test="Prix/@monnaie"> <xsl:value-of select="Prix/@monnaie"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$monnaieUsuelle"/> </xsl:otherwise> </xsl:choose> </xsl:variable> -- ref: <xsl:value-of select="@ref"/> prix: <xsl:value-of select="Prix/@valeur"/> <xsl:value-of select="$monnaie"/> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
-- ref: vernes1 prix: 40.5FF -- ref: boileaunarcejac1 prix: 30FF |
Using Saxon from the Command Line |
java com.icl.saxon.StyleSheet [options] source-document stylesheet [params...] The options must come first, then the two file names, then the params. A param takes the form name=value, name being the name of the parameter, and value the value of the parameter. These parameters are accessible within the stylesheet as normal variables, using the $name syntax, provided they are declared using a top-level xsl:param element. If there is no such declaration, the supplied parameter value is silently ignored. |
Ligne de commande |
java com.icl.saxon.StyleSheet -o produits.txt produits.xml produits.xsl monnaieUsuelle=DM |
Résultat |
-- ref: vernes1 prix: 40.5FF -- ref: boileaunarcejac1 prix: 30DM |
Ligne de commande |
java org.apache.xalan.xslt.Process -IN produits.xml -XSL produits.xsl -OUT produits.txt -PARAM monnaieUsuelle DM |
Nom.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:template name="instancierTexteAvecTiret"> <xsl:param name="texte"/> - <xsl:value-of select="$texte" /> </xsl:template> <xsl:template match="Nom"> <xsl:call-template name="instancierTexteAvecTiret"> <xsl:with-param name="texte" select="."/> </xsl:call-template> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Concert.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Concert> <Entête> Les Concerts d'Anacréon </Entête> <Date>Jeudi 17 Janvier 2002, 20H30</Date> <Lieu>Chapelle des Ursules</Lieu> <Ensemble> "A deux violes esgales" </Ensemble> <Interprète> <Nom> Jonathan Dunford </Nom> <Instrument>Basse de viole</Instrument> </Interprète> <Interprète> <Nom> Sylvia Abramowicz </Nom> <Instrument>Basse de viole</Instrument> </Interprète> <Interprète> <Nom> Benjamin Perrot </Nom> <Instrument>Théorbe et Guitare baroque</Instrument> </Interprète> <TitreConcert> Folies d'Espagne et diminutions d'Italie </TitreConcert> <Compositeurs> <Compositeur>M. Marais</Compositeur> <Compositeur>D. Castello</Compositeur> <Compositeur>F. Rognoni</Compositeur> </Compositeurs> </Concert> |
Résultat |
- Jonathan Dunford - Sylvia Abramowicz - Benjamin Perrot |
Modèle nommé xsl:template |
<xsl:template name="..."> <!-- arguments formels du modèle nommé --> ... <!-- fin des arguments formels du modèle nommé --> <!-- corps du modèle de transformation --> ... instructions ... <!-- fin du corps du modèle de transformation --> </xsl:template> |
Argument formel du modèle nommé |
<xsl:param name="..."/> |
Argument formel du modèle nommé (avec valeur par défaut) |
<xsl:param name="..." select="...expression XPath.../> |
Variante d'argument formel du modèle nommé (avec valeur par défaut) |
<xsl:param name="..."> <!-- modèle de transformation du paramètre --> ... <!-- fin du modèle de transformation du paramètre --> </xsl:param> |
<xsl:template name="..."> <xsl:param name="truc"/> <xsl:param name="machin"/> <!-- corps du modèle de transformation --> ... référence à $truc ... référence à $machin ... <!-- fin du corps du modèle de transformation --> </xsl:template> |
annonces.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Annonces> <Annonce> <Entête> "Les Concerts d'Anacréon" </Entête> <Date> <Jour id="jeu"/> <Quantième>17</Quantième> <Mois id="jnv"/> <Année>2002</Année> <Heure>20H30</Heure> </Date> <Lieu>Chapelle des Ursules</Lieu> <Ensemble> "A deux violes esgales" </Ensemble> <Interprète> <Nom> Jonathan Dunford </Nom> <Instrument id="bvl"/> </Interprète> <Interprète> <Nom> Sylvia Abramowicz </Nom> <Instrument id="bvl"/> </Interprète> <Interprète> <Nom> Benjamin Perrot </Nom> <Instrument id="thb"/> </Interprète> <Interprète> <Nom> Freddy Eichelberger </Nom> <Instrument id="clv"/> </Interprète> <Concert> <TitreConcert lang="fr"> Folies d'Espagne, Bourrasque et Tourbillon Gavotte La Ferme - Chaconne de Rougeville </TitreConcert> <TitreConcert lang="en"> Spanish folias, Squall and Whirlwind Gavotte Shut Up - Redtown's Sillycate </TitreConcert> </Concert> <Compositeurs> <Compositeur>Marin Marais</Compositeur> <Compositeur>Jean de Sainte Colombe</Compositeur> </Compositeurs> </Annonce> <!-- autres annonces ... --> </Annonces> |
annonces.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> <!-- compatibilité Saxon 6.5 --> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:param name="langueCible">fr</xsl:param> <xsl:variable name="Dictionnaire"> <mot id="bvl"> <traduction lang="fr">Basse de viole</traduction> <traduction lang="en">Bass viol</traduction> </mot> <mot id="vdg"> <traduction lang="fr">Viole de gambe</traduction> <traduction lang="en">Viola da gamba</traduction> </mot> <mot id="lth"> <traduction lang="fr">Luth</traduction> <traduction lang="en">Lute</traduction> </mot> <mot id="clv"> <traduction lang="fr">Clavecin</traduction> <traduction lang="en">Harpsichord</traduction> </mot> <mot id="flt"> <traduction lang="fr">Flûte à bec</traduction> <traduction lang="en">Recorder</traduction> </mot> <mot id="thb"> <traduction lang="fr">Théorbe</traduction> <traduction lang="en">Theorbo</traduction> </mot> <mot id="lun"> <traduction lang="fr">lundi</traduction> <traduction lang="en">monday</traduction> </mot> <!-- etc. (les autres jours de la semaine) --> <mot id="dim"> <traduction lang="fr">dimanche</traduction> <traduction lang="en">sunday</traduction> </mot> <mot id="jnv"> <traduction lang="fr">janvier</traduction> <traduction lang="en">january</traduction> </mot> <!-- etc. (les autres mois de l'année) --> <mot id="dcb"> <traduction lang="fr">décembre</traduction> <traduction lang="en">december</traduction> </mot> </xsl:variable> <xsl:template name="traduction"> <xsl:param name="motId"/> <xsl:variable name="motTrouvé" select="$Dictionnaire/mot[@id=$motId]" /> <xsl:variable name="saTraduction" select="$motTrouvé/traduction[@lang=$langueCible]" /> <xsl:value-of select="$saTraduction" /> </xsl:template> <xsl:template match="Date"> <xsl:call-template name="traduction"> <xsl:with-param name="motId" select="./Mois/@id" /> </xsl:call-template> </xsl:template> <xsl:template match="Interprète"> -<xsl:value-of select="./Nom"/> : <xsl:call-template name="traduction"> <xsl:with-param name="motId" select="./Instrument/@id" /> </xsl:call-template> </xsl:template> <xsl:template match="text()" /> </xsl:stylesheet> |
annonces.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:param name="langueCible">fr</xsl:param> <xsl:param name="dicoFileRef">dictionnaire.xml</xsl:param> <xsl:variable name="Dictionnaire" select="document($dicoFileRef)/Dictionnaire"/> <xsl:template name="traduction"> <xsl:param name="motId"/> <xsl:variable name="motTrouvé" select="$Dictionnaire/mot[@id=$motId]" /> <xsl:variable name="saTraduction" select="$motTrouvé/traduction[@lang=$langueCible]" /> <xsl:value-of select="$saTraduction" /> </xsl:template> <xsl:template match="Date"> <xsl:call-template name="traduction"> <xsl:with-param name="motId" select="./Mois/@id" /> </xsl:call-template> </xsl:template> <xsl:template match="Interprète"> -<xsl:value-of select="./Nom"/> : <xsl:call-template name="traduction"> <xsl:with-param name="motId" select="./Instrument/@id"/> </xsl:call-template> </xsl:template> <xsl:template match="text()" /> </xsl:stylesheet> |
dictionnaire.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Dictionnaire> <mot id="bvl"> <traduction lang="fr">Basse de viole</traduction> <traduction lang="en">Bass viol</traduction> </mot> <mot id="vdg"> <traduction lang="fr">Viole de gambe</traduction> <traduction lang="en">Viola da gamba</traduction> </mot> <!-- etc. ... (comme avant) --> <mot id="dcb"> <traduction lang="fr">décembre</traduction> <traduction lang="en">december</traduction> </mot> </Dictionnaire> |
xsl:call-template |
<xsl:call-template name="..."> <!-- arguments effectifs pour l'appel --> ... <!-- fin des arguments effectifs pour l'appel --> </xsl:call-template>/> |
Argument effectif |
<xsl:with-param name="..." select="... expression XPath ..." /> |
Variante d'argument effectif |
<xsl:with-param name="..."> <!-- modèle de transformation de l'argument effectif --> ... <!-- fin du modèle de transformation de l'argument effectif --> </xsl:with-param> |
Ligne de commande |
java com.icl.saxon.StyleSheet -o annonces.txt annonces.xml annonces.xsl |
Résultat |
janvier - Jonathan Dunford : Basse de viole - Sylvia Abramowicz : Basse de viole - Benjamin Perrot : Théorbe - Freddy Eichelberger : Clavecin |
Ligne de commande (une seule ligne d'un seul tenant) |
java com.icl.saxon.StyleSheet -o annonces.txt annonces.xml annonces.xsl langueCible=en |
Résultat |
january - Jonathan Dunford : Bass viol - Sylvia Abramowicz : Bass viol - Benjamin Perrot : Theorbo - Freddy Eichelberger : Harpsichord |
xsl:apply-templates |
<xsl:apply-templates select="..." mode="..."> <!-- arguments effectifs pour l'appel --> ... <!-- fin des arguments effectifs pour l'appel --> </xsl:apply-templates>/> |
Argument effectif |
<xsl:with-param name="..." select="... expression XPath ..." /> |
Variante d'argument effectif |
<xsl:with-param name="..."> <!-- modèle de transformation de l'argument effectif --> ... <!-- fin du modèle de transformation de l'argument effectif --> </xsl:with-param> |
xsl:message |
<xsl:message> <!-- modèle de transformation --> ... <!-- fin du modèle de transformation --> </xsl:message>/> |
xsl:message (variante syntaxique) |
<xsl:message terminate="yes"> <!-- modèle de transformation --> ... <!-- fin du modèle de transformation --> </xsl:message>/> |
Dictionnaire.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Dictionnaire> <mot id="dim"> <traduction lang="fr">dimanche</traduction> <traduction lang="en">sunday</traduction> </mot> <mot id="lun"> <traduction lang="fr">lundi</traduction> <traduction lang="en">monday</traduction> </mot> </Dictionnaire> |
Déclaration de clé |
<xsl:key name="traduction" match="mot" use="attribute::id" /> |
xsl:key |
<xsl:key name="..." match="...motif..." use="...expression..."/> |
Déclaration de clé |
<xsl:key name="traduction" match="mot" use="attribute::id" /> |
Dictionnaire.xml |
<?xml version="1.0" encoding="UTF-16"?> <Dictionnaire> <mot id="dim"> <traduction lang="fr">dimanche</traduction> <traduction lang="en">sunday</traduction> </mot> </Dictionnaire> |
traduction.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:key name="traduction" match="mot" use="attribute::id" /> <xsl:template name="afficher"> <xsl:param name="code"/> <xsl:variable name="mot" select="key('traduction', $code)"/> <xsl:for-each select="$mot/traduction"> <xsl:value-of select="$code"/><xsl:text> ( </xsl:text> <xsl:value-of select="@lang"/><xsl:text> ) : </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> <xsl:template match="/"> <xsl:call-template name="afficher"> <xsl:with-param name="code" select="'dim'"/> </xsl:call-template> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
dim ( fr ) : dimanche dim ( en ) : sunday |
Dictionnaire.xml |
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <Dictionnaire> <mot id="dim"> <traduction lang="fr">dimanche</traduction> <traduction lang="en">sunday</traduction> </mot> <mot id="lun"> <traduction lang="fr">lundi</traduction> <traduction lang="en">monday</traduction> </mot> </Dictionnaire> |
traduction.xsl |
... idem ... <xsl:template match="/"> <xsl:call-template name="afficher"> <xsl:with-param name="code" select="'dim'"/> </xsl:call-template> <xsl:call-template name="afficher"> <xsl:with-param name="code" select="'lun'"/> </xsl:call-template> </xsl:template> ... idem ... |
Résultat |
dim ( fr ) : dimanche dim ( en ) : sunday lun ( fr ) : lundi lun ( en ) : monday |
Déclaration de clé |
<xsl:key name="traduction" match="mot" use="traduction" /> |
./child::traduction où "." est le <mot> courant. |
traduction.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:key name="traduction" match="mot" use="traduction" /> <xsl:template name="afficher"> <xsl:param name="unMot"/> <xsl:variable name="motTrouvé" select="key('traduction', $unMot)"/> <xsl:variable name="sonCode" select="$motTrouvé/@id"/> <xsl:for-each select="$motTrouvé/traduction"> <xsl:value-of select="$sonCode"/><xsl:text> ( </xsl:text> <xsl:value-of select="@lang"/><xsl:text> ) : </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> <xsl:template match="/"> <xsl:call-template name="afficher"> <xsl:with-param name="unMot" select="'dimanche'"/> </xsl:call-template> <xsl:call-template name="afficher"> <xsl:with-param name="unMot" select="'monday'"/> </xsl:call-template> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
dim ( fr ) : dimanche dim ( en ) : sunday lun ( fr ) : lundi lun ( en ) : monday |
Déclaration de clé |
<xsl:key name="traduction" match="traduction" use="@lang" /> |
traduction.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:key name="traduction" match="traduction" use="@lang" /> <xsl:template name="afficher"> <xsl:param name="langue"/> <xsl:variable name="traductionsTrouvées" select="key('traduction', $langue)"/> <xsl:text> </xsl:text> <xsl:text>Langue = </xsl:text><xsl:value-of select="$langue"/><xsl:text> : </xsl:text> <xsl:for-each select="$traductionsTrouvées"> <xsl:value-of select="."/> <xsl:text> ( code : </xsl:text> <xsl:value-of select="../@id"/> <xsl:text> ) </xsl:text> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> <xsl:template match="/"> <xsl:call-template name="afficher"> <xsl:with-param name="langue" select="'fr'"/> </xsl:call-template> <xsl:call-template name="afficher"> <xsl:with-param name="langue" select="'en'"/> </xsl:call-template> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
Langue = fr : dimanche ( code : dim ) lundi ( code : lun ) Langue = en : sunday ( code : dim ) monday ( code : lun ) |
traduction.xsl |
<?xml version="1.0" encoding="UTF-16"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method='text' encoding='ISO-8859-1' /> <xsl:key name="traduction" match="mot" use="attribute::id" /> <xsl:template name="afficher"> <xsl:param name="code"/> <xsl:for-each select="document('Dictionnaire.xml')"> <xsl:variable name="mot" select="key('traduction', $code)"/> <xsl:for-each select="$mot/traduction"> <xsl:value-of select="$code"/><xsl:text> ( </xsl:text> <xsl:value-of select="@lang"/><xsl:text> ) : </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:for-each> </xsl:template> <xsl:template match="/"> <xsl:call-template name="afficher"> <xsl:with-param name="code" select="'dim'"/> </xsl:call-template> <xsl:call-template name="afficher"> <xsl:with-param name="code" select="'lun'"/> </xsl:call-template> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet> |
Résultat |
dim ( fr ) : dimanche dim ( en ) : sunday lun ( fr ) : lundi lun ( en ) : monday |
preceding-sibling::*[1] | Table | following-sibling::*[1] |