XSD验证包含序列和属性的元素

时间:2014-07-11 07:17:53

标签: xml xsd

为什么我的XSD不能用于跟踪XML结构? 它说'无效内容是从元素'权利'开始的。此时不会有子元素。'

XML:

<Root>...
   <Rights Status="xxx" Date="2009-02-03T00:00:00">
      <Right>
         <Amount>9999</Amount>
         <AmountCovered>888</AmountCovered>
      </Right>
      <Right>
         <Amount>8888</Amount>
         <AmountCovered>777</AmountCovered>
      </Right>
      ...
   </Rights>
   ...

XSD:

<xs:element name="Rights" minOccurs="0">
   <xs:complexType>
      <xs:sequence>
         <xs:element name="Right" maxOccurs="unbounded">
            <xs:complexType>
               <xs:all>
                  <xs:element name="Amount" type="xs:string" minOccurs="0" />
                  <xs:element name="AmountCovered" type="xs:string" minOccurs="0" />
               </xs:all>
            </xs:complexType>
         </xs:element>
      </xs:sequence>
      <xs:attribute name="Status" use="optional" type="xs:string" />
      <xs:attribute name="Date" use="optional" type="xs:dateTime" />
    </xs:complexType>
 </xs:element>

1 个答案:

答案 0 :(得分:0)

问题是根元素<Rights>不能用minOccurs =&#34; 0&#34;指定 删除<xs:element name="Rights">中的minOccurs或将另一个根元素包装在<Rights>之外
XSD:
<?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="Rights" minOccurs="0"> ... </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>