1

このようなスキーマがある場合:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema  targetNamespace="http://mysticwarlords.kaa/XMLSchema"
            xmlns="http://mysticwarlords.kaa/XMLSchema"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="titletype">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Warlord"/>
            <xs:enumeration value="FirstMate"/>
            <xs:enumeration value="Jester"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="warlord">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="warlordName" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="title" type="titletype" />
        </xs:complexType>
    </xs:element>

    <xs:element name="warband">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="warbandName" type="xs:string" />
            <xs:element name="warlords">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="warlord" minOccurs="1" maxOccurs="unbounded">
                    <xs:unique name="eachTitleOnlyOnce">
                        <xs:selector xpath="warlord"/>
                        <xs:field xpath="@title"/>
                    </xs:unique>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="wargroup">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="wargroupName" type="xs:string" />
            <xs:element name="warlords">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="warlord" minOccurs="1" maxOccurs="10" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="war">
        <xs:complexType>
            <xs:choice>
              <xs:element ref="wargroup"/>
              <xs:element ref="warband"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>

</xs:schema>

要素のみのxmlファイルを検証すると思いますか?

ルート要素になることだけを許可したい場合はどうなりますか?

4

1 に答える 1

1

スキーマは、ルート要素warlordまたはwarbandまたはwargroupまたはを含むXMLファイルを検証しますwar

私があなたの質問を正しく理解しているなら、あなたが望むのは、ルート要素を含むXMLファイルのみを検証することですwarwarlordこれを行うには、の定義を変更し、複合型という名前を付ける必要があります-例warbandwargroup

  <xs:complexType name="warlord"> 
      <xs:sequence> 
          <xs:element name="warlordName" type="xs:string"/> 
      </xs:sequence> 
      <xs:attribute name="title" type="titletype" /> 
  </xs:complexType> 

次に、代わりにこのタイプを使用しますref-例:

<xs:element name="war">   
    <xs:complexType>   
        <xs:choice>   
          <xs:element name="wargroup" type="wargroup"/>   
          <xs:element name="warband" type="warband"/>   
        </xs:choice>   
    </xs:complexType>   
</xs:element>   
于 2012-03-24T23:21:07.570 に答える