Identitätstransformation in XSLT 3.0
David Maus, 11. Apr 2018
Eine Identitätstransformation ist bei meiner Arbeit oft Ausgangspunkt von inkrementellen Änderungen einer XML-Datei. Während man in XSLT 2.0 und XSLT 1.0 noch ein eigenes Template schreiben musste, dass rekursiv alle Knoten des Quelldokuments kopiert, so kürzt sich die Identitätstransformation in XSLT 3.0 auf eine Zeile zusammen.
<xsl:transform version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:mode on-no-match="shallow-copy"/> </xsl:transform>
Das
on-no-match
wählt die integrierten Verarbeitungsregeln (
built-in template rules) aus, die für den unbenannten Modus (
unnamed mode) angewendet werden. In 3.0 stehen
sechs verschiedene Regelsätze zur Verfügung.
deep copy
|
Knoten werden unverändert und einschließlich ihrer Kindknoten in das Ausgabedokument geschrieben. Verarbeitungsregeln werden nicht auf die Kindknoten angewendet. |
---|---|
shallow-copy
|
Knoten werden unverändert in das Ausgabedokument geschrieben. Verarbeitungsregeln werden auf die Kindknoten angewendet. |
deep-skip
|
Knoten werden ignoriert. Verarbeitungsregeln werden nicht auf die Kindknoten angewendet. |
shallow-skip
|
Knoten werden ignoriert. Verarbeitungsregeln werden auf die Kindknoten angewendet. |
fail
|
Die Verarbeitung wird abgebrochen. |