2009-08-18 3 views

Antwort

3

Leider mit Standards -konform XSLT 1.0: Nein, das ist nicht möglich.

In XSLT 2.0 kann der Rückgabewert einer Vorlage als Eingabe für eine andere Vorlage verwendet werden. Ein Upgrade auf XSLT 2.0 (mit dem man auch an vielen anderen Fronten einfacher arbeiten kann) würde diese Einschränkung für Sie lösen.

Eine andere Problemumgehung ist die Verwendung der Erweiterungsfunktion node-set: aber als Nicht-Standard wird dies offensichtlich nicht überall identisch unterstützt: siehe http://www.xml.com/pub/a/2003/07/16/nodeset.html für Details.

1

In XSLT 2.0 wird dies unterstützt - erfassen Sie einfach das Ergebnis der ersten Transformation in einem , dann wenden Sie Vorlagen (möglicherweise mit anderen Modus) auf das oberste untergeordnete (oder alle anderen untergeordneten) des enthaltenen XML-Dokuments/Fragments an in der Variable xsl:.

In XSLT 1.0 muss die Erweiterung xxx: node-set() verwendet werden, die den Inhalt der Variablen xsl: (vom Typ RTF - Ergebnisbaumfragment) in ein normales XML-Dokument/Fragment konvertiert.

Diese Extension-Funktion ist ziemlich standardisiert von EXSLT - der "am meisten standardisierten" und weit verbreiteten Bibliothek von XSLT 1.0 Extension-Funktionen.

+0

Obwohl ich die Notwendigkeit für einen "Ergebnisbaumfragment" -Datentyp in 1.0 nie ganz verstanden habe. Es hat mich ziemlich oft gebissen, und ich habe wirklich keine Ahnung, warum es überhaupt existiert. Kannst du das erklären? – Tomalak

+0

@Tomalak Einige Leute, die in der XSLT 1.0 WG waren, teilten mit, dass James Clark dies absichtlich getan hatte, um zu verhindern, dass XSLT als Programmiersprache benutzt wurde ... Natürlich stoppte das nicht die Sprache, nur mit einer Einfache Erweiterungsfunktion und Bibliotheken wie FXSL, man kann alles in XSLT machen. Dann kam XSLT 2.0 und dieser Fehler wurde korrigiert. –

Verwandte Themen