David Maus

Identitätstransformation in XSLT 3.0

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.

Identitätstransformation in XSLT 3
<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.

Regelsätze für integrierte Verarbeitungsregeln
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.