次の方法で共有


document 関数

入力ストリームで提供される初期データにはない、XSLT スタイル シートから他の XML リソースを取得する方法を提供します。

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

解説

document() 関数の効果は、提供される引数の型と数によって変わります。

  • 1 つの引数だけが提供され、その引数が文字列の場合、document() 関数はその文字列を URL として扱い、ドキュメントをノード セットとして読み出します。 コードの説明については、以下の例 1 を参照してください。

  • 1 つの引数だけが提供され、その引数がノード セットの場合、そのノード セット内の各ノードは URL として扱われ、関数は参照されているすべてのドキュメントの和集合を返します。 コードの説明については、以下の例 2 を参照してください。

  • 2 つの引数を指定する場合、2 番目の引数はノード セットにする必要がありますが、最初の引数は文字列またはノード セットのどちらかにできます。 2 番目の引数が指定されている場合、その引数は基本 URL を示す役割を果たし、最初の引数の内容はその相対となります。 コードの説明については、以下の例 3 を参照してください。

  • document() 関数に空の文字列が渡された場合、結果は、null でない 2 番目の引数が与えられない限り、XSLT ドキュメント自体のソース XML となります。 その場合、ドキュメントの URL は 2 番目の要素に含まれているノードの基本 URL となります。

XML ドキュメントが、引数として絶対 URL を指定した document() 関数を使用して ASP ページ内からダウンロードされる場合は、以下の JScript コード フラグメントに示されているように、すべての変換の開始前に XSLT スタイル シートを保持する DOM オブジェクトの ServerHTTPRequest プロパティを true に設定する必要があります。

xsltDom.setProperty("ServerHTTPRequest", true);

これは、MSXML はファイルのダウンロードをサポートするための既定として URLMON.dll を使用するためです。 ただし、ASP は URLMON をサポートしていません。 そのため、ダウンロードの代替方法として WinHTTP.dll を選択するように、このプロパティを設定する必要があります。

例 1

この例では、XSLT スタイル シート (document.xsl) が次の手順を実行します。

  1. document() 関数を使用して、ソース XML ドキュメント (document.xml) 内で参照されている 2 つの XML ドキュメント (hrGroup.xml および myGroup.xml) をダウンロードします。

  2. ダウンロードしたドキュメントから <group> 要素を抽出します。

  3. 抽出した要素を結果の XML ドキュメントに挿入します。

変換の効果は document.xml 内の参照を解決することです。 外部 XML ドキュメントの参照に相対パスが使用されている場合、基本 URL は XSLT スタイル シートの URL です。

変換が ASP ページ (document.asp) 内のスクリプトから開始される場合、ServerHTTPRequest プロパティは true に設定されます。 変換が JScript (document.js) 内で開始され、Windows スクリプト ホストまたは HTML ページ内で実行される場合、これは必要ありません。 ここでは Windows スクリプト ホストが使用されています。

XML ファイル (document.xml)

参照されている XML ファイル 1 (hrGroup.xml)

参照されている XML ファイル 2 (myGroup.xml)

XSLT ファイル (document.xsl)

ASP ファイル (document.asp)

JScript ファイル (document.js)

手順を次に示します。

  1. 上記のコード サンプルをコピーしてローカル ドライブ上のファイルに貼り付けます。

  2. 与えられた名前と拡張子でファイルを保存します。

  3. ローカル コンピューター上の既定の Web サイトの下に hr というエイリアスで新しい仮想ディレクトリを作成します。 リモート コンピューターを Web サーバーとして使用している場合は、document.xml 内の href 属性の値にある localhost を Web サーバーのホスト名に変更します。 既存の仮想ディレクトリを使用する場合は、同じ href 属性値にある hr をディレクトリ内にある任意のエイリアスに変更します。 hrGroup.xml ファイルを Web サーバーの仮想ディレクトリが作成されているディレクトリに移動します。

  4. 次の URL を使用して ASP ページを Internet Explorer ブラウザー ウィンドウから開きます。

    https://localhost/hr/document.asp

  5. 次の Windows スクリプト ホスト コマンドを使用して JScript ファイルを実行します。

cscript document.js

出力

以下にプロセッサ出力を示します (わかりやすくするためにインデントを追加してあります)。

例 2

この例は、document 関数の引数としてノード セットを使用する効果を説明するものです。

XML ファイル (document1.xml)

XSLT スタイル シート (document1.xsl)

手順を次に示します。

  1. msxsl.exe をダウンロードしていない場合は msdn.microsoft.com からダウンロードします。

  2. コマンド プロンプトで、document1.xmldocument1.xsl を保存したディレクトリから以下のコマンドを入力します。

msxsl document1.xml document1.xsl

出力

出力は、上記の例 1 で作成された出力に似ています。

例 3

この例は、document 関数の呼び出し時に 2 つの引数を使用する効果を示すものです。 ノード セットにする必要がある 2 番目の引数は、最初の引数の基本 URL としての役割を果たします。 2 番目の引数がない場合、最初の引数の基本 URL は XSLT ファイルの基本 URL になります。

XSLT スタイル シート (document2.xsl)

XML ファイル 1 (b.xml)

XML ファイル 2 (subDir/a.xml)

手順を次に示します。

  1. document2.xslb.xml を作業ディレクトリに保存します。

  2. コマンド プロンプトから、作業ディレクトリ内で次のコマンドを入力します。

msxsl.exe a.xml document2.xsl

出力

<?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>

参照

リファレンス

<xsl:copy-of> 要素