V - Les instructions de transformation
        Instruction xsl:template
                Syntaxe
                Sémantique
        Instruction xsl:value-of
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Variante syntaxique
        Instruction xsl:apply-templates
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Variante syntaxique select="..."
                Variante syntaxique mode="..."
                        Exemple
        Instruction xsl:for-each
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Autre sémantique
                Exemple
        Instruction xsl:sort
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple
                Variantes syntaxiques
                        Attribut select
                        Autres attributs
                        Exemple
                Tri à clés multiples
        Instruction xsl:copy-of
                Bande-annonce
                Syntaxe
                Règle XSLT typique
                Sémantique
                Exemple trivial
                Autre exemple


Chapitre V - Les instructions de transformation

Instruction xsl:template

Syntaxe

xsl:template
<xsl:template match="... motif ..." />
    <!-- modèle de transformation -->
    ...
    <!-- fin du modèle de transformation -->
</xsl:template>

Sémantique

Instruction xsl:value-of

Syntaxe

xsl:value-of
<xsl:value-of select="... chemin de localisation ..." />

Règle XSLT typique

<xsl:template match="... motif (pattern) ...">
    <!-- modèle de transformation -->
    ... 
    mélange de texte et
    d'instructions XSLT de la forme :
    
        <xsl:value-of select="... chemin de localisation ..." />
    
    ...
    <!-- fin du modèle de transformation -->
</xsl:template> 

Sémantique

Exemple

Saison.xml
<?xml version="1.0" encoding="UTF-8"?>
<Saison>
    <Concert> 
        <Organisation> Anacréon </Organisation>
        <Date>Samedi 9 Octobre 1999 <Heure> 20H30 </Heure> </Date>
        <Lieu>Chapelle des Ursules</Lieu>
    </Concert> 
    <Théâtre> 
        <Organisation> Masques et Lyres </Organisation>
        <Date>Mardi 19 Novembre 1999 <Heure> 21H </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
    <Théâtre> 
        <Organisation> Masques et Lyres </Organisation>
        <Date>Mercredi 20 Novembre 1999 <Heure> 21H30 </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
</Saison>
Saison.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
 
    <xsl:output method='text' encoding='UTF-8'/>

    <xsl:template match='/'>
        Date Concert : <xsl:value-of select="Saison/Concert/Date"/>
        Date Théâtre : <xsl:value-of select="Saison/Théâtre[1]/Date"/>
        Date Théâtre : <xsl:value-of select="Saison/Théâtre[2]/Date"/>
    </xsl:template>
    
</xsl:stylesheet>
        Date Concert : Samedi 9 Octobre 1999  20H30  
        Date Théâtre : Mardi 19 Novembre 1999  21H  
        Date Théâtre : Mercredi 20 Novembre 1999  21H30  
<?xml version="1.0" encoding="UTF-8"?>

        Date Concert : Samedi 9 Octobre 1999  20H30  
        Date Théâtre : Mardi 19 Novembre 1999  21H  
        Date Théâtre : Mercredi 20 Novembre 1999  21H30  

Variante syntaxique

<xsl:value-of select="..." disable-output-escaping="yes|no" />

Instruction xsl:apply-templates

Syntaxe

<xsl:apply-templates />

Règle XSLT typique

<xsl:template match="... motif (pattern) ...">
    <!-- modèle de transformation -->
    ... texte ...
    <xsl:apply-templates />
    ... texte ...
    <!-- fin du modèle de transformation -->
</xsl:template> 

Sémantique

Exemple

Saison.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" 
    version   = "1.0">
 
    <xsl:output method='text' encoding='UTF-8'/>

    <xsl:template match='/'>
        <xsl:apply-templates/>
    </xsl:template>
    
    <xsl:template match='Saison'>
        Manifestations au programme
        <xsl:apply-templates/>
        Réservations 10 jours avant la date.
    </xsl:template>
    
    <xsl:template match='Concert'>
        Concert : <xsl:value-of select="."/>
    </xsl:template>
    
    <xsl:template match='Théâtre'>
        Théâtre : <xsl:value-of select="."/>
    </xsl:template>
    
</xsl:stylesheet>
    Manifestations au programme
    
    
    Concert :  
         Pygmalion 
        Samedi 9 Octobre 1999  20H30  
        Chapelle des Ursules
     
    
    Théâtre :  
         Masques et Lyres 
        Mardi 19 Novembre 1999  21H  
        Salle des Cordeliers
     
    
    Théâtre :  
         Aristophane 
        Mercredi 20 Novembre 1999  21H30  
        Salle des Cordeliers
     

    Réservations 10 jours avant la date.

Variante syntaxique select="..."

<xsl:apply-templates select="... chemin de localisation ..." />
<xsl:template match='truc'>
    <xsl:apply-templates select="."/>
</xsl:template>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" 
    version   = "1.0">
 
    <xsl:output method='text' encoding='UTF-8'/>

    <xsl:template match='/'>
        <xsl:apply-templates/>
    </xsl:template>
    
    <xsl:template match='Saison'>
        Manifestations au programme
        <xsl:apply-templates select="Théâtre"/>
        <xsl:apply-templates select="Concert"/>
        Réservations 10 jours avant la date.
    </xsl:template>
    
    <xsl:template match='Concert'>
        Concert : <xsl:value-of select="."/>
    </xsl:template>
    
    <xsl:template match='Théâtre'>
        Théâtre : <xsl:value-of select="."/>
    </xsl:template>
    
</xsl:stylesheet>
        Manifestations au programme
        
        Théâtre :  
         Masques et Lyres 
        Mardi 19 Novembre 1999  21H  
        Salle des Cordeliers
    
        Théâtre :  
         Aristophane 
        Mercredi 20 Novembre 1999  21H30  
        Salle des Cordeliers
    
        Concert :  
         Pygmalion 
        Samedi 9 Octobre 1999  20H30  
        Chapelle des Ursules
    
        Réservations 10 jours avant la date.

Variante syntaxique mode="..."

<xsl:apply-templates mode="nom-de-mode" />
<xsl:template match='...' mode="mode1">
    ...
</xsl:template>

<xsl:template match='... la même chose ...' mode="mode2">
    ...
</xsl:template>
<xsl:apply-templates mode="mode1" />

Exemple

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
    xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" 
    version   = "1.0">
 
    <xsl:output method='text' encoding='UTF-8'/>

    <xsl:template match='/'>
        <xsl:apply-templates/>
    </xsl:template>
    
    <xsl:template match='Saison'>
        Manifestations à venir
        <xsl:apply-templates select="Théâtre" mode="annonce"/>
        <xsl:apply-templates select="Concert" mode="annonce"/>
        Chauffage
        <xsl:apply-templates select="Théâtre" mode="logistique"/>
        <xsl:apply-templates select="Concert" mode="logistique"/>
    </xsl:template>
    
    <xsl:template match='Concert' mode="annonce">
        Concert : <xsl:value-of select="."/>
    </xsl:template>
    
    <xsl:template match='Théâtre'  mode="annonce">
        Théâtre : <xsl:value-of select="."/>
    </xsl:template>
    
    <xsl:template match='Concert' mode="logistique">
        le <xsl:value-of select="Date"/>, <xsl:value-of select="Lieu"/>
    </xsl:template>
    
    <xsl:template match='Théâtre'  mode="logistique">
        le <xsl:value-of select="Date"/>, <xsl:value-of select="Lieu"/>
    </xsl:template>
    
    <xsl:template match='Organisation'  mode="logistique">
    </xsl:template>
    
</xsl:stylesheet>
        Manifestations à venir
        
        Théâtre :  
         Masques et Lyres 
        Mardi 19 Novembre 1999  21H  
        Salle des Cordeliers
    
        Théâtre :  
         Aristophane 
        Mercredi 20 Novembre 1999  21H30  
        Salle des Cordeliers
    
        Concert :  
         Pygmalion 
        Samedi 9 Octobre 1999  20H30  
        Chapelle des Ursules
    
        Chauffage
        
        le Mardi 19 Novembre 1999  21H  , Salle des Cordeliers
        le Mercredi 20 Novembre 1999  21H30  , Salle des Cordeliers
        le Samedi 9 Octobre 1999  20H30  , Chapelle des Ursules

Instruction xsl:for-each

Bande-annonce

Saison.xml
<?xml version="1.0" encoding="UTF-8"?>
<Saison>
    <Concert> 
        <Organisation> Anacréon </Organisation>
        <Date>Samedi 9 Octobre 1999 <Heure> 20H30 </Heure> </Date>
        <Lieu>Chapelle des Ursules</Lieu>
    </Concert> 
    <Théâtre> 
        <Organisation> Masques et Lyres </Organisation>
        <Date>Mardi 19 Novembre 1999 <Heure> 21H </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
    <Théâtre> 
        <Organisation> Masques et Lyres </Organisation>
        <Date>Mercredi 20 Novembre 1999 <Heure> 21H30 </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
</Saison>
Saison.xsl
<?xml version="1.0" encoding="UTF-8"?>
<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='Saison'>
        <xsl:for-each select="Théâtre">
            Date Théâtre : <xsl:value-of select="Date"/>
        </xsl:for-each>
    </xsl:template>
    
</xsl:stylesheet>
Résultat
            Date Théâtre : Mardi 19 Novembre 1999  21H  
            Date Théâtre : Mercredi 20 Novembre 1999  21H30  

Syntaxe

<xsl:for-each select="... chemin de localisation ..."> 
    ... 
</xsl:for-each>

Règle XSLT typique

<xsl:template match="... motif (pattern) ...">
    <!-- modèle de transformation englobant -->
    ... texte ou instructions XSLT ...
    <xsl:for-each select="...">
        <!-- modèle de transformation propre au for-each -->
         ... texte ou instructions XSLT ...
        <!-- fin du modèle de transformation -->
    </xsl:for-each>
    ... texte ou instructions XSLT ...
    <!-- fin du modèle de transformation englobant -->
 </xsl:template> 

Sémantique

Exemple

Saison.xsl
<?xml version="1.0" encoding="UTF-8"?>
<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='Saison'>
        <xsl:for-each select="Théâtre">
            Date Théâtre : <xsl:value-of select="Date"/>
        </xsl:for-each>
    </xsl:template>
    
</xsl:stylesheet>
Saison.xml
<?xml version="1.0" encoding="UTF-8"?>
<Saison>
    <Concert> 
        <Organisation> Anacréon </Organisation>
        <Date>Samedi 9 Octobre 1999 <Heure> 20H30 </Heure> </Date>
        <Lieu>Chapelle des Ursules</Lieu>
    </Concert> 
    <Théâtre> 
        <Organisation> Masques et Lyres </Organisation>
        <Date>Mardi 19 Novembre 1999 <Heure> 21H </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
    <Théâtre> 
        <Organisation> Masques et Lyres </Organisation>
        <Date>Mercredi 20 Novembre 1999 <Heure> 21H30 </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
</Saison>
Résultat
            Date Théâtre : Mardi 19 Novembre 1999  21H  
            Date Théâtre : Mercredi 20 Novembre 1999  21H30  

Autre sémantique

<xsl:template match="... motif (pattern) ...">
    <!-- modèle de transformation englobant -->
    ... texte ou instructions XSLT ...
    <xsl:for-each select="...">
        <!-- modèle de transformation propre au for-each -->
         ... texte ou instructions XSLT ...
        <!-- fin du modèle de transformation -->
    </xsl:for-each>
    ... texte ou instructions XSLT ...
    <!-- fin du modèle de transformation englobant -->
 </xsl:template> 
<xsl:template match="... motif (pattern) ...">
    <!-- modèle de transformation -->
    ... texte ou instructions XSLT ...
    <xsl:for-each select="...">
         ... texte ou instructions XSLT ...
    </xsl:for-each>
    ... texte ou instructions XSLT ...
    <!-- fin du modèle de transformation -->
 </xsl:template> 
<xsl:template match="... motif (pattern) ...">
    <!-- modèle de transformation -->
    <!-- première partie -->
    ... texte ou instructions XSLT ...
    <!-- fin première partie -->
    <xsl:for-each select="...">
        <!-- deuxième partie -->
         ... texte ou instructions XSLT ...
        <!-- fin deuxième partie -->
    </xsl:for-each>
    <!-- troisième partie -->
    ... texte ou instructions XSLT ...
    <!-- fin troisième partie -->
    <!-- fin du modèle de transformation -->
 </xsl:template>

Exemple

Saison.xsl
<?xml version="1.0" encoding="UTF-8"?>
<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='Concert'>
        Après le concert 
        <xsl:value-of select="Organisation"/> du <xsl:value-of select="Date"/>,
        il y aura encore les spectacles suivants :
        <xsl:for-each select="/Saison/Théâtre">
            Théâtre (<xsl:value-of select="Organisation"/>), 
            le <xsl:value-of select="Date"/>
        </xsl:for-each>
        Rappel des salles :
        <xsl:value-of select="Lieu"/>
    </xsl:template>
    
    <xsl:template match='Organisation'>
    </xsl:template>
    
    <xsl:template match='Date'>
    </xsl:template>
    
    <xsl:template match='Heure'>
    </xsl:template>
    
    <xsl:template match='Lieu'>
        <xsl:value-of select="."/>
    </xsl:template>
    
</xsl:stylesheet>
Première partie
Après le concert 
<xsl:value-of select="Organisation"/> du <xsl:value-of select="Date"/>,
il y aura encore les spectacles suivants :
Deuxième partie
Théâtre (<xsl:value-of select="Organisation"/>), 
le <xsl:value-of select="Date"/>
Troisième partie
Rappel des salles :
<xsl:value-of select="Lieu"/>
Rappel des salles :
Chapelle des Ursules
<xsl:template match='Lieu'>
        <xsl:value-of select="."/>
</xsl:template>
        Après le concert  Anacréon  du Samedi 9 Octobre 1999  20H30 
        ,
        il y aura encore les spectacles suivants :
        
            Théâtre ( Masques et Lyres ), le Mardi 19 Novembre 1999  21H 
        
            Théâtre ( Masques et Lyres ), le Mercredi 20 Novembre 1999  21H30 
        
        Rappel des salles :
        Chapelle des Ursules
    
        
        
        Salle des Cordeliers
    
    
        
        
        Salle des Cordeliers
<xsl:template match='/|*'>
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match='/|*'>
    <xsl:apply-templates/>
</xsl:template>

Instruction xsl:sort

Bande-annonce

CDtheque.xml
<?xml version="1.0" encoding="UCS-2" standalone="yes"?>

<CDthèque>
    
    <Compositeurs>
    
        <Compositeur>
            <nom> Couperin </nom> 
            <prénom> Louis </prénom>
            <actifVers> 1670 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Simpson </nom> 
            <prénom> Thomas </prénom>
            <actifVers> 1610 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Faugues </nom> 
            <prénom> Guillaume </prénom>
            <actifVers> 1460 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Aristophane </nom> 
            <prénom> fils de Philippos d'Athènes </prénom>
            <actifVers> -410 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Simpson </nom> 
            <prénom> Christopher </prénom>
            <actifVers> 1640 </actifVers>
        </Compositeur>
        
    </Compositeurs>
    
</CDthèque>
CDtheque.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="Compositeurs">
        <xsl:for-each select="Compositeur">
            <xsl:sort select="nom"/>
            <xsl:value-of select="nom"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
Résultat
     Aristophane  Couperin  Faugues  Simpson  Simpson
CDtheque.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="Compositeurs">
        <xsl:for-each select="Compositeur">
            <xsl:sort select="actifVers" data-type="number"/>
            <xsl:value-of select="nom"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
Résultat
     Aristophane  Faugues  Simpson  Simpson  Couperin 

Syntaxe

<xsl:sort/>

Règle XSLT typique

<xsl:template match="... motif (pattern) ...">
    ...
    <xsl:for-each select="...">
        <xsl:sort/>
        <!-- modèle de transformation propre au for-each -->
         ... texte ou instructions XSLT ...
        <!-- fin du modèle de transformation -->
    </xsl:for-each>
    ...
</xsl:template> 
<xsl:template match="... motif (pattern) ...">
    ...
    <xsl:apply-templates>
        <xsl:sort/>
    </xsl:apply-templates>
    ...
</xsl:template> 

Sémantique

Exemple

Saison.xml
<?xml version="1.0" encoding="UTF-8"?>
<Saison>
    <Concert> 
        <Organisation> Pygmalion </Organisation>
        <Date>Samedi 9 Octobre 1999 <Heure> 20H30 </Heure> </Date>
        <Lieu>Chapelle des Ursules</Lieu>
    </Concert> 
    <Théâtre> 
        <Organisation> Masques et Lyres </Organisation>
        <Date>Mardi 19 Novembre 1999 <Heure> 21H </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
    <Théâtre> 
        <Organisation> Aristophane </Organisation>
        <Date>Mercredi 20 Novembre 1999 <Heure> 21H30 </Heure> </Date>
        <Lieu>Salle des Cordeliers</Lieu>
    </Théâtre> 
</Saison>
Saison.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method='text' encoding='UTF-8'/>

    <xsl:template match='/'>
        <xsl:apply-templates/>
    </xsl:template>
    
    <xsl:template match='Saison'>
        Manifestations au programme
        <xsl:apply-templates> <xsl:sort/> </xsl:apply-templates>
        Réservations 10 jours avant la date.
    </xsl:template>
    
    <xsl:template match='Concert'>
        Concert : <xsl:value-of select="."/>
    </xsl:template>
    
    <xsl:template match='Théâtre'>
        Théâtre : <xsl:value-of select="."/>
    </xsl:template>
    
</xsl:stylesheet>
Résultat
        Manifestations au programme
         
 
     
    
    
        Théâtre :  
         Aristophane 
        Mercredi 20 Novembre 1999  21H30  
        Salle des Cordeliers
    
        Théâtre :  
         Masques et Lyres 
        Mardi 19 Novembre 1999  21H  
        Salle des Cordeliers
    
        Concert :  
         Pygmalion 
        Samedi 9 Octobre 1999  20H30  
        Chapelle des Ursules
    
        Réservations 10 jours avant la date.
    

Variantes syntaxiques

<xsl:sort select="..."     order="..." 
          case-order="..." lang="..."  data-type="..."/>

Attribut select

Signification
Valeur possible
Valeur par défaut

Autres attributs

Exemple

CDtheque.xml
<?xml version="1.0" encoding="UCS-2" standalone="yes"?>

<CDthèque>
    
    <Compositeurs>
    
        <Compositeur>
            <nom> Couperin </nom> 
            <prénom> Louis </prénom>
            <actifVers> 1670 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Simpson </nom> 
            <prénom> Thomas </prénom>
            <actifVers> 1610 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Faugues </nom> 
            <prénom> Guillaume </prénom>
            <actifVers> 1460 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Aristophane </nom> 
            <prénom> fils de Philippos d'Athènes </prénom>
            <actifVers> -410 </actifVers>
        </Compositeur>
    
        <Compositeur>
            <nom> Simpson </nom> 
            <prénom> Christopher </prénom>
            <actifVers> 1640 </actifVers>
        </Compositeur>
        
    </Compositeurs>
    
</CDthèque>
CDtheque.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="Compositeurs">
        <xsl:for-each select="Compositeur">
            <xsl:sort select="nom"/>
            <xsl:value-of select="nom"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
     Aristophane  Couperin  Faugues  Simpson  Simpson
CDtheque.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="Compositeurs">
        <xsl:for-each select="Compositeur">
            <xsl:sort select="actifVers" data-type="number"/>
            <xsl:value-of select="nom"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
     Aristophane  Faugues  Simpson  Simpson  Couperin 
     Faugues  Simpson  Simpson  Couperin  Aristophane 

Tri à clés multiples

CDtheque.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="Compositeurs">
        <xsl:for-each select="Compositeur">
            <xsl:sort select="nom"/>
            <xsl:value-of select="nom"/>
            <xsl:value-of select="prénom"/>;
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
     Aristophane  fils de Philippos d'Athènes ;
         Couperin  Louis ;
         Faugues  Guillaume ;
         Simpson  Thomas ;
         Simpson  Christopher ; 
CDtheque.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="Compositeurs">
        <xsl:for-each select="Compositeur">
            <xsl:sort select="nom"/>
            <xsl:sort select="prénom"/>
            <xsl:value-of select="nom"/>
            <xsl:value-of select="prénom"/>;
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
     Aristophane  fils de Philippos d'Athènes ;
         Couperin  Louis ;
         Faugues  Guillaume ;
         Simpson  Christopher ;
         Simpson  Thomas ; 

Instruction xsl:copy-of

Bande-annonce

Concert.xml
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Concert>
    
    <Date>Jeudi 17 Janvier 2002, 20H30</Date>
    <Lieu>Chapelle des Ursules</Lieu>

    <Interprètes>
        <Interprète>
            <Nom> Jonathan Dunford </Nom>
            <Instrument>Basse de viole</Instrument>
        </Interprète>
    
        <Interprète>
            <Nom> Silvia Abramowicz </Nom>
            <Instrument>Basse de viole</Instrument>
        </Interprète>
    </Interprètes>

</Concert>
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='xml' encoding='ISO-8859-1' indent='yes' />

    <xsl:template match="Interprètes">
        <Musiciens>
        <xsl:copy-of select="Interprète"/>
        </Musiciens>
    </xsl:template>
    
    <xsl:template match="text()"></xsl:template>
    
</xsl:stylesheet>
Résultat
<?xml version="1.0" encoding="ISO-8859-1"?>
<Musiciens>
   <Interprète>
            
      <Nom> Jonathan Dunford </Nom>
            
      <Instrument>Basse de viole</Instrument>
        
   </Interprète>
   <Interprète>
            
      <Nom> Silvia Abramowicz </Nom>
            
      <Instrument>Basse de viole</Instrument>
        
   </Interprète>
</Musiciens>

Syntaxe

<xsl:copy-of select="... chemin de localisation ..."/>

Règle XSLT typique

<xsl:template match="... motif (pattern) ...">
    ...
    <xsl:copy-of select="..."/>
    ...
</xsl:template> 

Sémantique

Exemple trivial

Concert.xml
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Concert>
    
    <Date>Jeudi 17 Janvier 2002, 20H30</Date>
    <Lieu>Chapelle des Ursules</Lieu>

    <Interprètes>
        <Interprète>
            <Nom> Jonathan Dunford </Nom>
            <Instrument>Basse de viole</Instrument>
        </Interprète>
    
        <Interprète>
            <Nom> Silvia Abramowicz </Nom>
            <Instrument>Basse de viole</Instrument>
        </Interprète>
    </Interprètes>

</Concert>
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='xml' encoding='ISO-8859-1' indent='yes' />

    <xsl:template match="Interprètes">
        <Musiciens>
        <xsl:copy-of select="Interprète"/>
        </Musiciens>
    </xsl:template>
    
    <xsl:template match="text()"></xsl:template>
    
</xsl:stylesheet>
Résultat
<?xml version="1.0" encoding="ISO-8859-1"?>
<Musiciens>
   <Interprète>
            
      <Nom> Jonathan Dunford </Nom>
            
      <Instrument>Basse de viole</Instrument>
        
   </Interprète>
   <Interprète>
            
      <Nom> Silvia Abramowicz </Nom>
            
      <Instrument>Basse de viole</Instrument>
        
   </Interprète>
</Musiciens>

Autre exemple

BaseProduits.xml
<?xml version="1.0" encoding="UCS-2" standalone="yes"?>
<BaseProduits>

   <LesProduits>
   
      <Livre ref="vernes1" NoISBN="193335" gamme="roman" media="papier">
         <refOeuvres>
            <Ref valeur="20000lslm"/>
         </refOeuvres>
         <Prix valeur="40.5" monnaie="FF"></Prix>
         <Prix valeur="5" monnaie="£"/>
      </Livre>
   
      <Livre 
         ref="boileaunarcejac1" NoISBN="533791" gamme="roman" media="papier">
         <refOeuvres>
            <Ref valeur="liatlc.bn"/>
         </refOeuvres>
         <Prix valeur="30" monnaie="FF"/>
         <Prix valeur="3" monnaie="£"/>
      </Livre>
   
      <Enregistrement 
         ref="marais1" RefEditeur="LC000280" gamme="violedegambe" media="CD">
         <refOeuvres>
            <Ref valeur="marais.folies"/>
            <Ref valeur="marais.pieces1685"/>
         </refOeuvres>
         <Interprètes>
            <Interprète nom="Jonathan Dunford">
               <Role xml:lang="fr"> Basse de viole </Role>
               <Role xml:lang="en"> Bass Viol </Role>
            </Interprète>
            <Interprète nom="Sylvia Abramowicz">
               <Role xml:lang="fr"> Basse de viole </Role>
               <Role xml:lang="en"> Bass Viol </Role>
            </Interprète>
            <Interprète nom="Benjamin Perrot">
               <Role xml:lang="fr"> Théorbe et guitare baroque </Role>
               <Role xml:lang="en"> Theorbo and baroque guitar </Role>
            </Interprète>
            <Interprète nom="Freddy Eichelberger">
               <Role xml:lang="fr"> Clavecin </Role>
               <Role xml:lang="en"> Harpsichord </Role>
            </Interprète>
         </Interprètes>
         <Titre xml:lang="fr"> Les Folies d'Espagne et pièces inédites </Titre>
         <Titre xml:lang="en"> Spanish Folias and unedited music </Titre>
         <Prix valeur="140" monnaie="FF"/>
         <Prix valeur="13" monnaie="£"/>
      </Enregistrement>
   
      <Matériel 
         ref="HarKar1" refConstructeur="XL-FZ158BK" 
         gamme="lecteurCD" marque="HarKar">
         <refCaractéristiques>
            <Ref valeur="caracHarKar1"/>
         </refCaractéristiques>
         <Prix valeur="4500" monnaie="FF"/>
         <Prix valeur="400" monnaie="£"/>
      </Matériel>
      
   </LesProduits>
   
   <!-- ... etc : le fichier continue avec d'autres éléments -->
   
</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='xml' encoding='ISO-8859-1' indent='yes' />

   <xsl:template match="/">
      <Livres>
      <xsl:apply-templates/>
      </Livres>
   </xsl:template>
   
   <xsl:template match="Livre">
      <xsl:copy-of select="."/>
   </xsl:template>
   
   <xsl:template match="text()"></xsl:template>
   
</xsl:stylesheet>
livres.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<Livres>
<Livre ref="vernes1" NoISBN="193335" gamme="roman" media="papier">
         <refOeuvres>
            <Ref valeur="20000lslm"/>
         </refOeuvres>
         <Prix valeur="40.5" monnaie="FF"/>
         <Prix valeur="5" monnaie="£"/>
      </Livre>
<Livre ref="boileaunarcejac1" NoISBN="533791" gamme="roman" media="papier">
         <refOeuvres>
            <Ref valeur="liatlc.bn"/>
         </refOeuvres>
         <Prix valeur="30" monnaie="FF"/>
         <Prix valeur="3" monnaie="£"/>
      </Livre>
</Livres>
livres.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<Livres><Livre ref="vernes1" NoISBN="193335" gamme="roman" media="papier">
         <refOeuvres>
            <Ref valeur="20000lslm"/>
         </refOeuvres>
         <Prix valeur="40.5" monnaie="FF"/>
         <Prix valeur="5" monnaie="£"/>
      </Livre><Livre ref="boileaunarcejac1" NoISBN="533791" gamme="roman" media="papier">
         <refOeuvres>
            <Ref valeur="liatlc.bn"/>
         </refOeuvres>
         <Prix valeur="30" monnaie="FF"/>
         <Prix valeur="3" monnaie="£"/>
      </Livre></Livres>
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='xml' encoding='ISO-8859-1' indent='yes' />

   <xsl:template match="/">
      <Livres>
      <xsl:apply-templates/>
      </Livres>
   </xsl:template>
   
   <xsl:template match="Livre">
      <xsl:copy-of select="."/>
   </xsl:template>
   
</xsl:stylesheet>
livres.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<Livres>

    
    
        <Livre ref="vernes1" NoISBN="193335" gamme="roman" media="papier">
            <refOeuvres>
                <Ref valeur="20000lslm"/>
            </refOeuvres>
            <Prix valeur="40.5" monnaie="FF"/>
            <Prix valeur="5" monnaie="£"/>
        </Livre>
    
        <Livre ref="boileaunarcejac1" NoISBN="533791" gamme="roman" media="papier">
            <refOeuvres>
                <Ref valeur="liatlc.bn"/>
            </refOeuvres>
            <Prix valeur="30" monnaie="FF"/>
            <Prix valeur="3" monnaie="£"/>
        </Livre>
    
        
            
                
                
            
            
                
                     Basse de viole 
                     Bass Viol 
                
                
                     Basse de viole 
                     Bass Viol 
                
                
                     Théorbe et guitare baroque 
                     Theorbo and baroque guitar 
                
                
                     Clavecin 
                     Harpsichord 
                
            
             Les Folies d'Espagne et pièces inédites 
             Spanish Folias and unedited music 
            
            
        
    
        
            
                
            
            
            
        
        
    
    
    
    
</Livres>
preceding-sibling::*[1] Table following-sibling::*[1]