3

私は単純なhtmlドキュメントを持っています。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns="http://www.w3.org/2000/xmlns
      xmlns:bar="http://www.foo.com/schemas/bar">
 <head>
 </head>
 <body>
        <img src="penguins.png" bar:xwidth="300"/>
 </body>
</html>

Chrome または Firefox デバッガー (または Javascript) で属性 bar:xwidth を調べると、属性の名前空間 URI が「http://www.foo.com/schemas/bar」になることが予想されますが、残念ながらヌル。

問題は、要素/属性の解析とプログラムによる構築のようです。Javascript では、必要なものを作成できますが、上記または element.innerHTML = "" を読み込んで解析すると、名前空間が null の属性が生成されます。

属性の名前空間URIを正しく取得する方法についてのアイデアはありますか?

4

1 に答える 1

5

任意のプレフィックスの名前空間の解決は、HTML の機能ではなく、XML の機能です。そのため、ページにapplication/xhtml+xmlMIME タイプを指定すると、ブラウザーは XML パーサーを使用し、名前空間は意図したとおりに解決されます。

xml:langブラウザーの HTML パーサーは、埋め込まれた SVGとMathML を解析する場合を除いて、接頭辞/名前空間の解決をまったくサポートしていませんxlink:href。独自の名前空間はサポートされていません。

innerHTMLHTML ドキュメント内の は、HTML パーサーとまったく同じように機能します。

(特に、IE の HTML パーサーには注意してください。これは、名前にコロンが含まれる要素と属性をどうするかについて独自の概念を持っています。ただし、namespaceURI の値は取得できません)

したがって、唯一のオプションは次のとおりapplication/xhtml+xmlです。(ii) スクリプトを使用して名前空間属性を作成します。または (iii) 名前空間属性を使用しないでください。

于 2012-11-22T01:16:56.330 に答える