[40] [[HTML]] には、他の言語のデータを直接埋め込むことができる[RUBYB[統合点]@en[integration point]]が何種類か存在します。
例えば、 [CODE(XMLe)@en[[[svg]]]] [[要素]]によって [[HTML]] 文書中に [[SVG]]
を埋め込むことができます。
* 仕様書
[REFS[
- [70] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-06-01 22:44:24 +09:00]] 版)
- [71] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-06-01 22:44:24 +09:00]] 版)
- [52] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-06-01 22:44:24 +09:00]] 版)
- [63] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-06-01 22:44:24 +09:00]] 版)
- [69] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-06-01 22:44:24 +09:00]] 版)
]REFS]
* SVG と MathML
[44] [[HTML文書]]には、[CODE(XMLe)@en[[[svg]]]] [[要素]]によって [[SVG]] を、
[CODE(XMLe)@en[[[math]]]] [[要素]]によって [[MathML]] を埋め込むことができます。
[45] [[HTML文書]]の[[要素]]の[[名前空間]]は通常は [[HTML名前空間]]ですが、
これらの[[要素]]の子孫はそれぞれ [[SVG]] と [[MathML]] の[[名前空間]]に属します。
** HTML への SVG と MathML の埋め込み
[72] [[SVG]] [CODE(XMLe)@en[[[svg]]]] [[要素]]と [[MathML]] [CODE(XMLe)@en[[[math]]]]
[[要素]]は[[埋め込まれ内容]]に分類されており [SRC[>>70, >>71]]、これが認められる[[要素]]で使うことができます。
** SVG への HTML の埋め込み
[73] [[SVG]] [CODE(XMLe)@en[[[foreignObject]]]] [[要素]]の中に [[HTML]] [[要素]]が含まれる場合、
[[フロー内容]]でなければ[['''なりません''']]。 [SRC[>>71]]
;; [74] [[HTML要素]]以外については規定しないという立場から [[HTML]] 仕様は言及していませんが、
[[HTML]]以外の[[フロー内容]]、例えば [[MathML]] [CODE(XMLe)@en[[[math]]]] [[要素]]も認められると考えるのが妥当と思われます。
[75] [[HTML文書]]における [[SVG]] [CODE(XMLe)@en[[[title]]]] [[要素]]の[[内容モデル]]は
[[phrasing content]] です。 [SRC[>>71]]
;; [76] なぜ >>73 と同様の規定の方法にせずに、 >>75 については[[HTML文書]]限定の規定になっているのかはよくわかりません。
;; [77] 構文解析器では [CODE(XMLe)@en[[[title]]]] [[要素]]と [CODE(XMLe)@en[[[desc]]]]
[[要素]]が同様に扱われていますが、 [CODE(XMLe)@en[[[desc]]]] [[要素]]の[[内容モデル]]については規定がありません。
** 構文解析器の動作
[53] [[HTML構文解析器]]は、 [[MathML]] や [[SVG]] の中の次の位置で、内容を [[HTML]]
として構文解析します [SRC[>>52]]。
- [54] [DFN[[RUBYB[[[MathMLテキスト統合点]]]@en[MathML text integration point]]]] (ただし[[開始タグ]] [CODE(XMLe)@en[[[mglyph]]]], [CODE(XMLe)@en[[[malignmark]]]] を除く)
-- [58] [[MathML]] の次の[[要素]]: [CODE(XMLe)@en[[[mi]]]], [CODE(XMLe)@en[[[mo]]]],
[CODE(XMLe)@en[[[mn]]]], [CODE(XMLe)@en[[[ms]]]], [CODE(XMLe)@en[[[mtext]]]]
- [56] [DFN[[RUBYB[[[HTML統合点]]]@en[HTML integration point]]]]
-- [59] [[MathML]] [CODE(XMLe)@en[[[annotation-xml]]]] [[要素]] ([CODE(XMLa)@en[[[encoding]]]]
[[属性値]]が [[ASCII大文字・小文字不区別]]で [CODE(MIME)@en[[[text/html]]]] か
[CODE(MIME)@en[[[application/xhtml+xml]]]] の時のみ)
-- [60] [[SVG]] [CODE(XMLe)@en[[[foreignObject]]]] [[要素]]
-- [61] [[SVG]] [CODE(XMLe)@en[[[desc]]]] [[要素]]
-- [62] [[SVG]] [CODE(XMLe)@en[[[title]]]] [[要素]]
[57] また、 [[HTML構文解析器]]は、 [[MathML]] の中の次の位置で、内容を [[SVG]]
として構文解析します [SRC[>>52]]。
- [55] [[MathML]] [CODE(XMLe)@en[[[annotation-xml]]]] [[要素]] (ただし [CODE(XMLe)@en[[[svg]]]] [[開始タグ]]のみ)
[64] [[SVG]] や [[MathML]] の[[要素]]では、[DFN[[RUBYB[[[外来属性を調整]]]@en[adjust foreign attributes]]]]することにより、
[[XML名前空間]]や[[XMLNS名前空間]]や[[XLink]] の[[属性]]が特別に認識されます [SRC[>>63]]。
- [65] [CODE(XMLa)@en[[[xlink:actuate]]]], [CODE(XMLa)@en[[[xlink:arcrole]]]],
[CODE(XMLa)@en[[[xlink:href]]]], [CODE(XMLa)@en[[[xlink:role]]]],
[CODE(XMLa)@en[[[xlink:show]]]], [CODE(XMLa)@en[[[xlink:title]]]],
[CODE(XMLa)@en[[[xlink:type]]]] → [[XLink]]
- [66] [CODE(XMLa)@en[[[xml:base]]]], [CODE(XMLa)@en[[[xml:lang]]]], [CODE(XMLa)@en[[[xml:space]]]]
→ [[XML]]
- [67] [CODE(XMLa)@en[[[xmlns]]]], [CODE(XMLa)@en[[[xmlns:xlink]]]] → [[XMLNS]]
;; [68] [[大域属性]]として解釈されるのはこれらの[[属性]]だけで、同じ[[名前空間接頭辞]]であってもこれら以外はそう解釈されません。
また、これは [[SVG]] と [[MathML]] の[[要素]]のみの解釈で、 [[HTML]] の[[要素]]ではそう解釈されません。
更に、 [[XMLNS名前空間]]の[[属性]]も、 [[XMLNS名前空間]]に[[属性]]が置かれるだけであって、
[[XML名前空間]]仕様によって解釈されたり、機能したりするわけではありません。
* データ集合
[46] [[HTML要素]]には [CODE(HTMLa)@en[[[data-*]]]] [[属性]]があります。これらの[[属性]]には、
[[著者]]が好きな名前と値の組を設定することができます。これによって、
[[スクリプト]]に対して[[要素]]の処理についての付加データを与えるなど、
実質的に[[マーク付け言語]]の局所的な拡張として機能します。
* データ島
[47] [CODE(HTMLe)@en[[[script]]]] [[要素]]には、実行される[[スクリプト]]の他、
(適当な [CODE(HTMLa)@en[[[type]]]] [[属性]]を指定することによって) 任意のデータを埋め込むことができます。
;; [48] [[WinIE]] は [CODE(HTMLe)@en[[[xml]]]] [[要素]]を実装していて、そこに任意の [[XML]]
データを埋め込むことができました。これは1990年代末の [[HTML WG]] が [[HTML]] 仕様に追加する予定でしたが、
実現しませんでした。
* ARIA
[49] [[HTML要素]]には [CODE(HTMLa)@en[[[aria-*]]]] [[属性]]があります。これらの[[属性]]は [[ARIA]]
仕様によって規定される名前と値を設定することができます。 [CODE[aria-]] は実質的に[[名前空間接頭辞]]として機能していることになります。
* スクリプト
[50] [CODE(HTMLe)@en[[[script]]]] [[要素]]や [CODE(HTMLa)@en[[[on*]]]] [[属性]]には[[スクリプト]]を記述できます。
* スタイル・シート
[51] [CODE(HTMLe)@en[[[style]]]] [[要素]]や [CODE(HTMLa)@en[[[style]]]] [[属性]]には[[スタイル・シート]]を記述できます。
* 名前空間
[41] 1990年代末から2000年代初頭にかけて、[[語彙]]の混合には [[XML名前空間]]を用いることが (政治的に)
正しいと考えられていました。 [[XHTML]] 同様、[[HTML文書]]においてもこれを利用可能にするべきとの主張はずっと存在していましたし、
むしろ [[Web]] の [[XML]] への移行が考えられ、しかしその方法が定まっていなかった1990年代末頃には、
[[Microsoft Office]] や [[Opera]] のように、実際に [[XML名前空間]]を [[HTML]]
に導入した実装も存在していました。
[42] ですが、[[名前空間URL]]の用法が当時はまだ確定しておらず、 [[HTML4]] 仕様書の [[URL]]
など様々な値が使われたことや、 [[HTML WG]] の [[MIME型]]の解釈についての見解によって [[HTML]] から [[XHTML]]
へのスムーズな移行に失敗してしまったことなどから、 [[HTML]] において
[[XML名前空間]]を解釈する実装は次第に不可能になってゆきます。更に、時代が下るにつれ
[[XML名前空間]]が難解であることが明確になり、
[[Webブラウザー]]開発者らは[[XML名前空間]]を好ましくないと考えるようになっていきました。
[43] 現在 [[HTML]] では一切 [[XML名前空間]]は利用できません。ただし、 [[HTML]] と [[XHTML]]
のテキスト・レベルでの互換性の観点から、 [CODE(HTMLe)@en[[[html]]]] [[要素]]に
[CODE(XMLa)@en[[[xmlns]]]] という名前の属性があっても不適合とはならず、単に無視されるなど、
一部 [[XML名前空間]]の構文が取り入れられています。ただし、あくまで無意味な構造が認められているに過ぎず、
実質的な機能は持ちません。
* 歴史
[1]
The whatwg September 2006 Archive by thread
([[名無しさん]])
[2]
The problems with namespaces in text/html (Was: MathML-in-HTML5)
([[名無しさん]])
[3]
[CITE[dolphinling’s weblog » Blog Archive » Namespace syntax in HTML]]
([[名無しさん]])
[4]
[CITE@en[RDFa in HTML]] ([[Steven Pemberton]] 著, [CODE[2007-04-17 00:02:16 +09:00]] 版)
([[名無しさん]] [WEAK[2007-04-20 00:06:59 +00:00]])
[5]
[CITE@en[Sam Ruby: HTML5 and Distributed Extensibility]] ([CODE[2007-08-04 10:38:13 +09:00]] 版)
([[名無しさん]] [WEAK[2007-08-04 02:40:45 +00:00]])
[6]
[CITE@en[SVG and MathML in text/html]] ([[Henri Sivonen]] 著, [CODE[2008-03-09 19:46:47 +09:00]] 版)
([[名無しさん]])
[7]
[CITE@en[Re: SVG and MathML in text/html]] ([[Ian Hickson]] 著, [CODE[2008-03-12 05:24:16 +09:00]] 版)
([[名無しさん]])
[8]
[CITE@en[Re: SVG and MathML in text/html]] ([[Ian Hickson]] 著, [CODE[2008-03-12 05:24:16 +09:00]] 版)
([[名無しさん]])
[9]
[CITE@en[CustomData - WHATWG Wiki]] ([CODE[2008-03-27 10:30:19 +09:00]] 版)
([[名無しさん]])
[10]
[CITE@en[Re: Exploring new vocabularies for HTML from Robert Miner on 2008-03-27 (public-html@w3.org from March 2008)]] ([[Robert Miner (robertm@dessci.com)]] 著, [CODE[2008-03-28 07:05:37 +09:00]] 版)
A feedback from [[Math WG]]
([[名無しさん]])
[11]
[CITE@en[Re: Exploring new vocabularies for HTML from Ian Hickson on 2008-03-25 (public-html@w3.org from March 2008)]] ([[Ian Hickson (ian@hixie.ch)]] 著, [CODE[2008-03-26 06:59:41 +09:00]] 版)
([[名無しさん]])
[12]
[CITE[HTML/SVGInTextHTML - ESW Wiki]] ([CODE[2008-03-30 19:35:17 +09:00]] 版)
([[名無しさん]])
[13]
[CITE@en[Diagrams in HTML - WHATWG Wiki]] ([CODE[2008-04-01 23:31:21 +09:00]] 版)
([[名無しさん]])
[14]
[CITE[XML in HTML Meeting Report]] ([CODE[2007-01-26 19:12:49 +09:00]] 版)
([[名無しさん]])
[15]
>>14 このときの結論はその後の [[HTML WG]] の成果には全然反映されていませんね。
この結論の方向で標準化が進められていれば、現実の今とは違った状況になっていたかもしれませんのに。
この文書で説明されている背景や提案されている手法が最近のとほとんど変わらないのが、なんとも悲しい。
([[名無しさん]] [WEAK[2008-04-05 11:04:55 +00:00]])
[16]
[CITE@en[Re: several messages about New Vocabularies in text/html]] ([[Ian Hickson]] 著, [CODE[2008-04-02 10:57:08 +09:00]] 版)
([[名無しさん]])
[17]
[CITE@en[Supporting MathML and SVG in text/html, and related topics]] ([[Ian Hickson]] 著, [CODE[2008-04-10 18:51:20 +09:00]] 版)
([[名無しさん]])
[18]
>>17 折角だから全部読もうと思ったものの挫折[AA[orz]]
([[名無しさん]] [WEAK[2008-04-13 08:08:23 +00:00]])
[19]
[CITE@en[SVG in text/html]] ([[Andrew Emmons]] 著, [CODE[2008-04-15 20:06:36 +09:00]] 版)
([[名無しさん]])
[20]
[CITE@en[Re: SVG in text/html]] ([[Ian Hickson]] 著, [CODE[2008-04-16 02:42:15 +09:00]] 版)
([[名無しさん]])
[21]
[CITE[SVG and text/html - Anne’s Weblog]] ([CODE[2008-01-25 14:19:49 +09:00]] 版)
([[名無しさん]])
[22]
[CITE[SVG and HTML]] ([CODE[2008-07-14 04:11:27 -04:00]] 版)
[23]
[CITE@en[Re: some technical thoughts about incremental improvements to forms]] ([[Lachlan Hunt]] 著, [TIME[2006-09-06 00:04:30 +09:00]] 版)
[26] [CITE@en[SVG Filter Effects in HTML without External References]] ([[Henri Sivonen]] 著, [TIME[2009-03-11 21:45:47 +09:00]] 版)
* 例
[24] [CITE[SVG and MathML]] ([TIME[2008-12-03 19:29:12 +09:00]] 版)
[25] [CITE[Kiss The Moon]] ([[日月九曜]] 著, [TIME[2009-01-06 00:18:35 +09:00]] 版)
([CODE(MIME)@en[[[text/html]]]])
[PRE(HTML example code)[
]PRE]
[PRE(HTML example code)[
動作確認環境はFirefox 3.X、Netscape Communicator 4.78、Opera 9.X、Internet Explorer 6.X / 7.Xの各Windows版です。
]PRE]
[27] [CITE@en[SVG in text/html, getting closer]] ([[Cameron McCormack]] 著, [TIME[2009-03-03 09:24:34 +09:00]] 版)
[28] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-09-23 09:01:42 +09:00]] 版)
[29] [CITE@en[Re: '''['''xml-dev''']''' Pragmatic namespaces]]
([TIME[2009-10-11 01:14:14 +09:00]] 版)
[30] [CITE[IRC logs: freenode / #whatwg / 20090907]]
([TIME[2009-10-17 22:29:17 +09:00]] 版)
[31] [CITE[IRC logs: freenode / #whatwg / 20090915]]
([TIME[2009-10-31 11:41:27 +09:00]] 版)
[32] [CITE[Surfin' Safari]]
([TIME[2007-12-11 02:31:26 +09:00]] 版)
[33] [CITE@en[Null change proposal for ISSUE-41]]
( ([[Ian Hickson]] 著, [TIME[2010-03-24 15:57:04 +09:00]] 版))
[34] [CITE@en[RE: ISSUE-41: extensibility change proposal advocates]]
( ([[Tony Ross]] 著, [TIME[2010-08-12 06:01:42 +09:00]] 版))
[35] [CITE@en[Working Group Decision on ISSUE-41 Decentralized extensibility]]
( ([[Sam Ruby]] 著, [TIME[2011-02-04 01:00:01 +09:00]] 版))
[36] [CITE@en[Working Group Decision on ISSUE-41 Decentralized extensibility]]
( ([[Sam Ruby]] 著, [TIME[2011-02-04 01:00:01 +09:00]] 版))
[37] [CITE@en[Re: Working Group Decision on ISSUE-41 Decentralized extensibility]]
( ([[Jirka Kosek]] 著, [TIME[2011-02-09 09:02:20 +09:00]] 版))
[38] [CITE[IRC logs: freenode / #whatwg / 20110802]]
( ([TIME[2011-08-13 13:39:31 +09:00]] 版))
[39] [CITE[IRC logs: freenode / #whatwg / 20120508]]
( ([TIME[2012-05-12 19:16:00 +09:00]] 版))
[78] [CITE[SVG and HTML]]
( ([TIME[2008-07-15 17:27:06 +09:00]] 版))