[2] template
要素に関連付けられた内容を雛形内容といい、
DocumentFragment
節点として表されます。通常の要素では内容 (子供) となるものが、
template
要素では雛形内容となります。雛形内容には HTMLTemplateElement
インターフェイスの content
IDL属性を通じてアクセスできます。
[11] template
要素が作られると、自動的に DocumentFragment
節点が作られ、雛形内容となります。
DocumentFragment
のホストは、
template
要素に設定されます >>1。
[10] template
要素の cloning steps は、子供も複製するモードの場合
(cloneNodes
メソッドの引数が真の場合) には雛形内容も複製します。
[4] 雛形内容である DocumentFragment
とその子孫の節点文書
(ownerDocument
) は適切な雛形内容所有子文書
>>1 に設定されます。
[5] 適切な雛形内容所有子文書とは文書ごとに決まる文書です。
[6] template
要素自体が雛形内容のために作られた文書に含まれているなら、
その文書がそのまま適切な雛形内容所有子文書として使われます。
[7] そうでなく template
要素が最外の文書に属しているなら、
関連付けられた不活性雛形文書が適切な雛形内容所有子文書として使われます。
関連付けられた不活性雛形文書は雛形内容専用の文書で、既になければ新しく作られます。
元の文書のHTML文書とXML文書の違いを引き継ぎます。
[9] adopt により template
の節点文書が変更された時は、雛形内容である
DocumentFragment
が新しい文書の側の適切な雛形内容所有子文書へと adopt
されます。 >>1
[13] 雛形内容の DocumentFragment
が他の文書に adopt
されると適切な雛形内容所有子文書と雛形内容の節点文書が別の文書になります。
template
要素であっても、
要素と雛形内容が同じ文書に属することがあり得ます。 template
要素が雛形内容側の文書に adopt された場合にも同じようなことになります。[19] 雛形内容とホストの文書順には特別な規定はありません。従って、 compareDocumentPosition
の結果も実装依存となります。
[20] isEqualNode
は雛形内容を無視して比較します。
[21] 構文解析や直列化の際は雛形内容は内容であるかのように扱われるので、名前空間は他の要素の場合と同じように処理されます。
[22] DOM 上では違う節点木となりますので、 lookupNamespacePrefix
や
lookupNamespaceURI
については外側の名前空間宣言などが内側に影響しないことになります。
DOM を使って XSLT を実装するような場合には注意が必要です。
[3] template
要素からみて DocumentFragment
のことを雛形内容といいますが、
逆に DocumentFragment
からみた 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>
DocumentFragment
はappendChild
などでもそれ自体には親ができませんし、 ホストが生じる DOM メソッドは存在しないので、親やホストが複数生じることはありません。