我有一个带孩子的复杂元素,那些孩子有属性。一切正常,但现在我需要为复杂的主元素添加一个属性。
这是我运行良好的代码:
<xs:element name="route">
<xs:complexType>
<xs:sequence>
<xs:element name="origin">
<xs:complexType>
<xs:attribute name="name"/>
<xs:attribute name="category">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1sub1sub1"/>
<xs:enumeration value="2sub1sub1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
那么如何在路由元素中添加属性?如果我这样做,它会输出一个错误,即在他的上下文中不允许该属性:
<xs:element name="route">
<xs:complexType>
<xs:attribute name="foobar"/>
<xs:sequence>
<xs:element name="origin">
<xs:complexType>
<xs:attribute name="name"/>
<xs:attribute name="category">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1sub1sub1"/>
<xs:enumeration value="2sub1sub1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
答案 0 :(得分:0)
在 xs:complexType
中添加属性声明作为 最后 声明 :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="route">
<xs:complexType>
<xs:sequence>
<xs:element name="origin">
<xs:complexType>
<!-- WITHOUT child elements-->
<!-- Add attribute declarations here -->
<xs:attribute name="name"/>
<xs:attribute name="category">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1sub1sub1"/>
<xs:enumeration value="2sub1sub1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<!-- WITH child elements-->
<!-- Add attribute declarations here -->
<xs:attribute name="foobar"/>
</xs:complexType>
</xs:element>
</xs:schema>