まず第一に、同じ質問に答えようとする同様のスレッドがあることは知っていますが、残念ながら私にとっては混乱を解消するものではありません。
では、もう一度質問です。
xml スキーマ ドキュメントで targetNamespace を指定する必要があるのはなぜですか?
instanceDocument で複数の名前空間を定義し、これらの名前空間を対応するスキーマ ドキュメントに関連付けることができます。どこで targetNamespace が必要になるのでしょうか?
まず第一に、同じ質問に答えようとする同様のスレッドがあることは知っていますが、残念ながら私にとっては混乱を解消するものではありません。
では、もう一度質問です。
xml スキーマ ドキュメントで targetNamespace を指定する必要があるのはなぜですか?
instanceDocument で複数の名前空間を定義し、これらの名前空間を対応するスキーマ ドキュメントに関連付けることができます。どこで targetNamespace が必要になるのでしょうか?
targetNamespace は、作成中のスキーマに割り当てられる名前空間です。これは、インスタンスが宣言する型にアクセスするために使用する名前空間です。次のコードでは、スキーマが名前空間に割り当てられますhttp://www.somewebsite.com/Something
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.somewebsite.com/Something/Foo">
...
</schema>
XML ドキュメント インスタンスでは、使用する名前空間を xmlns 属性で宣言します。例えば:
<purchaseOrder xmlns="http://www.somewebsite.com/Something/Foo"
xmlns:addr="http://www.somewebsite.com/Something/Foo/addr">
<accountName>Shanita</accountName>
<accountNumber>123456</accountNumber>
<addr:street>20 King St</addr:street>
</purchaseOrder>
ここでのデフォルトの名前空間はhttp://www.somewebsite.com/Something/Foo
で、以前に作成したスキーマを参照します。この名前空間は、プレフィックスが付いていない限り、それを宣言する要素とその子要素に適用されます。この例では、 を除くすべての要素がデフォルトの名前空間に属していますaddr:street
。プレフィックスが付いているため、addr 名前空間に属します ( xmlns:addr="http://www.somewebsite.com/Something/Foo/addr
")