HTMLにおける他言語統合点

HTML における他言語統合点

[40] HTML には、他の言語のデータを直接埋め込むことができる統合点 (integration point) が何種類か存在します。 例えば、 svg 要素によって HTML 文書中に SVG を埋め込むことができます。

逆方向は HTMLの埋め込み

仕様書

SVG と MathML

[44] HTML文書には、svg 要素によって SVG を、 math 要素によって MathML を埋め込むことができます。

[45] HTML文書要素名前空間は通常は HTML名前空間ですが、 これらの要素の子孫はそれぞれ SVGMathML名前空間に属します。

HTML への SVG と MathML の埋め込み

[72] SVG svg 要素MathML math 要素埋め込まれ内容に分類されており >>70, >>71、これが認められる要素で使うことができます。

SVG への HTML の埋め込み

[73] SVG foreignObject 要素の中に HTML 要素が含まれる場合、 フロー内容でなければなりません>>71

[74] HTML要素以外については規定しないという立場から HTML 仕様は言及していませんが、 HTML以外のフロー内容、例えば MathML math 要素も認められると考えるのが妥当と思われます。

[75] HTML文書における SVG title 要素内容モデルphrasing content です。 >>71

[76] なぜ >>73 と同様の規定の方法にせずに、 >>75 についてはHTML文書限定の規定になっているのかはよくわかりません。
[77] 構文解析器では title 要素desc 要素が同様に扱われていますが、 desc 要素内容モデルについては規定がありません。

構文解析器の動作

[53] HTML構文解析器は、 MathMLSVG の中の次の位置で、内容を HTML として構文解析します >>52

[57] また、 HTML構文解析器は、 MathML の中の次の位置で、内容を SVG として構文解析します >>52

[64] SVGMathML要素では、外来属性を調整 (adjust foreign attributes) することにより、 XML名前空間XMLNS名前空間XLink属性が特別に認識されます >>63

[68] 大域属性として解釈されるのはこれらの属性だけで、同じ名前空間接頭辞であってもこれら以外はそう解釈されません。 また、これは SVGMathML要素のみの解釈で、 HTML要素ではそう解釈されません。 更に、 XMLNS名前空間属性も、 XMLNS名前空間属性が置かれるだけであって、 XML名前空間仕様によって解釈されたり、機能したりするわけではありません。

レンダリングとスクリプト、データの統合

スクリプト

[50] script 要素on* 属性にはスクリプトを記述できます。

スタイルシート

[51] style 要素style 属性にはスタイルシートを記述できます。

要素のクラス

[86] HTML要素には class 属性があります。 この属性を使うと著者が好きな種別を要素に付与することができます。 この値はスクリプトスタイルシートなどからアクセスできます。

データ集合

[46] HTML要素には data-* 属性があります。これらの属性には、 著者が好きな名前と値の組を設定することができます。これによって、 スクリプトに対して要素の処理についての付加データを与えるなど、 実質的にマーク付け言語の局所的な拡張として機能します。

[85] 単一の要素属性として表しきれない構造を表現したいときは、 マイクロデータを使えます。特定の要素(群)に対応しないデータを埋め込みたいときは、 script 要素によるデータブロックを使えます。

マイクロデータ

[84] マイクロデータと呼ばれる HTML大域属性群を使うことで、 HTML 文書中の構造化されたデータを表現することができます。 schema.org のような共通化された語彙だけでなく、著者がその場限りのデータ構造を記述することもできます。

スクリプトデータブロック

[47] script 要素には、実行されるスクリプトの他、 (適当な type 属性を指定することによって) 任意のデータを埋め込むことができます。 これはスクリプトデータブロックと呼ばれています。

[100] schema.org は、その語彙JSON-LD で記述しスクリプトデータブロックとして HTML に埋め込む方法を規定しています。

[48] WinIExml 要素を実装していて、そこに任意の XML データを埋め込むことができました。これは1990年代末の HTML WGHTML 仕様に追加する予定でしたが、 実現しませんでした。

ARIA

[49] HTML要素には aria-* 属性群があります。これらの属性ARIA 仕様によって規定される名前と値を設定することができます。 aria- は実質的に名前空間接頭辞として機能していることになります。

注釈

[102] HTMLの注釈は、しばしば拡張点として利用されています。

[103] Microsoft OfficeIE条件付注釈構文と組み合わせた複雑な方法で HTML で (Microsoft 版の) XML名前空間を使っていました。

普及しなかった提案

[101] 90年代末には meta 要素によってメタ情報を含めるのが一部で流行しました。 DCMIlink 要素名前空間を宣言し meta 要素で利用する方法を規定しました。 しかし結局一部で Dublin Core の記述に利用されただけで、ほとんど意味がありませんでした。

[92] Internet Explorer が実装していた xml 要素 (XMLデータアイランド) は、任意の XML のデータを HTML文書に埋め込めるようにするものでした。 IE 専用の Webアプリケーションではたまに使われていましたが、 10年代になって IEHTML5構文解析器に移行したことにより、 使えなくなりました。

[99] W3C勧告となった ITS 2.0its-* 属性群を HTML要素に追加していました。これも aria- と同じく実質的に名前空間接頭辞として機能しています。 しかし誰もこれを相手にしていないようです。

XML名前空間

[41] 1990年代末から2000年代初頭にかけて、語彙の混合には XML名前空間を用いることが (政治的に) 正しいと考えられていました。 XHTML 同様、HTML文書においてもこれを利用可能にするべきとの主張はずっと存在していましたし、 むしろ WebXML への移行が考えられ、しかしその方法が定まっていなかった1990年代末頃には、 Microsoft OfficeOpera のように、実際に XML名前空間HTML に導入した実装も存在していました。 Internet ExplorerVMLHTML+TIMESALT のようにかなり積極的に利用していました。

IEDOM2 よりも前に、独自の名前空間処理用 DOM API を実装していました。

[42] ですが、名前空間URLの用法が当時はまだ確定しておらず、 HTML4 仕様書の URL など様々な値が使われたことや、 HTML WGMIME型の解釈についての見解によって HTML から XHTML へのスムーズな移行に失敗してしまったことなどから、 HTML において XML名前空間を解釈する実装は次第に不可能になってゆきます。更に、時代が下るにつれ XML名前空間が難解であることが明確になり、 Webブラウザー開発者らはXML名前空間を好ましくないと考えるようになっていきました。

[104] 金融関係のシステムで Inline XBRL を使っていることがあります。 これは XHTML1XBRLXML名前空間を使って埋め込むことで、 Webブラウザーで表示もでき、 XBRL データを取り出すこともできる、 と謳ったものでした。 XHTML1 ベースであり、 HTML5 以降の仕様には整合しないものですが、 未だに使われているようです。

[105] 普通の XBRL データも提供する方が有用そうですし、 金融庁のデータベースも実際そうしています。むしろ HTML 版は Webブラウザーからの POST アクセスで生成される仕組みのようなので、 機械処理には向かなそうで、 Inline XBRL としている意味があるのかは謎です。 業界では Inline XBRL に対応したツールも使われていたりするのでしょうか??

[43] 現在 HTML では一切 XML名前空間は利用できません。ただし、 HTMLXHTML のテキスト・レベルでの互換性の観点から、 html 要素xmlns という名前の属性があっても不適合とはならず、単に無視されるなど、 一部 XML名前空間の構文が取り入れられています。ただし、あくまで無意味な構造が認められているに過ぎず、 実質的な機能は持ちません。

[81] 以上は構文としての HTML文書に関するものです。 XML (XHTML) では、内容モデルの制約の範囲内で、HTML要素とそれ以外の要素を混在させることができます。 また、構文解析によって得られた DOM の木においては、 HTML文書であっても、 (やはり内容モデルの制約の範囲内で) HTML 以外の要素を混在させることができます。

[82] 例えば、 head 要素メタデータ内容子要素として使うことができます。 メタデータ内容の一例として RDF/XMLrdf:RDF 要素は、 HTML文書に記述することはできませんが、 XML であれば、あるいは HTML 内の script によって挿入するのであれば、 head 要素子要素として利用することができます。

[83] XML Schemadocumentation 要素は、 任意の内容を認めており、そこにはHTML要素も含まれます。従って、 XML Schema要素を使った XML文書documentation 要素内に XML名前空間を使って HTML名前空間要素を含めることはできます。

RDF

[93] RDFameta 要素などの枠を超えて任意の HTML要素RDF に基づくメタデータを埋め込めるようにすることを提案していました。 宿主だった XHTML2 が破棄された後も根強く信仰を広め、W3C勧告ともなりましたが、 HTML との親和性の低さから HTML5 には受け入れられず、 RDF を扱わない世間一般の著者からは関心も持たれず、ほとんど実装されていません。 OGP が構文として採用したため、その範囲でのみ限定的に使われていますが、 皮肉なことに meta 要素しか使われていません。

[94] RDF/XML/HTML注釈Web 2.0 時代に広く用いられましたが、 HTML 注釈を使うことから XML コミュニティーにはあまりよく思われず、 RDF/XML を使うことから RDF コミュニティーの関心も次第に薄れてゆき、 構文が不必要に複雑なことから Webアプリケーション開発者も積極的に活用範囲を広めてゆくことはせず、 Web 2.0 ブームの収束と共に忘れ去られてゆきました。 他にも幾つか RDF in HTML の提案がありました。

歴史

[1] The whatwg September 2006 Archive by thread http://listserver.dreamhost.com/pipermail/whatwg-whatwg.org/2006-September/thread.html#7281 (名無しさん)

[2] The problems with namespaces in text/html (Was: MathML-in-HTML5) http://groups.google.co.jp/group/mozilla.dev.tech.mathml/msg/8a048192f90b2fe1 (名無しさん)

[3] dolphinling’s weblog » Blog Archive » Namespace syntax in HTML http://blog.dolphinling.net/2006/10/namespace-syntax-in-html/ (名無しさん)

[4] RDFa in HTML (Steven Pemberton 著, 2007-04-17 00:02:16 +09:00 版) http://lists.w3.org/Archives/Public/public-rdf-in-xhtml-tf/2007Apr/0068.html (名無しさん 2007-04-20 00:06:59 +00:00)

[5] Sam Ruby: HTML5 and Distributed Extensibility (2007-08-04 10:38:13 +09:00 版) http://www.intertwingly.net/blog/2007/08/02/HTML5-and-Distributed-Extensibility (名無しさん )

[96] Sam Ruby: SVG in HTML Momentum Building ( 版) http://www.intertwingly.net/blog/2007/10/18/SVG-in-HTML-Momentum-Building

[95] Feedback on SVGWG's SVG-in-text/html proposal (Ian Hickson 著, 版) http://lists.w3.org/Archives/Public/public-html/2008Aug/0852.html

[6] SVG and MathML in text/html (Henri Sivonen 著, 2008-03-09 19:46:47 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Mar/0039.html (名無しさん)

[7] Re: SVG and MathML in text/html (Ian Hickson 著, 2008-03-12 05:24:16 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Mar/0094.html (名無しさん)

[8] Re: SVG and MathML in text/html (Ian Hickson 著, 2008-03-12 05:24:16 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Mar/0094.html (名無しさん)

[9] CustomData - WHATWG Wiki (2008-03-27 10:30:19 +09:00 版) http://wiki.whatwg.org/wiki/CustomData (名無しさん)

[10] 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) 著, 2008-03-28 07:05:37 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Mar/0255.html

A feedback from Math WG (名無しさん)

[11] 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) 著, 2008-03-26 06:59:41 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Mar/0225.html (名無しさん)

[12] HTML/SVGInTextHTML - ESW Wiki (2008-03-30 19:35:17 +09:00 版) http://esw.w3.org/topic/HTML/SVGInTextHTML (名無しさん)

[13] Diagrams in HTML - WHATWG Wiki (2008-04-01 23:31:21 +09:00 版) http://wiki.whatwg.org/wiki/Diagrams_in_HTML (名無しさん)

[14] XML in HTML Meeting Report (2007-01-26 19:12:49 +09:00 版) http://www.w3.org/TR/NOTE-xh (名無しさん)

[15] >>14 このときの結論はその後の HTML WG の成果には全然反映されていませんね。 この結論の方向で標準化が進められていれば、現実の今とは違った状況になっていたかもしれませんのに。

この文書で説明されている背景や提案されている手法が最近のとほとんど変わらないのが、なんとも悲しい。

(名無しさん 2008-04-05 11:04:55 +00:00)

[16] Re: several messages about New Vocabularies in text/html (Ian Hickson 著, 2008-04-02 10:57:08 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Apr/0044.html (名無しさん)

[17] Supporting MathML and SVG in text/html, and related topics (Ian Hickson 著, 2008-04-10 18:51:20 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Apr/0205.html (名無しさん)

[18] >>17 折角だから全部読もうと思ったものの挫折orz (名無しさん 2008-04-13 08:08:23 +00:00)

[19] SVG in text/html (Andrew Emmons 著, 2008-04-15 20:06:36 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Apr/0392.html (名無しさん)

[20] Re: SVG in text/html (Ian Hickson 著, 2008-04-16 02:42:15 +09:00 版) http://lists.w3.org/Archives/Public/public-html/2008Apr/0407.html (名無しさん)

[21] SVG and text/html - Anne’s Weblog (2008-01-25 14:19:49 +09:00 版) http://annevankesteren.nl/2007/10/svg-html (名無しさん)

[22] SVG and HTML (2008-07-14 04:11:27 -04:00 版) http://lists.w3.org/Archives/Public/public-html/2008Jul/att-0179/svg-html-proposal.html

[23] Re: some technical thoughts about incremental improvements to forms (Lachlan Hunt 著, 版) http://lists.w3.org/Archives/Public/www-forms/2006Sep/0057.html

[26] SVG Filter Effects in HTML without External References (Henri Sivonen 著, 版) http://hsivonen.iki.fi/svg-filters-html5/

[24] SVG and MathML ( 版) http://hsivonen.iki.fi/test/svg-and-mathml-in-html.html

[25] Kiss The Moon (日月九曜 著, 版) http://kissmoon.net/ (text/html)

<?xml version="1.0" encoding="Shift_JIS" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ap="http://www.remus.dti.ne.jp/~a-satomi/ap" xml:lang="ja">
  <dd>動作確認環境は<a href="http://getfirefox.jp/" title="Firefox" ap:banner="links/firefox.png">Firefox</a> 3.X、<a href="http://wp.netscape.com/ja/browser/" title="Netscape" ap:banner="links/netscape.gif">Netscape Communicator</a> 4.78、<a href="http://www.jp.opera.com/" title="Opera" ap:banner="links/opera.png">Opera</a> 9.X、<a href="http://www.microsoft.com/windows/ie_intl/ja/default.mspx" title="マイクロソフト" ap:banner="links/ie.gif">Internet Explorer</a> 6.X / 7.Xの各Windows版です。</dd>

[27] SVG in text/html, getting closer (Cameron McCormack 著, 版) http://lists.w3.org/Archives/Public/public-svg-wg/2009JanMar/0191.html

[28] (X)HTML5 Tracking ( 版) http://html5.org/tools/web-apps-tracker?from=3976&to=3977

[29] Re: [xml-dev] Pragmatic namespaces ( 版) http://lists.xml.org/archives/xml-dev/200908/msg00203.html

[30] IRC logs: freenode / #whatwg / 20090907 ( 版) http://krijnhoetmer.nl/irc-logs/whatwg/20090907#l-337

[31] IRC logs: freenode / #whatwg / 20090915 ( 版) http://krijnhoetmer.nl/irc-logs/whatwg/20090915

[32] Surfin' Safari ( 版) http://weblogs.mozillazine.org/hyatt/archives/2004_07.html#005951

[33] Null change proposal for ISSUE-41 ( (Ian Hickson 著, 版)) http://lists.w3.org/Archives/Public/www-archive/2010Mar/0030.html

[34] RE: ISSUE-41: extensibility change proposal advocates ( (Tony Ross 著, 版)) http://lists.w3.org/Archives/Public/public-html/2010Aug/0116.html

[35] Working Group Decision on ISSUE-41 Decentralized extensibility ( (Sam Ruby 著, 版)) http://lists.w3.org/Archives/Public/public-html/2011Feb/0085.html

[36] Working Group Decision on ISSUE-41 Decentralized extensibility ( (Sam Ruby 著, 版)) http://lists.w3.org/Archives/Public/public-html/2011Feb/0085.html

[37] Re: Working Group Decision on ISSUE-41 Decentralized extensibility ( (Jirka Kosek 著, 版)) http://lists.w3.org/Archives/Public/public-html/2011Feb/0188.html

[38] IRC logs: freenode / #whatwg / 20110802 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20110802

[39] IRC logs: freenode / #whatwg / 20120508 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20120508

[78] SVG and HTML ( ( 版)) http://dev.w3.org/SVG/proposals/svg-html/svg-html-proposal.html

[79] Web Applications 1.0 r7918 Turn off a quirk in foreign lands when doing innerHTML parsing ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7917&to=7918

[87] innerHTML の設定の場合、 annotation-xml内容Chrome は常に外来要素として構文解析し、 Firefox は常に通常要素として構文解析するようです。

通常の構文解析なら、どちらも仕様通りの動作です。
[90] 仕様上のMathMLテキスト統合点の定義は要素を作成した字句を参照していて、 構文解析器外部から与えられる文脈要素である場合を考慮していないようです。 innerHTML 呼び出し時点での属性の状態によって判断するべきでしょう。

[89] >>90>>88 により修正されました。 >>87 は不具合のようです。

[91] Using SVG elements directly in HTML ( (Brian Birtles 著, 版)) http://lists.w3.org/Archives/Public/www-svg/2014Oct/0032.html

[97] Remove xml:base dependency · whatwg/html@56f4346 ( 版) https://github.com/whatwg/html/commit/56f4346ec71b2dc138038ce6512b626d6c563e00

[106] SVG and HTML ( 版) https://dev.w3.org/SVG/proposals/svg-html/svg-html-proposal.html

[107] Add MathML and SVG to dependencies and cross-reference their elements · whatwg/html@c35ad72 ( 版) https://github.com/whatwg/html/commit/c35ad7267634f640e8e22b615893b78d6252998e

[108] ( ()) https://www.imperialviolet.org/2015/12/24/rlwe.html

<svg

style="margin-left: 3em;"

xmlns:dc="http://purl.org/dc/elements/1.1/"

xmlns:cc="http://creativecommons.org/ns#"

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:svg="http://www.w3.org/2000/svg"

xmlns="http://www.w3.org/2000/svg"

xmlns:xlink="http://www.w3.org/1999/xlink"

xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"

xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"

width="533.48083"

height="450.41718"

viewBox="0 0 533.48083 450.41718"

id="svg2"

version="1.1"

inkscape:version="0.91 r13725"

sodipodi:docname="noise.svg">

<metadata

id="metadata248">

rdf:RDF

cc:Work

rdf:about="">

dc:formatimage/svg+xml</dc:format>

dc:type

rdf:resource="http://purl.org/dc/dcmitype/StillImage" />

dc:titleGnuplot</dc:title>

</cc:Work>

</rdf:RDF>

</metadata>

<defs