[3] [[XSLT]] の関数 [CODE[[[節集合]] ]] [CODE(XPathf)[document]] ([VAR[物体]], [VAR[節集合]]?)]] は、外部 [SUP[(>>10)]] [[XML]] 文書を節集合として返します。 [10] [Q[''外部'' XML 文書]]とは言っても、 XSLT スタイル・シート自分自身を指定することもできます。 [11] 引数の解釈は微妙に複雑です。 ,引数 1 ,引数 2 ,結果 ,"{[VAR[節[SUB[1]]]],...,[VAR[節[SUB[[VAR[n]]]]]]}" ,(なし) ,"[CODE(XPath)[[CODE(XPathf)[document]](文字列値 ([VAR[節[SUB[1]]]]), {[VAR[節[SUB[1]]]]}) | [CODE(XPathf)[document]](文字列値 ([VAR[節[SUB[[VAR[n]]]]]]), {[VAR[節[SUB[[VAR[n]]]]]]})]]" ,"{[VAR[節[SUB[1]]]],...,[VAR[節[SUB[[VAR[n]]]]]]}" ,節集合 ,"[CODE(XPath)[[CODE(XPathf)[document]](文字列値 ([VAR[節[SUB[1]]]]), [VAR[節集合]]) | [CODE(XPathf)[document]](文字列値 ([VAR[節[SUB[[VAR[n]]]]]]), [VAR[節集合]])]]" ,[VAR[節集合以外]] ,[VAR[節集合]]? ,[CODE(XPath)[[CODE(XPathf)[string]] ([VAR[節集合以外]])]] という URI の木の節集合 [9] '''基底 URI''': 第1引数が[[相対URI]] である場合には、 第2引数の節集合のうち、[[文書順]]で最初の[[節]]の[[文字列値]]を[[基底URI]] として解決します。第2引数が与えられていない場合には、 [CODE(XPathf)[document()]] 関数が含まれる式が含まれる節の基底 URI を使います。 [4] >>3 第2引数が空節集合だったらどうするんだろう。。。 [7] >>4 誤りとし、通知又は空節集合を結果にします。 [5] '''資源を得られない場合''': 与えられた URI 参照の資源を得られなかった場合には、 [[誤り]]とし、通知するか又は空節集合を返します。 [WEAK[なお、実装者は対応している URI [[scheme]] を文書化しておくべきです。]] 資源は[[媒体型]]に関わらず XML として解釈します。 [CODE(MIME)[[[text/[VAR[*]]]]]] であれば [CODE(MIME)[[[text/xml]]]] と同様に、 そうでなければ [CODE(MIME)[[[application/xml]]]] として扱います。 [8] '''素片識別子''': [[URI参照]]が[[素片識別子]]を含む場合、その素片識別子が識別する部分を返します。 但し、例えば[[文節]]の何文字目から〜のような [[XPath]] 的に扱えない素片などは扱えません。 扱えない素片は誤りとし、通知するか、又は空節集合を返します。 [WEAK[実装は素片を扱える媒体型を文書化しておくべきです。]] [6] >>8 [[RFC 3023]] とは違った独自の定義がある XML 系媒体型だとまずいことになる予感。。。 [14] 実装によっては安全上の理由から取得できる資源を URI 参照の種類やホスト名などによって制限していることもあります。 そうである場合もそうでない場合も、 単純に変換して Web ブラウザで表示するなどのごく簡単な操作以上のことをする場合は、 利用者の入力に依存して URI 参照を決定したり外部の資源を使ったりする時には安全について十分な配慮が必要です。 ([[名無しさん]] [sage]) [15] '''Firefox で [CODE(XPathf)[document()]] が機能しない''': [[Firefox]] で [CODE(XPathf)[document()]] が機能しないことがあります。ブラウザ画面には異常を示すメッセージなどは表示されませんが、意図した通りの[[結果木]]ができません。 そのような場合は、 '''JavaScript コンソール''' (ツール → JavaScript コンソール) にメッセージが出ていないか確認してみてください。 他の鯖にある [[XML]] [[文書]]を参照しようとすると、安全のために制限されて取得できないようです。