xml-Schema と名前空間を使用して xml ドキュメントを検証する場合、インスタンス ドキュメントは、名前空間自体を宣言するだけでなく、それを修飾する名前空間を前に付けたグローバル要素を持つ必要があります。
この場合、要素を修飾するにはデフォルトの名前空間で十分だと考える人もいるかもしれませんが、xml-Schema には明らかに別の意見があります。
何故ですか?xml-Schema が対処できないデフォルトの名前空間についてはどうですか?
xml-Schema と名前空間を使用して xml ドキュメントを検証する場合、インスタンス ドキュメントは、名前空間自体を宣言するだけでなく、それを修飾する名前空間を前に付けたグローバル要素を持つ必要があります。
この場合、要素を修飾するにはデフォルトの名前空間で十分だと考える人もいるかもしれませんが、xml-Schema には明らかに別の意見があります。
何故ですか?xml-Schema が対処できないデフォルトの名前空間についてはどうですか?
これは、カメレオンの名前空間をサポートし、カメレオンコンポーネントの名前の衝突を回避するための設計によるものだと思います。つまり、namsepaceを提供しないことで、デフォルトでカメレオンのデザインになります。ただし、デフォルトのnamspaceとしてtargetNamspaceを指定しないと、問題とエラーが発生します。
注:XFront.comから抜粋した一部のコンテンツ
集合的に開発された一連のスキーマ設計ガイドライン
一般的なルールは次のとおりです。名前空間のないスキーマを除いて、すべてのXMLスキーマは少なくとも2つの名前空間(targetNamespaceとXMLSchema名前空間)を使用します。これらの2つの名前空間の処理に関して、スキーマを設計する方法は3つあります。
XMLSchemaをデフォルトの名前空間にし、targetNamespace内のコンポーネントへのすべての参照を明示的に修飾します。
逆も同様です。targetNamespaceをデフォルトの名前空間にし、XMLSchema名前空間のすべてのコンポーネントを明示的に修飾します。
デフォルトの名前空間を使用しないでください-targetNamespace内のコンポーネントへの参照を明示的に修飾し、XMLSchema名前空間からのすべてのコンポーネントを明示的に修飾します。
どのアプローチが正しいかに関しては、実際にはベストプラクティスはありません。主に、それはすべて設計者次第です。
ただし、私の調査では、次のことがわかりました。-スキーマの構築に使用されるコンポーネント(スキーマ、要素、complexType、シーケンスなど)の修飾は、修飾子が常に同じであるため、通常、混乱の原因にはなりません。つまり、人々はxsd:schema、xsd:elementなどを見ることに慣れています。
これがあなたの質問に答えることを願っています。