[1] [[XML情報集合]]は [[DOM]] を含めた種々のデータモデルを元に作られましたから、 [[DOM木]]を [[XML情報集合]]に変換することができますし、[[XML情報集合]]を[[DOM木]]に変換することもできます。 ただし一方から他方へと完全に (情報損失なく) 変換することができるわけではありません。 * DOM3 における対応関係 [2] [[DOM3]] は[[XML情報集合]]から[[DOM]]へ、また[[DOM]]から[[XML情報集合]]への変換方法を定義していました。 * HTML から XML 情報集合への変換 [4] [[HTML構文解析器]]の出力を [[XML]] に対応したツールに引き渡すときに、 [[HTML DOM]] を [[XML]] と互換性のある形式に変換する方法を [[HTML Standard]] は定義しています。 ;; [5] 「[[情報集合]]」への変換とは言っていますが、[[XML情報集合]]の用語で説明されているわけではなく、 具体的な表現形式には触れない曖昧な定義となっています。 ** 仕様書 [REFS[ - [3] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) ]REFS] ** 定義 [6] [CODE(XML)@en[[[DOCTYPE]]]] に対応していないなら、 [CODE(HTML)@en[[[DOCTYPE]]]] を除去して[['''構いません''']] [SRC[>>3]]。 [7] [[名前空間なし]]の [CODE(HTMLa)@en[[[xmlns]]]] [[属性]]、 [CODE(XML)@en[[[xmlns:]]]] で始まる名前の[[属性]]、 [[XMLNS名前空間]]の[[属性]]に対応していないなら、これらを除去して[['''構いません''']] [SRC[>>3]]。 [8] 必要に応じて[[名前空間宣言]]を出力して[['''構いません''']] [SRC[>>3]]。 [9] [[要素]]や[[属性]]の[[局所名]]で使えない文字が含まれていれば、 [CODE[U[VAR[hhhhhh]]]] ([VAR[h]] は[[大文字]]の[[十六進数字]]) という形式の[[符号位置]]の表記に置き換えて[['''構いません''']] [SRC[>>3]]。 [10] [[注釈]]に2連続の [CODE(char)[[[-]]]] や末尾の [CODE(char)[[[-]]]] を入れられないなら、 最初の [CODE(char)[[[-]]]] の後に [CODE(char)[[[U+0020]]]] を挿入して[['''構いません''']] [SRC[>>3]]。 [11] [[文字データ]]、[[属性値]]、[[注釈]]で認められない文字があれば、 [CODE(char)[[[U+000C]]]] は [CODE(char)[[[U+0020]]]]、それ以外は [CODE(char)[[[U+FFFD]]]] に置き換えて[['''構いません''']] [SRC[>>3]]。 [12] [[無奇癖モード]]、[[限定奇癖モード]]、[[奇癖モード]]の区別を保持できないなら、 除去して[['''構いません''']] [SRC[>>3]]。 [13] [[[CODE(HTMLe)@en[form]]要素指示子]]の情報を保持できないなら、除去して[['''構いません''']] [SRC[>>3]]。 [14] [CODE(HTMLe)@en[[[template]]]] [[要素]]の[[雛形内容]]を保持できないなら、除去して[['''構いません''']] [SRC[>>3]]。