我是XML和XSD的新手,我一直在尝试将此xsd代码验证为xml文件,但没有任何成功。我在下面收到错误,我看不出有什么问题。任何帮助将不胜感激。
s4s-elt-invalid-content.1:内容 '#AnonType_endangered_species'是无效的。元素'元素'是 无效,错位或过于频繁发生。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="endangered_species">
<xsd:complexType>
<xsd:element name="animal" type="xsd:string" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" minOccurs="2" maxOccurs="2" type="xs:string">
<xsd:complexType>
<xsd:all>
</xsd:all>
<xsd:attribute ref="language">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="English"/>
<xsd:enumeration value="Latin"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:complexType>
</xsd:element>
</xsd:schema>
答案 0 :(得分:2)
您的xsd:element
标记放错了地方。作为xsd:element
的孩子,您无法xsd:contentType
。
您可能希望将其放在一个组中,例如序列:
<xsd:complexType>
<xsd:sequence>
<xsd:element ...>
...
...
您还有XSD中的其他问题。您必须选择是否要嵌套complexType
元素,或者是否要声明一个简单类型。您可以修复它从嵌套的type="xsd:string"
元素中删除xs:element
属性。
最后,您要么引用一个属性(在XSD中不存在),也要为其命名。由于您有嵌套类型,因此您可能不想引用它。因此,将<xsd:attribute ref="language">
更改为<xsd:attribute name="language">
。