<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 | |
|
|
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>. |