4 Stimmen

Herrstellen von Stylesheet-Sharing in XSLT

Ich möchte eine Master-Vorlage in XSLT erstellen, die in einer separaten Datei gespeichert werden kann. Jedes andere Seitenstylesheet teilt es mit xsl:import.

master.xslt

page.xslt

  ... wende etwas seitenabhängiges an

page.xml

 ... etwas seitenabhängiges

Kann ich diese Lösung verbessern?

  • Ich kann nicht von einem Master-Stylesheet ausgehen, weil ich alles xsl:importieren müsste.
  • Ich möchte nicht, dass master.xslt Verweise auf jede einzelne Seite enthält.

Eine andere Entscheidung (die gegen den XSLT-Spirit spricht) könnte folgendermaßen aussehen:

master.xslt

page.xslt

   ... wende etwas seitenabhängiges an

Wir benötigen kein allgemeines Stamm -Element.

2voto

Dimitre Novatchev Punkte 234995

Die Verwendung von ist die richtige Designentscheidung. Genau das ist der Hauptanwendungsfall, für den diese XSLT-Direktive gedacht war.

Man kann sogar noch weiter gehen – nach der -Direktive suchen, und zusätzlich dazu, wie ein importiertes Stylesheet Vorlagen anwenden kann, von deren Aktionen und Bedeutung es absolut nichts weiß. Das Letztere nennt man Higher-Order-Functions und ist in XSLT mit der FXSL-Bibliothek implementiert (vollständig in XSLT geschrieben).

0voto

Marc Gravell Punkte 970173

Das sieht für mich ungefähr richtig aus... sehr üblich für das, was ich in der Vergangenheit verwendet habe (obwohl ich oft benutzt habe, aber beides sollte funktionieren). Die Hauptänderung, die ich vielleicht vornehmen würde, ist das Matchen expliziter zu machen (zumindest im Master-XSLT) - d.h.

damit es nicht versehentlich Seite Elemente an anderen Positionen matcht (zum Beispiel, bei Daten-Paging, wie ).

Eine andere häufige Sache, die ich mache, ist ein "*" Match hinzuzufügen, das xsl:message verwendet, um einen Fehler zu werfen, wenn ich kein spezifischeres Match für ein Element habe. Dies macht es offensichtlicher, wenn man einen Tippfehler hat, etc.

0voto

slott Punkte 3216

Ich bin tatsächlich froh, dieses Beispiel gefunden zu haben, da ich auf der Suche nach Bestätigung war, dass dies tatsächlich der richtige Ansatz für ein Master/Slave-Template-Setup ist. Allerdings haben die bereitgestellten Beispiele auf Tomcat nicht out-of-the-box funktioniert - also hier sind eine funktionierende Reihe von Master / Slave-Dateien, um anderen zu helfen, die nur Copy-Paste können.

Master.xsl :

    test

  Der Inhalt des Templates ist leer - überschreiben im Seitentemplate.

  Das linke Template ist leer - überschreiben im Seitentemplate.

  Das rechte Template ist leer - überschreiben im Seitentemplate.

Und slave.xsl:

  ... wenden Sie etwas seitenabhängiges an

  Und wir haben RECHTEN Inhalt!

  Parameter auf der Seite: 

Hoffentlich kann dies anderen helfen - zögern Sie nicht, mir eine Nachricht zu hinterlassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X