web-dev-qa-db-ja.com

createElementとcreateElementNS

これら2つの違いは何ですか?私は本当の、本質的な違いを意味します。通常のcreateElementの将来の保持は何ですか?

Svgはxmlではなくhtmlです。わかった。したがって、createElementNS(ns_string, 'svg')を使用してから、setAttributeNS(null,,)を使用します。どうして?なぜsetAttributeNS('my_ns',,)ではありませんか?

なぜns_string be http://www.w3.org/2000/svgとランダムな文字列ではない?名前空間が1つしかない場合、名前空間の目的は何ですか?

通常のhtmlのnsの目的は何ですか?既存のコードでcreateElementのすべてのインスタンスをcreateElementNSに変更する必要がありますか?

DOM-Level-2 仕様を読んでいます。しかし、私はまだ困惑しています。

59
CoR

名前空間が解決しようとしている問題を理解するには、ファイル拡張子を検討してください。 3文字のファイル拡張子は、ファイルの内容を説明するという非常に悪い仕事をしました。それらは曖昧であり、バージョン情報を伝えません。 XML名前空間は、同じ問題を解決するために文字列、URIのより大きなスペースを使用し、短いプレフィックスを使用して、同じドキュメントに複数の種類のXMLを簡潔に混在させることができます。

名前空間が1つしかない場合の名前空間の目的は何ですか?

さまざまな種類のXML、およびそれらの種類のさまざまなバージョンを識別するために使用される多くの名前空間があります。

SVGとMathMLは、HTML5に埋め込むことができる独自の名前空間を持つ2種類のXMLであり、多くの場合、別のXML名前空間であるXLinkを使用します。対応する名前空間を備えた他の多くのXMLスキーマは、クライアントとサーバー間のメッセージの受け渡し、およびデータストレージに使用されます。

XHTMLは、HTMLを有効なXMLとして表現する試みです。独自の名前空間があります。

したがって、createElementNS(ns_string、 'svg')を使用してから、setAttributeNS(null ,)を使用します。どうして?なぜsetAttributeNS( 'my_ns' ,)しないのですか????

名前空間URIでsetAttributeNSを使用するときは、おそらく名前空間URIでcreateElementNSを一貫して使用するようにしてください。

XMLは複数のステップで定義されました。仕様の最初のバージョンでは、名前空間について何も言及していませんでしたが、プレフィックスと特別なxmlns属性を使用して、名前空間のないXMLを名前空間のないXMLの上に指定できるように十分な構文を残しました。 XML仕様 の意味:

「XML Namespaces in XML Recommendation [XML Names]は、コロン文字を含む名前に意味を割り当てます。したがって、著者は名前空間の目的を除いてXML名にコロンを使用するべきではありませんが、XMLプロセッサはコロンを名前文字として受け入れる必要があります」

XML名前空間を使用すると、XML処理アプリケーションは処理対象を認識し、複数の種類のXMLを同じドキュメントに混在させることができます。

Ns_stringが " http://www.w3.org/2000/svg "でなければならない理由

これには、SVGのバージョンが標準化された年である2000が含まれているため、有用な情報が含まれています。

xmlns:svgとともに使用すると、svg:プレフィックスがSVGを意味し、XMLの他の方言ではないことをブラウザに通知します。

48
Mike Samuel