我正在尝试为这些行编写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”。在针对此模式进行验证期间,将为这两个粒子创建歧义
答案 0 :(得分:1)
您无法在sequence
内使用simpleContent
,我怀疑您真正想要的是使用complexContent
,但请输入mixed="true"
类型。
答案 1 :(得分:1)
扩展xs:anyType不起作用。它说“你可以有任何元素序列,然后是地名”。这是本质上不可预测的,没有前瞻,因为当你找到一个地名你不知道它是否是“任何元素序列”或最终地名的一部分。
顺便说一下,请不要以这种方式编辑你的问题,把它变成一个完全不同的问题。这使得无法理解现有的答案。