2011-02-28 56 views
1
<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/venue-listing"> 
    <xs:attribute name="lang" default="en"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:pattern value="en|zh" /> 
      </xs:restriction> 
     </xs:simpleType> 
    </xs:attribute> 
    <xs:element name="site"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="venue"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="url" type="xs:string" /> 
          <xs:element name="venue_nm" type="xs:string" /> 
          <xs:element name="address" type="xs:string"/> 
          <xs:element name="tags"> 
           <xs:complexType> 
            <xs:sequence> 
             <xs:element name="tag" type="xs:string" /> 
            </xs:sequence> 
           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
         <xs:attribute name="id" type="xs:string" use="required" /> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      <xs:attribute name="source" type="xs:integer" use="required" /> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

现在验证只是说cvc-complex-type.2.4.a:发现无效内容以元素开始“场地”。预计会有'{场地}'之一。 venues.xml第一个XML Schema“有效”但未按预期工作(cvc-complex-type.2.4.a)

<site source="21" xmlns="http://example.com/venue-listing"> 
    <venue id="333048"> 
       .... 
    </venue> 
    <venue id="323"> 
       .... 
    </venue> 
</site> 

回答

4

每此架构,必须发生元件场地恰好一次,因此

[不超过] One of '{venue}' is expected.

为了允许多个场地,使用

<xs:element name="venue" maxOccurs="unbounded"> 

的默认maxOccurs为1(见XML Schema spec)。

+0

也许这有帮助,但现在我得到错误'cvc-complex-type.2.4.d:无效的内容被发现从元素'场地'开始。在这一点上,预计没有任何子元素。' – Moak 2011-03-01 05:19:10

+0

这并不是很明显,为什么你在修改后的模式中出现新错误。也许你需要发布新的schema + xml作为一个新的问题或者作为这个新的问题的补充。 – xan 2011-03-03 02:03:20