*createDocument method (DOM DOMImplementation 界面) [1] [CODE[[VAR[([CODE(DOMi)[[[Document]]]])]] := [VAR(DOMi)[[[DOMImplementation]]]].[CODE(DOMmethod)[createDocument]] ([VAR(DOMparam)[([CODE(DOMi)[[[DOMString]]]]) namespaceURI]], [VAR(DOMparam)[([CODE(DOMi)[DOMString]]) qualifiedName]], [VAR(DOMparam)[([CODE(DOMi)[[[DocumentType]]]]) doctype]])]] は、新しい文書 ([CODE(DOM)[Document]] ([[文書節]]) 物体) を作成します。 [VAR(DOMparam)[qualifiedName]] には、[[文書要素]]の要素型名を[[修飾名]]で指定します。 [VAR(DOMparam)[namespaceURI]], [VAR(DOMparam)[doctype]] は必要がなければ [CODE(DOM)[null]] でも構いません。 [2] 実行結果: ,返値 ,[CODE(DOM)[[[Document]]]] ,作成された文書 ,例外 [CODE(DOM)[[[DOMException]]]],[CODE(DOMconst)[[[INVALID_CHARACTER_ERR]]]],修飾名に不正な文字 ,例外 [CODE(DOM)[DOMException]],[CODE(DOMconst)[[[NAMESPACE_ERR]]]],修飾名が不正か接頭辞があるのに [VAR(DOMparam)[namespaceURI]] が [CODE(DOM)[null]] か、又は予約名前空間名/接頭辞の不正な利用 ,例外 [CODE(DOM)[DOMException]],[CODE(DOMconst)[[[WRONG_DOCUMENT_ERR]]]],[VAR(DOMparam)[doctype]] が既に他の文書で使われているか、又は異なる実装で作成された [CODE[[VAR(DOM)[doctype]].[CODE(DOMa)[[[ownerDocument]]]]]] は新しく作成された [VAR(DOM)[Document]] に設定されます。 [3] この method は DOM 2 です。 なお、 HTML のみの DOM 実装では実装しなくても構わないことになっています。 [4] 仕様書: =[DOM2] [CITE@en[Document Object Model Core]] -- =[DOM3] [CITE@en[Document Object Model Core]] -- ** HTML 文書を作成するには [5] 仕様によれば、 [CODE(DOMp)@en[doctype]] 引数に適当な値を与えれば [CODE(DOM)@en[[[HTML]]]] [[機能]]など [CODE(DOM)@en[[[Core]]]] 以外の[[機能]]を実装した [CODE(DOMi)@en[[[Document]]]] を返して良いとされています。また、 [[DOM水準2]] の [CODE(DOMm)@en[[[createHTMLDocument]]]] のような特化した[[メソッド]]を使う方法もあると触れられています。 [6] 後者の方法、すなわち [CODE(DOMi)@en[[[HTMLDocument]]]] [[界面]]の [CODE(DOMm)@en[[[createHTMLDocument]]]] [[メソッド]]は、旧来の [[HTML]] (''非'' [[XHTML]]) [CODE(DOMi)@en[[[HTMLDocument]]]] を作成するためのもので、 [[DOM水準2]] 仕様案には含まれていましたが、 [[勧告]]になる前に削除されています。 [WEAK[(それなのに別のモジュールの仕様書に言及が残っているなんてことは [[DOM]] の仕様書ではよくあります。)]] [CODE(DOMm)@en[[[createDocument]]]] があれば十分ということらしいです。 [7] 前者の方法、すなわち [CODE(DOMi)@en[[[Document]]]] [[界面]]の [CODE(DOMm)@en[[[createDocument]]]] [[メソッド]]に適当な [CODE(DOMp)@en[[[doctype]]]] [[引数]]を与える方法は、それ以上の詳細は説明されていません。 つまり、どのような [CODE(DOMp)@en[[[doctype]]]] を与えればどのような[[機能]]を持った[[物体]]が返されるかは実装依存ということになります。 [CODE(DOMm)@en[[[createDocumentType]]]] [[メソッド]]の[[引数]]には[[公開識別子]]と[[システム識別子]]がありますから、 [CODE(DOMi)@en[[[DocumentType]]]] の種類はこれらから判断されると思われます。 [WEAK[([[修飾名]]もありますが、[[名前空間URI]] はないのでここから判断するのは少し不安です。)]] これらの引数に [[XHTML]] で定義されている値を与えれば、 おそらく [CODE(DOMi)@en[[[HTMLDocument]]]] が得られるのでしょう。 [8] '''[CODE(DOMm)@en[[[createDocument]]]] の名前空間 URI と局所名で指定''': [CODE(DOMm)@en[[[createDocument]]]] の[[引数]]には[[文書要素]]の[[名前空間URI]] と[[修飾名]]も指定できます。仕様書には何も書かれていませんが、 多くの場合には [CODE(DOMp)@en[[[doctype]]]] がなくともこれらの引数の情報だけで実装側としては十分なはずです。 [[XHTML]] の場合、[[名前空間URI]] に [CODE(URI)@en[[[http://www.w3.org/1999/xhtml]]]]、 [[修飾名]]中の[[局所名]]に [CODE(XMLe)@en[[[html]]]] を与えれば、実装によっては [CODE(DOMi)@en[[[HTMLDocument]]]] が得られると期待できます。 [[#comment]] ** メモ [[#comment]] *メモ