XSL-Parameter / XQuery-Variablen
Mit dem Befehl XSL-Parameter/XQuery-Variablen öffnen Sie das Dialogfeld "XSLT-Eingabeparameter/externe XQuey-Variablen" (siehe Abbildung unten). Sie können den Namen und die dazugehörigen Werte von einem oder mehreren Parametern eingeben, die Sie an das XSLT Stylesheet übergeben möchten, oder den Namen und die dazugehörigen Werte von einer oder mehreren XQuery-Variablen, die an das XQuery-Dokument übergeben werden sollen. Diese Parameter werden in XMLSpy folgendermaßen verwendet:
•Wenn ein XML-Dokument über den Befehl XSL-Transformation aus dem Menü "XSL/XQuery" transformiert wird, werden die derzeit im Dialogfeld gespeicherten Parameterwerte an das ausgewählte XSLT-Dokument übergeben und für die Transformation verwendet.
•Wenn ein XQuery-Dokument über den Befehl XQuery-Ausführung aus dem Menü "XSL/XQuery" verarbeitet wird, werden die aktuell im Dialogfeld gespeicherten externen XQuery-Variablen zur Ausführung an das XQuery-Dokument übergeben.
Anmerkung: Parameter oder Variablen, die Sie im Dialogfeld "XSLT-Eingabeparameter/externe XQuery-Variablen" eingeben, werden nur an den integrierten Altova XSLT-Prozessor übergeben. Wenn Sie daher MSXML oder einen anderen externen Prozessor verwenden, den Sie konfiguriert haben, werden diese Parameter nicht an diesen Prozessor übergeben.
Anmerkung: Es handelt sich nicht um einen Fehler, wenn ein XSLT-Parameter oder eine externe XQuery-Variable im Dialogfeld "XSLT-Eingabeparameter/externe XQuery-Variablen" definiert, aber im XSLT/XQuery-Dokument oder der Transformation nicht verwendet wird.
Verwendung von XSLT-Parametern
Bei dem Wert, den Sie für den Parameter eingeben, handelt es sich um einen XPath-Ausdruck. Beachten Sie, dass Strings in XPath in Anführungszeichen gesetzt werden.
Sobald Sie im Dialogfeld die Parameterwerte eingegeben haben, werden diese für alle zukünftigen Transformationen verwendet, bis sie ausdrücklich gelöscht werden oder die Applikation neu gestartet wird. Parameter, die im Dialogfeld eingegeben wurden, werden für diese Sitzung auf Applikationsebene definiert und werden von diesem Zeitpunkt an bei jeder Transformation, die über die IDE durchgeführt wird, an das jeweilige XSLT-Dokument übergeben. Dies bedeutet:
•Parameter sind nicht mit einem bestimmten Dokument verknüpft und
•Alle Parameter, die im Dialogfeld eingegeben wurden, werden gelöscht, sobald die Applikation (Authentic Desktop) geschlossen wird.
Anmerkung: Nur wenn das aktive Dokument ein XSLT-Dokument ist, ist in der Authentic-Ansicht die Schaltfläche Aus XSL abrufen aktiv. Damit werden die im aktiven XSLT-Dokument deklarierten Parameter zusammen mit ihren Standardwerten in das Dialogfeld eingefügt.
Beispiel für die Verwendung von XSLT-Parametern
Im folgenden Beispiel haben wir ein XML-Dokument, das die Namen von Ländern und deren jeweiliger Hauptstadt enthält:
<document>
<countries>
<country name="USA" capital="Washington DC"/>
<country name="UK" capital="London"/>
<country name="France" capital="Paris"/>
<country name="Russia" capital="Moscow"/>
<country name="China" capital="Beijing"/>
</countries>
</document>
Das folgende XSLT-Dokument generiert ein XML-Dokument, in dem ein Land aus der XML-Datei zusammen mit der Hauptstadt des jeweiligen Landes angezeigt wird. Das Land wird durch Auswahl seines Names als Wert des Parameters namens country (unten gelb markiert) ausgewählt.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="country" select="'USA'"/>
<xsl:template match="countries">
<xsl:for-each select="country[@name=$country]">
<country>
<name><xsl:value-of select="$country"/></name>
<capital><xsl:value-of select="@capital"/></capital>
</country>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Wenn dieses XSLT-Dokument an oben aufgelisteten XML-Dokument ausgeführt wird, erhalten Sie folgendes Ergebnis:
<country><name>USA</name><capital>Washington DC</capital></country>
Wenn Sie nun im Dialogfeld "XSLT-Eingabeparameter/Externe XQuery-Variablen" einen Parameter namens country erstellen und ihm einen Wert geben (siehe Abbildung oben), wird dieser Wert an den Parameter country im XSLT-Stylesheet für die Transformation übergeben. Auf diese Art können Sie zur Laufzeit verschiedene Werte an verschiedene Parameter übergeben.
Anmerkung:
•Wenn Sie den Befehl XSL:FO-Transformation (XSL/XQuery | XSL:FO-Transformation) verwenden, werden Parameter, die im Dialogfeld "XSLT-Eingabeparameter/externe XQuery-Variablen" eingegeben werden, nicht an das Stylesheet übergeben. Damit diese Parameter in der PDF-Ausgabe verwendet werden, führen Sie mittels des Befehls XSLT-Transformation (XSL/XQuery | XSL-Transformation) zuerst eine XSL-FO-Transformation durch und anschließend mit Hilfe des Befehls XSL:FO-Transformation (XSL/XQuery | XSL:FO-Transformation) eine FO-PDF-Transformation.
•Falls Sie einen anderen als den integrierten Altova XSLT-Prozessor verwenden, werden Parameter, die Sie über das Dialogfeld "XSLT-Eingabeparameter" eingeben, nicht an den externen Prozessor übergeben.
Verwendung von externen XQuery-Variablen
Als Wert, den Sie für eine externe XQuery-Variable eingeben, können Sie entweder einen XPath-Ausdruck ohne Anführungszeichen oder einen Textstring innerhalb von Anführungszeichen eingeben. Der Datentyp der externen Variable wird in der Variablendeklaration im XQuery-Dokument angegeben.
Anmerkung: Sobald Sie im Dialogfeld eine Reihe von externen XQuery-Variablen eingegeben haben, werden diese für alle zukünftigen Ausführungen verwendet, bis sie ausdrücklich gelöscht werden oder die Applikation neu gestartet wird. Variablen, die im Dialogfeld eingegeben wurden, werden auf Applikationsebene definiert und werden von diesem Zeitpunkt an bei jeder Transformation, die über die IDE durchgeführt wird, an das jeweilige XSLT-Dokument übergeben. Dies bedeutet:
•Variablen sind nicht mit einem bestimmten Dokument verknüpft und
•Alle Variablen, die im Dialogfeld eingegeben wurden, werden gelöscht, sobald die Applikation (Authentic Desktop) geschlossen wird.
Anwendungsbeispiel für externe XQuery-Variablen
Im folgenden Beispiel wird im XQuery-Dokument eine Variable $first deklariert und anschließend in der Return Clause des FLWOR-Ausdrucks verwendet:
xquery version "1.0";
declare variable $first as xs:string external;
let $last := "Jones"
return concat($first, " ", $last )
Diese XQuery gibt Peter Jones zurück, wenn der Wert der externen Variable (der im Dialogfeld "XSLT-Eingabeparameter/externe XQuery-Variablen" eingegeben wurde) Peter ist. Beachten Sie Folgendes:
•Das externe Schlüsselwort in der Variablendeklaration im XQuery-Dokument gibt an, dass es sich bei dieser Variable um eine externe Variable handelt.
•Die Definition des statischen Typs der Variable ist optional. Wenn der Datentyp für die Variable nicht in der Variablendeklaration angegeben wurde, wird dem Variablenwert der Typ xs:untypedAtomic zugewiesen.
•Wenn im XQuery-Dokument eine externe Variable deklariert wurde, aber keine externe Variable dieses Namens an das XQuery-Dokument übergeben wird, wird eine Fehlermeldung ausgegeben.
•Wenn eine externe Variable deklariert und im Dialogfeld "XSLT-Eingabeparameter/externe XQuery-Variablen" eingegeben wurde, wird diese als Gültigkeitsbereich für das auszuführende XQuery-Dokument verwendet. Wird eine neue Variable dieses Namens im XQuery-Dokument deklariert, setzt diese die externe Variable für den Gültigkeitsbereich vorübergehend außer Kraft. Das unten gezeigte XQuery-Dokument gibt z.B. Paul Jones zurück, obwohl die externe in-scope Variable $first den Wert Peter hat.
xquery version "1.0";
declare variable $first as xs:string external;
let $first := "Paul"
let $last := "Jones"
return concat($first, " ", $last )