名前空間は要素名を修飾するために使用され、プレフィックスは XML を簡素化するために使用されます。デフォルトでは、URI が「空」の名前空間があります。
Tomalak の例の展開:
<!-- Mixing namespaces default namespace -->
<node xmlns:gc="http://other/namespace/gc"> <!-- node is in default NS -->
<child> <!-- child is still in default NS, inherited from parent - node -->
<gc:grandchild/> <!-- grandchild is in the "http://other/namespace/gc", because of gc prefix -->
</child>
<child xmlns="http://some/namespace/uri/" xmlns:gc2="http://other/namespace/gc"> <!-- node is in "http://home/namespace/uri" because of declration -->
<gc2:grandchild/> <!-- again, in "http://other/namespace/gc", despite different prefix -->
<grandchild/> <!-- yet this one is in "http://home/namespace/uri", no prefix, inherited from parent -->
</child>
</node>
ここで重要なのは、両方の「子」ノードが異なるノードであることです。それらは同じように見えますが、「完全修飾名」が異なります」。これは、XSL では特に重要です。
孫も同じ。gc:grandchild と gc2:grandchild は同じです。同じ名前空間 URI を共有しますが、異なるプレフィックスを使用します。3 番目の孫ノードは、親子ノードから継承された名前空間を使用しているため、異なります。
名前空間は、さまざまなボキャブラリーの xml を 1 つのドキュメントに「組み合わせて一致させる」ことができるため、重要です。たとえば、XHTML ドキュメント内への SVG マークアップの埋め込み。名前空間を使用すると、同じベース ノード名の重複を防ぐことができます。
ほとんどの単純な XML の問題では、それらは不要です。しかし、標準などをマージし始めると、それらは非常に重要になります。
もう 1 つの例は、Web サービスの SOAP エンベロープ内に SAML アサーションを埋め込むことです。SOAP は 1 つの標準であり、SAML は別の標準です。独立した標準と標準化団体ですが、どちらも「任意の XML」の領域をドキュメントに挿入できます。名前空間はコンテンツを分離します。