Modularisierung und Modi

(Auszug aus "XSLT Kochbuch" von Sal Mangano)

Problem

Die Einschränkungen von XSLT 1.0 hinsichtlich der Verwendung von Modi führten oft zur Verdopplung von Code oder zu zusätzlichem Aufwand.

Lösung

Verwenden Sie die Fähigkeiten des neuen XSLT 2.0-Attributs mode, um Codeverdopplungen zu eliminieren. Stellen Sie sich ein einfaches Beispiel eines Stylesheets vor, das zwei unterschiedliche Modi verwendet, um ein Dokument in zwei Durchläufen zu verarbeiten. Bei jedem Durchlauf würden Sie gern standardmäßig Textknoten ignorieren. In XSLT 1.0 müssten Sie etwa Folgendes schreiben:

<xsl:template match="text( )" mode="mode1"/>
<xsl:template match="text( )" mode="mode2"/>

In 2.0 dagegen können Sie die Redundanz vermeiden:

<xsl:template match="text( )" mode="mode1 mode2"/>

Oder falls Sie vorhaben, in allen Modi zu filtern:

<xsl:template match="text( )" mode="#all"/>

Zugegeben, dies ist nur eine kleine Verbesserung, die sich aber für Stylesheets auszahlt, die komplexer sind, eine größere Anzahl von Modi verwenden, bei denen die Modi viel gemeinsamen Code haben oder die häufig bearbeitet werden.

Diskussion

Eine Faustregel, die ich befolge, wenn ich in 2.0 Modi benutze, lautet, dass ich immer #current anstelle eines explizit benannten Modus verwende, wenn ich vorhabe, die Verarbeitung im aktuellen Modus fortzusetzen:

<xsl:template match="author" mode="index">
  <div class="author">
    <xsl:apply-templates mode="#current"/>
  </div>
</xsl:template>

Dies hat zwei unmittelbar nützliche Konsequenzen. Falls Sie erstens später beschließen, dass Sie für den Modus einen schlechten Namen gewählt haben, und diesen ändern wollen, müssen Sie nicht alle Aufrufe von xsl:apply-templates ändern. Erweitern Sie zweitens später das Template um neue Modi, funktioniert dieses weiterhin ohne zusätzliche Änderung:

<xsl:template match="author" mode="index body">
  <div class="author">
    <xsl:apply-templates mode="#current"/>
  </div>
</xsl:template>

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2006 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT Kochbuch" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O'Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de