1

XML スパイを使用して、XSD から XML ファイルを自動的に生成しています。ただし、常にルート要素の前に n1: または n2: を付けているようです。たとえば、次のようなものが生成されます

<?xml version="1.0"?>
<n2:EmployeeData>
   <Employee>
     <name>xyz</name>
     <dateOfBirth>10.10.10</dateOfBirth>
     <email>a@a.com</email>
   </Employee>
</n2:EmployeeData>

以下を生成したいと思います。

<?xml version="1.0"?>
<EmployeeData>
   <Employee>
     <name>xyz</name>
     <dateOfBirth>10.10.10</dateOfBirth>
     <email>a@a.com</email>
   </Employee>
</EmployeeData>
4

2 に答える 2

2

これは、Java JAXB NamespacePrefixMapper が設定されていない場合と似ています。名前空間 uri とプレフィックスを宣言すると、正しいプレフィックス (またはプレフィックスなし) と名前空間 uri を使用して XML が生成されます。チェックイン XML Spy には、ネームスペース プレフィックスを設定するオプションがあります。

于 2011-07-06T22:42:08.427 に答える
0

まず、名前空間は XML の基本的な概念です。名前空間に慣れていない場合は、時間をかけて学習し、理解してください。名前空間は URI ですが、既存の Web ページを指す必要はありません (指すことはできます)。それらは単なる一意の識別子です。

XML スキーマにはターゲット名前空間があるため、インスタンス ドキュメントのルート要素はその名前空間にある必要があります。必要に応じて、インスタンス ドキュメントで他の名前空間プレフィックスを使用することもできますが、必要なターゲット名前空間 URI にプレフィックスをバインドする名前空間定義があることを確認してください。@skaffman がコメントしたように、投稿した XML は、プレフィックスから名前空間へのマッピングなしで名前空間プレフィックスを使用するため、実際には整形式ではありません。問題に対処する別の方法は、プレフィックスを削除し、ルート要素で既定の名前空間を定義することです。インスタンス ドキュメントがどの名前空間にも存在しない場合は、スキーマが正しくないため、targetNamespace属性を削除して修正する必要があります。

ところで、あなたのドキュメントでは、ルート要素だけが名前空間に属しています。これは一般的な方法ではなく、この場合、そのような結果はスキーマ ドキュメントの意図しない機能によって引き起こされたと思います。デフォルトでは、スキーマ ドキュメントでグローバルに宣言されている要素のみがターゲット名前空間に含まれます。これは、要素elementFormDefault="qualified"に属性を設定することで変更できます。<xs:schema>この属性は、このスキーマでローカルに宣言された要素もターゲット名前空間に属していることを確認します。その属性のデフォルト値は false で、属性が欠落している場合に適用されます。

于 2011-07-11T15:16:13.547 に答える