我试图写这几行XML模式:XML Schema的验证问题
<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:地名与WC [##任何](或从它们的取代基的元素)违反“唯一粒子归因“。在根据该模式验证,不确定性会为这两个粒子
问题已关闭,谢谢大家!我发现这个神奇的工具:http://www.freeformatter.com/xsd-generator.html我的问题是,我不能指定“字符串”(SOMENAME)如果节点(placeName)已经包含属性字符串和子模式,串。但根据上面的xml-xsd转换器,我甚至不需要指定节点包含文本字符串。大! – user3241376