我是XML和XSD的新手,只是想学习基础知识。有人可以向我解释为什么这段代码会出错。
<?xml version="1.0"?>
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="DreamHomes">
<xs:complexType>
<xs:sequence>
<xs:element name ="Branch">
<xs:complexType>
<xs:attribute name ="branchNo" type="xs:string" default="1"/>
<xs:sequence>
<xs:element name="Street">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
错误与我的属性标记有关,因为当我删除它时我没有错误。为什么会出现这个错误?
答案 0 :(得分:1)
xs:attribute
声明必须在xs:sequence
内 xs:complexType
后出现:
<?xml version="1.0"?>
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="DreamHomes">
<xs:complexType>
<xs:sequence>
<xs:element name="Branch">
<xs:complexType>
<xs:sequence>
<xs:element name="Street">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="branchNo" type="xs:string" default="1"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
以下XML对于上述XSD有效:
<DreamHomes>
<Branch branchNo="2">
<Street>123 Main</Street>
</Branch>
</DreamHomes>