<xsl:copy> |
Effectue une copie superficielle d'un élément dans l'arborescence de résultat. Cet élément ne copie que le nœud actuel et les nœuds d'espace de noms qui lui sont associés. Les enfants du nœud actuel et tous les attributs qui lui sont associés ne sont pas copiés.
Catégorie
Instruction
Attributs obligatoires
Aucun.
Attributs facultatifs
use-attribute-sets Répertorie un ou plusieurs ensembles d'attributs qui devraient être utilisés par cet élément. Si vous indiquez plusieurs ensembles d'attributs, séparez leurs noms par des espaces blancs. Voir la description de l'élément < xsl:attribute-set > pour de plus amples informations.
Contenu
Un modèle XSLT.
Apparaît dans
<xsl:copy> apparaît dans un modèle.
Défini dans
XSLT section 7.5, Copie.
Exemple
L'exemple suivant utilise <xsl:copy> pour copier un élément dans l'arborescence de résultat. Le traitement des nœuds d'attribut du document source n'ayant pas été spécifiquement demandé, l'arborescence de résultat ne contiendra aucun attribut. La feuille de style est la suivante :
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output method="xml"/>

      <xsl:template match="*">
        <xsl:copy>
          <xsl:apply-templates/>

        </xsl:copy>
      </xsl:template>

    </xsl:stylesheet>
La feuille de style est appliquée au document XML suivant :
    <?xml version="1.0"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month sequence="01">
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month sequence="02">
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month sequence="03">
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month sequence="04">
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>
Les résultats sont les suivants :
    <?xml version="1.0" encoding="UTF-8"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month>
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month>
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month>
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month>
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>
L'élément <xsl:copy> effectue une copie superficielle permettant un meilleur contrôle de la sortie que l'élément <xsl:copy-of>. Cependant, vous devez clairement spécifier tous les nœuds enfants ou nœuds d'attribut que vous souhaitez copier dans l'arborescence de résultat. L'élément <xsl:apply-templates> sélectionne l'ensemble des enfants relatifs au texte, aux éléments, aux commentaires et aux instructions de traitement de l'élément actuel ; sans cet élément, l'arborescence de résultat ne contiendrait qu'un seul et unique élément <report> vide. Cette méthode peut être comparée avec celle de l'exemple de l'élément <xsl:copy-of>.