appropriate template contents owner document

appropriate template contents owner document

[2] template 要素に関連付けられた内容雛形内容 (template content) といい、 DocumentFragment 節点として表されます。通常の要素では内容 (子供) となるものが、 template 要素では雛形内容となります。雛形内容には HTMLTemplateElement インターフェイスcontent IDL属性を通じてアクセスできます。

仕様書

処理モデル

[11] template 要素が作られると、自動的に DocumentFragment 節点が作られ、雛形内容となります。 DocumentFragmentホストは、 template 要素に設定されます >>1

[10] template 要素cloning steps は、子供も複製するモードの場合 (cloneNodes メソッドの引数がの場合) には雛形内容も複製します。

[18] template 要素雛形内容の関係は、一度要素が作られたらずっと変化することはありません。

[16] DocumentFragmentappendChild などでもそれ自体にはができませんし、 ホストが生じる DOM メソッドは存在しないので、ホストが複数生じることはありません。

節点文書

[4] 雛形内容である DocumentFragment とその子孫節点文書 (ownerDocument) は適切な雛形内容所有子文書 (appropriate template contents owner document) >>1 に設定されます。

[5] 適切な雛形内容所有子文書とは文書ごとに決まる文書です。

[6] template 要素自体が雛形内容のために作られた文書に含まれているなら、 その文書がそのまま適切な雛形内容所有子文書として使われます。

[7] そうでなく template 要素が最外の文書に属しているなら、 関連付けられた不活性雛形文書 (associated inert template document) 適切な雛形内容所有子文書として使われます。 関連付けられた不活性雛形文書雛形内容専用の文書で、既になければ新しく作られます。 元の文書HTML文書XML文書の違いを引き継ぎます。

[8] 従って、 template は入れ子にできますが、どんなに深く入れ子にしても、 また並列に template がいくつ存在しても、文書は元の文書雛形内容用の文書の 2種類だけ存在します。

[9] adopt により template節点文書が変更された時は、雛形内容である DocumentFragment が新しい文書の側の適切な雛形内容所有子文書へと adopt されます。 >>1

[13] 雛形内容DocumentFragment が他の文書adopt されると適切な雛形内容所有子文書雛形内容節点文書が別の文書になります。

[17] これによって、最外文書template 要素であっても、 要素雛形内容が同じ文書に属することがあり得ます。 template 要素雛形内容側の文書adopt された場合にも同じようなことになります。
[14] 雛形内容の中に template があった場合、 adopt 前は内側の雛形内容も同じ文書節点文書ですが、 adopt 後は別の文書になります。その更に内側に template があった場合は、その節点文書も連鎖的に変更されます。
[15] adopt されても雛形内容/ホストの関係は解消されません。

比較と順序

[19] 雛形内容ホスト文書順には特別な規定はありません。従って、 compareDocumentPosition の結果も実装依存となります。

[20] isEqualNode雛形内容を無視して比較します。

名前空間

[21] 構文解析や直列化の際は雛形内容内容であるかのように扱われるので、名前空間は他の要素の場合と同じように処理されます。

[22] DOM 上では違う節点木となりますので、 lookupNamespacePrefixlookupNamespaceURI については外側の名前空間宣言などが内側に影響しないことになります。 DOM を使って XSLT を実装するような場合には注意が必要です。

適合性

[27] 要素の内容を参照。

関連

[3] template 要素からみて DocumentFragment のことを雛形内容といいますが、 逆に DocumentFragment からみた template 要素ホストといいます。

[12] XPathXSLT との関係は、 template 要素の項をご覧ください。

歴史

[25] Set <template>'s DocumentFragment's host · whatwg/html@baa8e34 ( 版) <https://github.com/whatwg/html/commit/baa8e346d737c115d4a676caa4a172983b87255e>

[26] Allow anything in <template> for document conformance (zcorpan著, ) <https://github.com/whatwg/html/commit/950d3015bead974bec1d7d86c00d641655ea0b66>

[28] Template element: "Content model: Nothing." · Issue #3021 · whatwg/html () <https://github.com/whatwg/html/issues/3021>

[29] Editorial: template *Content model* ➡️ “See prose” by sideshowbarker · Pull Request #3031 · whatwg/html () <https://github.com/whatwg/html/pull/3031>