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