【发布时间】:2014-03-26 17:41:12
【问题描述】:
我正在尝试为这些行编写 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”的内容无效。元素 'sequence' 无效、错位或经常出现。 表示的“序列”是第二个,用于“性别”标签。
在我做了一些改变之后:
<?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](或它们替换组中的元素)违反“唯一粒子属性”。在针对此模式进行验证期间,将为这两个粒子创建歧义
【问题讨论】:
-
问题结束,谢谢大家!我找到了这个神奇的工具:freeformatter.com/xsd-generator.html 我的问题是如果节点(placeName)已经包含属性字符串和子模式字符串,我无法指定“字符串”(SOMENAME)。但是根据上面的 xml-xsd 转换器,我什至不需要指定节点包含文本字符串。太好了!