下面的代码在验证过程中出现以下错误。这是否意味着我不能在complexType 元素中嵌套simpleType 元素?
错误 - 第 18、17 行:org.xml.sax.SAXParseException;行号:18;列数:17; s4s-elt-must-match.1:“sequence”的内容必须匹配(注释?,(元素|组|选择|序列|任何)*)。发现问题始于:simpleType。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/carType"
elementFormDefault="qualified">
<element name="carType">
<complexType>
<sequence>
<simpleType name="colour">
<restriction base="string">
<enumeration value="blue" />
<enumeration value="yellow" />
<enumeration value="green" />
<enumeration value="black" />
<enumeration value="white" />
</restriction>
</simpleType>
<simpleType name="body">
<restriction base="string">
<enumeration value="sedan" />
<enumeration value="hatchback" />
</restriction>
</simpleType>
</sequence>
</complexType>
</element>
</schema>
最佳答案
你已经很接近了。只需对 XSD 进行两项小调整即可:
你在哪里
<simpleType name="colour">
,而是声明一个colour
元素:<element name="colour"> <simpleType>
同样,你有
<simpleType name="body">
, 反而 声明body
元素:<element name="body"> <simpleType>
总而言之:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/carType"
elementFormDefault="qualified">
<element name="carType">
<complexType>
<sequence>
<element name="colour">
<simpleType>
<restriction base="string">
<enumeration value="blue" />
<enumeration value="yellow" />
<enumeration value="green" />
<enumeration value="black" />
<enumeration value="white" />
</restriction>
</simpleType>
</element>
<element name="body">
<simpleType>
<restriction base="string">
<enumeration value="sedan" />
<enumeration value="hatchback" />
</restriction>
</simpleType>
</element>
</sequence>
</complexType>
</element>
</schema>
关于xml - 在复杂类型中嵌套简单类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27237607/