<xsl:copy> |
Diese Anweisung macht eine oberflächliche Kopie eines Elements und fügt sie in den Ergebnisbaum ein. Sie kopiert den aktuellen Knoten und seine Namensraumknoten. Die untergeordneten Elemente des aktuellen Knotens sowie etwaige Attribute werden nicht kopiert.
Kategorie
Anweisung
Obligatorische Attribute
Keine
Optionale Attribute
use-attribute-sets Listet eine oder mehrere Attributmengen auf, die vom erzeugten Element verwendet werden sollen. Wenn Sie mehrere Attributmengen angeben, sollten Sie die Namen durch Leerraumzeichen trennen. Weitere Erläuterungen erhalten Sie in der Beschreibung des Elements < xsl:attribute-set > .
Inhalt
Eine XSLT-Vorlage
Übergeordnetes Element
<xsl:copy> erscheint innerhalb einer Vorlage.
Definition
XSLT-Abschnitt 7.5, Kopieren
Beispiel
Die Funktionsweise der Anweisung <xsl:copy> wird durch ein Beispiel veranschaulicht, das ein Element in den Ergebnisbaum kopiert. Beachten Sie, dass die Verarbeitung der Attributknoten des Ausgangsdokuments nicht ausdrücklich angefordert wird, so dass der Ergebnisbaum keine Attribute enthält. Hier das Stylesheet:
    <?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>
Dieses Stylesheet wird mit dem folgenden XML-Dokument getestet:
    <?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>
Hier die Ergebnisse:
    <?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>
<xsl:copy> fertigt nur eine oberflächliche Kopie an, bietet aber auch mehr Kontrolle über die Ausgabe als das Element <xsl:copy-of>. Allerdings müssen Sie jeden untergeordneten Knoten und jeden Attributknoten ausdrücklich angeben, der in den Ergebnisbaum kopiert werden soll. Das Element <xsl:apply-templates> wählt alle Texte, Elemente, Kommentare und Verarbeitungsanweisungen aus, die dem aktuellen Element untergeordnet sind. Ohne dieses Element würde der Ergebnisbaum nur ein einziges, leeres <report>-Element enthalten. Vergleichen Sie diesen Ansatz mit dem Beispiel zum Element <xsl:copy-of>.