我想定义一个这样的元素:
<A id='1'>
<name>jack</name>
</A>
下面我可以定义元素A的属性id
:
<xs:complexType name="A">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:int" name="id"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
实际上它不正确,上面的XSD定义了一个元素<A id="1">hi</A>
。我不知道如何丢弃<xs:extension>
元素的基本属性。
使用下面的XSD,我可以定义内部元素<name>
:
<xs:element name = "A">
<xs:complexType>
<xs:sequence>
<xs:element name = "name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我可以将这两者结合在一起,如下所示吗?我无法正确理解语法。
<xs:element name = "A">
<xs:complexType>
<xs:sequence>
<xs:element name = "name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:simpleContent>
<xs:extension>
<xs:attribute type="xs:int" name="id"/>
</xs:extension>
</xs:simpleContent>
</xs:element>
答案 0 :(得分:3)
您的XML或陈述的约束中没有任何内容表明此处需要xs:extension
。
以下简单的XSD,
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:int"/>
</xs:complexType>
</xs:element>
</xs:schema>
将验证您的XML
<A id='1'>
<name>jack</name>
</A>
根据要求。