スキーマ (スキーマの開発) から開始し、現実的で正しい対応する XML ファイルを検討する際に、既定の名前空間を使用することの技術的な側面を把握しようとしています。
Oxygen を使用してスキーマを設計しています。
理想的には、XML ファイルのユーザーがデフォルトの名前空間を処理する必要がないことを望みます (デフォルトの名前空間を宣言したドキュメントで XPath を使用しようとすると、面倒なので)。しかし、私がこれまでに読んだことから、それは不可能だと思われますか?
私の例のスキーマは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/"
xmlns="http://www.example.com/">
<xs:element name="QueryResponse">
<xs:complexType>
<xs:sequence>
<xs:element ref="Result"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Result">
<xs:complexType>
<xs:sequence>
<xs:element ref="Patient"/>
</xs:sequence>
<xs:attribute name="type" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="VisitNumber" type="xs:string"/>
<xs:element name="Demographics">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="firstNames" type="xs:string"/>
<xs:element minOccurs="1" maxOccurs="1" name="surname" type="xs:string"/>
<xs:element minOccurs="1" maxOccurs="1" name="dateOfBirth" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Patient">
<xs:complexType>
<xs:sequence>
<xs:element ref="Demographics"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
そして、oxygen は次のような XML の例を生成します。
<?xml version="1.0" encoding="UTF-8"?>
<QueryResponse xmlns="http://www.example.com/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com/ file:/home/me/simplifiedResponse.xsd">
<Result>
<Patient>
<Demographics>
<firstNames xmlns="">firstNames0</firstNames>
<surname xmlns="">surname0</surname>
<dateOfBirth xmlns="">2006-05-04T18:13:51.0Z</dateOfBirth>
</Demographics>
</Patient>
</Result>
</QueryResponse>
私の質問は:
- Oxygen が空の xmlns 属性を持つ子要素を生成するのはなぜですか?
- どうすればこれを回避できますか?
- 名前空間が宣言されていない (デフォルトまたはそれ以外の) XML ドキュメントを正しく記述および検証できるスキーマを作成することは可能ですか?
- (c) の答えが「はい」の場合、私のスキーマの例をどのように変更しますか?
- これらすべてをもう少し深く説明し、同時に読みやすくするための本当に優れたドキュメントは何ですか (つまり、http://www.w3.org/XML/に理解しやすいドキュメントはまったく見つかりません)または読む)。