[2] [CODE(HTMLe)@en[[[template]]]] [[要素]]に関連付けられた[[内容]]を[DFN[[RUBYB[雛形内容]@en[template content]]]]といい、 [CODE(DOMi)@en[[[DocumentFragment]]]] [[節点]]として表されます。通常の[[要素]]では[[内容]] ([[子供]]) となるものが、 [CODE(HTMLe)@en[[[template]]]] [[要素]]では[[雛形内容]]となります。[[雛形内容]]には [CODE(DOMi)@en[[[HTMLTemplateElement]]]] [[インターフェイス]]の [DFN[[CODE(DOMa)@en[[[content]]]]]] [[IDL属性]]を通じてアクセスできます。 * 仕様書 [REFS[ - [1] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-12-19 00:10:55 +09:00]] 版) ]REFS] * 処理モデル [11] [CODE(HTMLe)@en[[[template]]]] [[要素]]が作られると、自動的に [CODE(DOMi)@en[[[DocumentFragment]]]] [[節点]]が作られ、[[雛形内容]]となります。 [10] [CODE(HTMLe)@en[[[template]]]] [[要素]]の [[cloning steps]] は、子供も複製するモードの場合 ([CODE(DOMm)@en[[[cloneNodes]]]] [[メソッド]]の引数が[[真]]の場合) には[[雛形内容]]も複製します。 * 節点文書 [4] [[雛形内容]]である [CODE(DOMi)@en[[[DocumentFragment]]]] とその[[子孫]]の[[節点文書]] ([CODE(DOMa)@en[[[ownerDocument]]]]) は[DFN[[RUBYB[適切な雛形内容所有子文書]@en[appropriate template contents owner document]]]] [SRC[>>1]] に設定されます。 [5] [[適切な雛形内容所有子文書]]とは[[文書]]ごとに決まる[[文書]]です。 [6] [CODE(HTMLe)@en[[[template]]]] [[要素]]自体が[[雛形内容]]のために作られた[[文書]]に含まれているなら、 その[[文書]]がそのまま[[適切な雛形内容所有子文書]]として使われます。 [7] そうでなく [CODE(HTMLe)@en[[[template]]]] [[要素]]が最外の[[文書]]に属しているなら、 [DFN[[RUBYB[関連付けられた不活性雛形文書]@en[associated inert template document]]]]が[[適切な雛形内容所有子文書]]として使われます。 [[関連付けられた不活性雛形文書]]は[[雛形内容]]専用の[[文書]]で、既になければ新しく作られます。 元の[[文書]]の[[HTML文書]]と[[XML文書]]の違いを引き継ぎます。 ;; [8] 従って、 [CODE(HTMLe)@en[[[template]]]] は入れ子にできますが、どんなに深く入れ子にしても、 また並列に [CODE(HTMLe)@en[[[template]]]] がいくつ存在しても、[[文書]]は元の[[文書]]と[[雛形内容]]用の[[文書]]の 2種類だけ存在します。 [9] [[adopt]] により [CODE(HTMLe)@en[[[template]]]] の[[節点文書]]が変更された時は、[[雛形内容]]である [CODE(DOMi)@en[[[DocumentFragment]]]] が新しい[[文書]]の側の[[適切な雛形内容所有子文書]]へと [[adopt]] されます。 [SRC[>>1]] [13] [[雛形内容]]の [CODE(DOMi)@en[[[DocumentFragment]]]] が他の[[文書]]に [[adopt]] されると[[適切な雛形内容所有子文書]]と[[雛形内容]]の[[節点文書]]が別の[[文書]]になります。 ;; [14] [[雛形内容]]の中に [CODE(HTMLe)@en[[[template]]]] があった場合、 [[adopt]] 前は内側の[[雛形内容]]も同じ[[文書]]が[[節点文書]]ですが、 [[adopt]] 後は別の[[文書]]になります。その更に内側に [CODE(HTMLe)@en[[[template]]]] があった場合は、その[[節点文書]]も連鎖的に変更されます。 ;; [15] [[adopt]] されても[[雛形内容]]/[[ホスト]]の関係は解消されません。 ;; [16] [CODE(DOMi)@en[[[DocumentFragment]]]] は [CODE(DOMm)@en[[[appendChild]]]] などでもそれ自体には[[親]]ができませんし、 [[ホスト]]が生じる [[DOM]] メソッドは存在しないので、[[親]]や[[ホスト]]が複数生じることはありません。 * 関連 [3] [CODE(HTMLe)@en[[[template]]]] [[要素]]からみて [CODE(DOMi)@en[[[DocumentFragment]]]] のことを[[雛形内容]]といいますが、 逆に [CODE(DOMi)@en[[[DocumentFragment]]]] からみた [CODE(HTMLe)@en[[[template]]]] [[要素]]は[[ホスト]]といいます。 [12] [[XPath]] や [[XSLT]] との関係は、 [CODE(HTMLe)@en[[[template]]]] [[要素]]の項をご覧ください。