0

スキーマ (スキーマの開発) から開始し、現実的で正しい対応する 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>

私の質問は:

  1. Oxygen が空の xmlns 属性を持つ子要素を生成するのはなぜですか?
  2. どうすればこれを回避できますか?
  3. 名前空間が宣言されていない (デフォルトまたはそれ以外の) XML ドキュメントを正しく記述および検証できるスキーマを作成することは可能ですか?
  4. (c) の答えが「はい」の場合、私のスキーマの例をどのように変更しますか?
  5. これらすべてをもう少し深く説明し、同時に読みやすくするための本当に優れたドキュメントは何ですか (つまり、http://www.w3.org/XML/に理解しやすいドキュメントはまったく見つかりません)または読む)。
4

1 に答える 1

2
  1. 問題の要素は名前空間にないためです。修飾されていない拡張名は接頭辞なしの名前でしか表すことができないため、代替接頭辞を使用することはできません。ただし、それらは空でないデフォルトの名前空間を使用する要素の子です。したがって、それらをドキュメントに表示できる唯一の方法は、デフォルトの名前空間宣言をクリアすることです。

  2. 要素がどの名前空間にも存在しないと宣言するのをやめます。elementFormDefault="qualified"最も簡単な方法は、スキーマ要素に追加することです。

  3. はい。

  4. targetNamespaceの属性を省略しますxs:schema

  5. グーグルはあなたの友達です。

于 2013-06-04T16:06:35.843 に答える