4.1.5.3  Mode Attribut

(Noch) kürzer geht es dagegen mit dem mode Attribut: XSLT Konstrukte Mode Attribut

<xsl:template match="/">
    <xsl:result-document href="soll.xml">
        <xsl:apply-templates mode="soll"/>
    </xsl:result-document>
    <xsl:result-document href="haben.xml">
        <xsl:apply-templates mode="haben"/>
    </xsl:result-document>
</xsl:template>
    
<xsl:template match="node()|@*" mode="#all">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*" mode="#current"/>
    </xsl:copy>
</xsl:template>
    
<xsl:template match="eintrag[@art='soll']" mode="haben"/>
<xsl:template match="eintrag[@art='haben']" mode="soll"/>
Plain Text

Der Trick ist hier, dass im jeweils anderen Modus, gerade die ausgewählten Knoten nicht kopiert werden, was schliesslich die Eingabe korrekt in Soll und Haben aufteilt. Wenn wir weitere Logik hinzufügen wollen, müssten wir die Templates ein bisschen umbauen, was nicht weiter tragisch sein sollte.

Der Trade-Off Trade-Off besteht also aus den meist konkurrierenden Zielen Redundanz einzusparen, d.h. den Quelltext so kurz und knapp wie möglich zu gestalten, und einer zukünftigen leichten Erweiterbarkeit.