XML Schema验证问题

时间:2014-03-26 17:41:12

标签: xml xsd

我正在尝试为这些行编写XML模式:

<place id = "1234">
   <placeName lang = "de" type = "std"> SOMENAME <gender> n </gender> </placeName>
</place>

架构如下:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
<xs:element name="place">
    <xs:complexType >
     <xs:complexContent>
       <xs:restriction base="xs:anyType"> 

           <xs:sequence>
            <xs:element name= "placeName">
               <xs:complexType>
                 <xs:simpleContent>
                    <xs:extension base="xs:string">

                        <xs:sequence>  
                         <xs:element name= "gender" type= "xs:string"/>

                        </xs:sequence>    
                        <xs:attribute name= "lang" type= "xs:string" />
                        <xs:attribute name= "type" type= "xs:string" />             
                    </xs:extension>

                 </xs:simpleContent>
               </xs:complexType> 
             </xs:element>
           </xs:sequence>
         <xs:attribute name="id" type="xs:string" />
       </xs:restriction>
      </xs:complexContent>
     </xs:complexType>
    </xs:element>   
   </xs:schema>

我继续收到此错误:E [Xerces] s4s-elt-invalid-content.1:'#AnonType_placeNameplace'的内容无效。元素'序列'无效,错位或过于频繁发生。 对于“性别”标签,“序列”表示第二个。


我做了一些改变之后:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
<xs:element name="place">
    <xs:complexType >
     <xs:complexContent mixed = "true">
       <xs:extension base="xs:anyType"> 

           <xs:sequence>
            <xs:element name= "placeName">
               <xs:complexType>
                 <xs:complexContent mixed= "true">
                     <xs:extension base="xs:anyType">

                        <xs:sequence>  
                         <xs:element name= "gender" type= "xs:string"/>

                        </xs:sequence>    
                        <xs:attribute name= "lang" type= "xs:string" />
                        <xs:attribute name= "type" type= "xs:string" />             
                    </xs:extension>

                 </xs:complexContent>
               </xs:complexType> 
             </xs:element>
           </xs:sequence>
   <xs:attribute name="id" type="xs:string" />
       </xs:extension>
     </xs:complexContent>
    </xs:complexType>
 </xs:element>   
</xs:schema>

我继续收到此错误:cos-nonambig:placeName和WC [## any](或来自其替换组的元素)违反“Unique Particle Attribution”。在针对此模式进行验证期间,将为这两个粒子创建歧义

2 个答案:

答案 0 :(得分:1)

您无法在sequence内使用simpleContent,我怀疑您真正想要的是使用complexContent,但请输入mixed="true"类型。

答案 1 :(得分:1)

扩展xs:anyType不起作用。它说“你可以有任何元素序列,然后是地名”。这是本质上不可预测的,没有前瞻,因为当你找到一个地名你不知道它是否是“任何元素序列”或最终地名的一部分。

顺便说一下,请不要以这种方式编辑你的问题,把它变成一个完全不同的问题。这使得无法理解现有的答案。