繁体   English   中英

用模式验证重复元素组

[英]validating repeating element groups with schema

我在尝试使我的xml针对我的架构进行验证时遇到了很大的困难。 发生以下错误:

   Element 'date': This element is not expected. Expected is ( race ).
Element 'date': This element is not expected. Expected is ( race ).
Element 'date': This element is not expected. Expected is ( race ).
Element 'date': This element is not expected. Expected is ( race ). 

以下是我的架构

<!-- Structure definition -->
    <xs:element name="history">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="period" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="period">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="date" minOccurs="1" maxOccurs="unbounded"/>
                <xs:element ref="track" minOccurs="1" maxOccurs="unbounded"/>
                <xs:element ref="race" minOccurs="1" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="year" type="Tyear"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="date">
        <xs:simpleType>
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:element>
    <xs:element name="track">
        <xs:simpleType>
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:element>
    <xs:element name="race">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="rider" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="nr" type="Tracenr"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="rider">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="place" maxOccurs="1"/>
                <xs:element ref="first_name" maxOccurs="1"/>
                <xs:element ref="last_name" maxOccurs="1"/>
                <xs:element ref="manufacturer" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="place">
        <xs:simpleType>
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:element>
    <xs:element name="first_name">
        <xs:simpleType>
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:element>
    <xs:element name="last_name">
        <xs:simpleType>
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:element>
    <xs:element name="manufacturer">
        <xs:simpleType>
            <xs:restriction base="xs:string"/>
        </xs:simpleType>
    </xs:element>

</xs:schema>

这是我的xml的小快照

<history>
  <period year="2011">
    <date>10/16/2011</date>
    <track>Portimao</track>
    <race nr="1">
      <rider>
        <place>1</place>
        <first_name>Marco</first_name>
        <last_name>Melandri</last_name>
        <manufacturer>Yamaha</manufacturer>
      </rider>
      <rider>
        <place>2</place>
        <first_name>Eugene</first_name>
        <last_name>Laverty</last_name>
        <manufacturer>Yamaha</manufacturer>
      </rider>
      [...]
      <rider>
        <place>DNF</place>
        <first_name>Tom</first_name>
        <last_name>Sykes</last_name>
        <manufacturer>Kawasaki</manufacturer>
      </rider>
    </race>
    <date>10/16/2011</date>
    <track>Portimao</track>
    <race nr="2">
      <rider>
        <place>1</place>
        <first_name>Carlos</first_name>
        <last_name>Checa</last_name>
        <manufacturer>Ducati</manufacturer>
      </rider>
      <rider>
        <place>2</place>
        <first_name>Sylvain</first_name>
        <last_name>Guintoli</last_name>
        <manufacturer>Ducati</manufacturer>
      </rider>
      [...]
      <rider>
        <place>15</place>
        <first_name>Noriyuki</first_name>
        <last_name>Haga</last_name>
        <manufacturer>Aprilia</manufacturer>
      </rider>
    </race>
    <date>10/02/2011</date>
    <track>Magny-Cours</track>
    <race nr="1">
      <rider>
        <place>1</place>
        <first_name>Carlos</first_name>
        <last_name>Checa</last_name>
        <manufacturer>Ducati</manufacturer>
      </rider>
      [...]

前一年,“期间”重复了3次。 非常感谢你

由于序列(日期,曲目,比赛)重复,因此您需要指定以下内容:

    <xs:sequence maxOccurs="unbounded">
        <xs:element ref="date" minOccurs="1" maxOccurs="unbounded"/>
        <xs:element ref="track" minOccurs="1" maxOccurs="unbounded"/>
        <xs:element ref="race" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM