Freigeben über


document-Funktion

Bietet eine Möglichkeit, andere XML-Ressourcen vom XSLT-Stylesheet aus über die vom Eingabestream gelieferten Anfangsdaten hinaus abzurufen.

node-set document(object, node-set?)

Hinweise

Die document()-Funktion kann verschiedene Auswirkungen haben. Diese hängen von Typ und Anzahl der angegebenen Argumente ab.

  • Wenn nur ein Argument angegeben wird und dieses Argument eine Zeichenfolge ist, behandelt document() die Zeichenfolge als URL und ruft das Dokument als Knotengruppe ab. Eine Veranschaulichung des Codes finden Sie im unten stehenden Beispiel 1.

  • Wenn nur ein Argument angegeben wird und dieses Argument eine Knotengruppe ist, wird jeder Knoten in dieser Knotengruppe als URL behandelt, und die Funktion gibt die Union aller Dokumente zurück, auf die verwiesen wird. Eine Veranschaulichung des Codes finden Sie im unten stehenden Beispiel 2.

  • Wenn zwei Argumente vorliegen, kann das erste Argument entweder eine Zeichenfolge oder eine Knotengruppe sein. Das zweite Argument muss jedoch eine Knotengruppe sein. Das zweite Argument (wenn angegeben) dient der Angabe der Basis-URL, auf den sich die Inhalte des ersten Arguments beziehen. Eine Veranschaulichung des Codes finden Sie im unten stehenden Beispiel 3.

  • Wenn eine leere Zeichenfolge an die document()-Funktion übergeben wird, liegt als Ergebnis die Quell-XML des XSLT-Dokuments vor, es sei denn, das zweite Argument wird angegeben (und ist nicht NULL). Im letzteren Fall entspricht die URL des Dokuments der Basis-URL des im zweiten Element enthaltenen Knotens.

Wenn ein XML-Dokument mithilfe der document()-Funktion mit einer absoluten URL als Argument aus einer ASP-Seite heruntergeladen wird, muss die ServerHTTPRequest-Eigenschaft auf dem DOM-Objekt, das das XSLT-Stylesheet enthält, auf true festgelegt werden, bevor eine Transformation initialisiert wird. Dies wird im folgenden JScript-Codefragment veranschaulicht:

xsltDom.setProperty("ServerHTTPRequest", true);

Dies liegt darin begründet, dass URLMON.dll von MSXML als Standard zur Unterstützung von Dateidownloads verwendet wird. URLMON wird jedoch nicht von ASP unterstützt. Daher müssen Sie diese Eigenschaft so festlegen, dass WinHTTP.dll als Alternative für Downloads ausgewählt wird.

Beispiel 1

In diesem Beispiel führt das XSLT-Stylesheet (document.xsl) die folgenden Schritte aus:

  1. Es verwendet die document()-Funktion zum Herunterladen von zwei XML-Dokumenten (hrGroup.xml und myGroup.xml), auf die im XML-Quelldokument (document.xml) verwiesen wird.

  2. Es extrahiert die <group>-Elemente aus den heruntergeladenen Dokumenten.

  3. Es fügt die extrahierten Elemente in das resultierende XML-Dokument ein.

Die Transformation führt dazu, dass die Verweise in document.xml aufgelöst werden. Wenn für den Verweis auf das externe XML-Dokument ein relativer Pfad verwendet wird, entspricht die Basis-URL der des XSLT-Stylesheets.

Wenn die Transformation aus einem Skript in einer ASP-Seite (document.asp) initialisiert wird, wird die ServerHTTPRequest-Eigenschaft auf true festgelegt. Dies ist nicht erforderlich, wenn die Transformation in JScript (document.js) initiiert und in Windows Scripting Host oder in einer HTML-Seite ausgeführt wird. In diesem Fall wird Windows Scripting Host verwendet.

XML-Datei (document.xml)

Referenzierte XML-Datei 1 (hrGroup.xml)

Referenzierte XML-Datei 2 (myGroup.xml)

XSLT-Datei (document.xsl)

ASP-Datei (document.asp)

JScript-Datei (document.js)

Probieren Sie es aus!

  1. Kopieren Sie die oben aufgeführten Codebeispiele, und fügen Sie sie in Dateien auf dem lokalen Laufwerk ein.

  2. Speichern Sie die Dateien mit den angegebenen Namen und Erweiterungen.

  3. Erstellen Sie unterhalb der Standard-Website auf Ihrem lokalen Computer ein neues virtuelles Verzeichnis mit dem Namen hr. Wenn Sie einen Remotecomputer als Webserver verwenden, ändern Sie localhost zugunsten des Hostnamens des Webservers im Wert des href-Attributs in document.xml. Wenn Sie ein vorhandenes virtuelles Verzeichnis verwenden, ändern Sie hr im selben href-Attributwert zugunsten des Alias dieses Verzeichnisses. Verschieben Sie die hrGroup.xml-Datei in das Verzeichnis, das als virtuelles Verzeichnis des Webservers festgelegt wurde.

  4. Öffnen Sie die ASP-Seite mit der folgenden URL aus einem Internet Explorer-Browserfenster:

    https://localhost/hr/document.asp

  5. Führen Sie die JScript-Datei mithilfe des folgenden Windows Scripting Host-Befehls aus:

cscript document.js

Ausgabe

Im Folgenden wird die Prozessorausgabe dargestellt, wobei aus Gründen der Übersichtlichkeit Einzüge hinzugefügt wurden.

Beispiel 2

In diesem Beispiel werden die Auswirkungen der Verwendung einer Knotengruppe als Argument für die document-Funktion veranschaulicht.

XML-Datei (document1.xml)

XSLT-Stylesheet (document1.xsl)

Probieren Sie es aus!

  1. Laden Sie msxsl.exe von msdn.microsoft.com herunter, sofern Sie dies noch nicht getan haben.

  2. Geben Sie an einer Eingabeaufforderung den folgenden Befehl aus dem Verzeichnis ein, in dem Sie document1.xml und document1.xsl gespeichert haben.

msxsl document1.xml document1.xsl

Ausgabe

Die Ausgabe ähnelt der im obigen Beispiel 1 entstandenen Ausgabe.

Beispiel 3

In diesem Beispiel wird die Auswirkung der Verwendung von zwei Argumenten beim Aufrufen der document-Funktion veranschaulicht. Das zweite Argument, das eine Knotengruppe sein muss, dient als Basis-URL für das erste Argument. Wenn das zweite Argument fehlt, ist die Basis-URL des ersten Arguments die Basis-URL der XSLT-Datei.

XSLT-Stylesheet (document2.xsl)

XML-Datei 1 (b.xml)

XML-Datei 2 (subDir/a.xml)

Probieren Sie es aus!

  1. Speichern Sie document2.xsl und b.xml in einem Arbeitsverzeichnis.

  2. Geben Sie an der Eingabeaufforderung den folgenden Befehl im Arbeitsverzeichnis ein:

msxsl.exe a.xml document2.xsl

Ausgabe

<?xml version="1.0" encoding="UTF-8"?>
<root>
<!-- One Argument >
<a> one </a>
<a> two </a>
<a> three </a>
<!-- Two Arguments >
<a> I </a>
<a> II </a>
<a> III </a>
</root>

Siehe auch

Verweis

<xsl:copy-of>-Element