[54] [[HTML]] の [DFN[[CODE(HTMLe)@en[[[template]]]]]] [[要素]]は、[[スクリプト]]で[[雛形]]として使うための
[[HTML]] 素片を宣言するものです。直接は[[レンダリング]]されず、外部から [CODE(HTMLa)@en[[[id]]]] [[属性]]などによって参照したりすることもできませんが、
[[スクリプト]]で [[clone]] するなどして好きに使うことができます。
* 仕様書
[REFS[
- [36] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-12-19 00:10:55 +09:00]] 版)
]REFS]
* 内容
[37] 文書のソース上 [CODE(HTMLe)@en[[[template]]]] [[要素]]の[[内容]]となっているものは、
[[DOM]] 上は[[要素]]の[[内容]]ではなく、[[雛形内容]]となります。
;; [38] [CODE(HTMLe)@en[[[template]]]] の中身が[[フォーム]]に関連付けられたり、 [CODE(HTMLa)@en[[[id]]]]
が有効になったりすると都合が悪いことが多いので、あえて本来の[[木構造]]とは別の[[木]]に属する形に [[DOM]]
が拡張されました。
[41] [CODE(HTMLe)@en[[[template]]]] [[要素]]の[[内容モデル]]は[[雛形内容]]に適用されます。
[42] [CODE(HTMLe)@en[[[template]]]] [[要素]]の[[内容]]に対する制約はなぜか特にありません。
;; [53] [[雛形内容]]の項もご覧ください。
* 構文解析と直列化
[43] [[HTML]] でも [[XML]] でも、 [CODE(HTMLe)@en[[[template]]]] [[要素]]の[[内容]]として記述された部分は[[内容]]ではなく、
[[雛形内容]]となります。
[44] [CODE(HTMLe)@en[[[template]]]] [[要素]]内では [[[CODE(HTMLe)@en[form]]要素指示子]]を用いた
[CODE(HTMLe)@en[[[form]]]] [[要素]]との関連付けは行われません。
[45] [[文書]]を [[HTML]] として、または [[XML]] として[[直列化]]する時は、 [CODE(HTMLe)@en[[[template]]]]
[[要素]]の[[子供]]のかわりに[[雛形内容]]の[[子供]]が[[直列化]]されます。
[50] [CODE(HTMLe)@en[[[template]]]] [[要素]]の [CODE(DOMa)@en[[[innerHTML]]]]
は[[要素]]の[[内容]]ではなく[[雛形内容]]に対して適用されます。
;; [51] [[getter]] については [[HTML Standard]] で規定されています。 [[setter]] については現時点でまだ
[[DOM Parsing Standard]] が更新されていないようです。 [TIME[2014-01-03T13:47:55.200Z]]
;; [52] [CODE(DOMa)@en[[[textContent]]]]、[CODE(DOMa)@en[[[insertAdjacentHTML]]]] などは他の[[要素]]と同じく[[内容]]に対して適用されます。
* 選択子
[46] 通常の[[選択子]]の処理では[[雛形内容]]は無視されます。
* XPath
[39] [[DOM XPath]] では[[雛形内容]]は無視されます [SRC[>>36]]。
;; [49] >>40 の通り [[XSLT]] では[[雛形内容]]が[[内容]]として扱われるので、 [[DOM XPath]]
と [[XSLT]] 内の [[XPath]] で異なる動作モードが必要です。
* XSLT
[40] [[XSLT]] では入力の[[雛形内容]]が [CODE(HTMLe)@en[[[template]]]] [[要素]]の[[内容]]であるかのように扱われます。
また出力の [CODE(HTMLe)@en[[[template]]]] [[要素]]の[[内容]]は[[雛形内容]]となります。 [SRC[>>36]]
* 歴史
[8] [CITE[IRC logs: freenode / #whatwg / 20120418]]
( ([TIME[2012-04-23 08:53:05 +09:00]] 版))
[9] [CITE@en[HTML Templates]]
( ([TIME[2012-04-24 21:43:53 +09:00]] 版))
[10] [CITE[''''''[''''''whatwg'''''']'''''' '''['''webcomponents''']''' Template element parser changes => Proposal for adding DocumentFragment.innerHTML]]
( ([TIME[2012-05-05 09:15:09 +09:00]] 版))
[11] [CITE[IRC logs: freenode / #whatwg / 20120426]]
( ([TIME[2012-05-03 12:16:12 +09:00]] 版))
[12] [CITE[IRC logs: freenode / #whatwg / 20120608]]
( ([TIME[2012-06-23 23:26:42 +09:00]] 版))
[13] [CITE[IRC logs: freenode / #whatwg / 20120614]]
( ([TIME[2012-06-30 22:58:49 +09:00]] 版))
[14] [CITE[IRC logs: freenode / #whatwg / 20120716]]
( ([TIME[2012-07-21 11:45:07 +09:00]] 版))
[15] [CITE[IRC logs: freenode / #whatwg / 20120717]]
( ([TIME[2012-07-21 11:57:22 +09:00]] 版))
[16] [CITE[IRC logs: freenode / #whatwg / 20120823]]
( ([TIME[2012-09-01 21:17:42 +09:00]] 版))
[17] [CITE[IRC logs: freenode / #whatwg / 20120828]]
( ([TIME[2012-09-03 21:43:39 +09:00]] 版))
[18] [CITE[''''''[''''''whatwg'''''']'''''' Declarative Inert DOM (e.g. the element)]]
( ([TIME[2012-11-03 10:29:12 +09:00]] 版))
[19] [CITE[''''''[''''''webkit-dev'''''']'''''' Feature announcement: HTMLTemplateElement]]
( ([TIME[2012-12-01 08:00:56 +09:00]] 版))
[20] [CITE[''''''[''''''webkit-dev'''''']'''''' Feature announcement: HTMLTemplateElement]]
( ([TIME[2012-12-01 08:00:56 +09:00]] 版))
[21] [CITE[''''''[''''''webkit-dev'''''']'''''' Feature announcement: HTMLTemplateElement]]
( ([TIME[2012-11-30 23:00:56 +09:00]] 版))
[22] [CITE@en[HTML Templates]]
( ([TIME[2013-02-13 22:43:32 +09:00]] 版))
[23] [CITE@en-US[XBL 2.0]]
( ([TIME[2012-05-03 02:23:03 +09:00]] 版))
[24] [CITE@en-US[XBL 2.0]]
( ([TIME[2012-05-03 02:23:03 +09:00]] 版))
[25] [CITE@en[''''''[''''''html-templates'''''']'''''' Seeking pre-LC comments for HTML Templates; deadline June 10]]
( ([[Arthur Barstow]] 著, [TIME[2013-06-03 22:32:29 +09:00]] 版))
[26] [CITE[IRC logs: freenode / #whatwg / 20130614]]
( ([TIME[2013-06-16 20:47:50 +09:00]] 版))
[27] [CITE@en[Web Applications 1.0 r8000 Integrate into HTML.]]
( ([TIME[2013-06-29 07:44:00 +09:00]] 版))
[28] [CITE[IRC logs: freenode / #whatwg / 20130625]]
( ([TIME[2013-06-30 00:43:15 +09:00]] 版))
[29] [CITE[IRC logs: freenode / #whatwg / 20130725]]
( ([TIME[2013-07-26 16:12:52 +09:00]] 版))
[30] [CITE@en[Web Applications 1.0 r8115 Make