23

Xmlファイルを次のようにしたいと思います

<root>
<name>a</name>
<age>23</age>
</root>

 or 

<root>
<empno>b<empno>
<designation>ase</designation>
</root>

以下のような「選択」インジケーターを使用して、上記のXMLスキーマを作成することは可能ですか?

    <xsd:element name="root">
    <xsd:complexType>
    <xsd:choice>

    <xsd:element name="name"/>
    <xsd:element name="age" />

     or

    <xsd:element name="empno"/>
    <xsd:element name="designation" />

    <xsd:choice>

    </xsd:complexType>
    <xsd:element>

このようにすることは可能ですか?

4

1 に答える 1

39

はい、あなたはほとんどそこにいます..ちょうど欠けていsequenceます..それは一連のフィールドであるため、それらをシーケンスの下にラップする必要があります..

これらのシーケンス タグは、<Choice>タグの下になります。これらのタグのセット (Sequence) のいずれかが検証されます。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root" type="root"/>
  <xs:complexType name="root">
    <xs:choice>
      <xs:sequence>
        <xs:element name="empno" type="xs:string" />
        <xs:element name="designation" type="xs:string" />
      </xs:sequence>
      <xs:sequence>
        <xs:element name="name" type="xs:string" />
        <xs:element name="age" type="xs:unsignedByte" />
      </xs:sequence>
    </xs:choice>
  </xs:complexType>
</xs:schema>

-------------------------------------------------- ------------------------------------------------------

ここでもう 1 つの提案を追加したいと思います。

次のように、ネストされた宣言を使用していることがわかります。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="trunk">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="branch1" type="xs:string"/>
              <xs:element name="branch2" type="xs:string"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="other" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

常にカスタム型の使用を優先してください! このような:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root" type="root"/>

  <xs:complexType name="root">
    <xs:sequence>
      <xs:element name="trunk" type="trunk"/>
      <xs:element name="other" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="trunk">
    <xs:sequence>
      <xs:element name="branch1" type="xs:string"/>
      <xs:element name="branch2" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

これにより可読性が向上し、complexType/simpleType を再利用できます。

それが役に立てば幸い..

于 2013-02-26T14:13:07.983 に答える