Input XML Dokument in globale Variable schreiben und von überall im XSL zugreifen

Ziel ist es bei einer XSL Template Verarbeitung von einzelnen <record> Tags, bei dem Sub-Tag <referTo> das jeweilige Referenz Tag zu finden und den Inhalt zu verwenden. Anwendungsfall ist z.B. bei EDI Message Strukturbeschreibungen, dass mit <referTo> Tag der Inhalt nicht wiederholt werden muss, sondern nur referenziert wird. Allerdings braucht man gelegentlich trotzdem ein XML Dokument ohne Referenzen sondern mit dem ganzen Inhalt – in unserem Fall um vollständige WorkSheets für ein OOXML Dokument zu erstellen.
Problem:
Wenn das Template für den <record> Tag genutzt wird und dort wiederum das Template für den nächsten <record> Tag aufgerufen wird, ist es nicht mehr möglich auf vorigen <record> Tags zuzugreifen, weil nur der aktuelle Node mit den Subnodes an das Template übergeben wird.

Lösung:
Beim Start des Stylesheets wird das XML Dokument in eine globale Variable geschrieben, welche von jedem Punkt innerhalb des XSL Stylesheets genutzt werden kann und dann stehen wieder alle Nodes zur Verfügung.

Input

Beispiel XML Dokument:

 

XSL/T StyleSheet

XSL welches am Anfang das aktuelle Input-Dokument in eine Variable schreibt und anschließen kann mittels If-Conditions im XPath der richtige Referenzelement gefunden werden.

 

Output

Das Output XML sieht anschließend wie folgt aus:

(Visited 36 times, 1 visits today)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.