Xsd 2个元素中的元素引用
我不知道我的问题怎么命名 我有一个XSD,它包含以下元素Xsd 2个元素中的元素引用,xsd,Xsd,我不知道我的问题怎么命名 我有一个XSD,它包含以下元素 <xs:element name="abc"> <xs:complexType> <xs:element maxOccurs="unbounded" ref="ele1"/> </xs:complexType> </xs:element> <xs:element name="xyz"> <xs:complexType>
<xs:element name="abc">
<xs:complexType>
<xs:element maxOccurs="unbounded" ref="ele1"/>
</xs:complexType>
</xs:element>
<xs:element name="xyz">
<xs:complexType>
<xs:element maxOccurs="unbounded" ref="ele1"/>
</xs:complexType>
</xs:element>
<xs:element name="ele1">
<xs:complexType>
<xs:attribute name="ID" type="xs:integer"/>
</xs:complexType>
</xs:element>
问题是对于元素xyz ID是强制性的,而对于abc则不是;如何在XSD中指定此项?假设ID是容器下重复内容的唯一标识符,则可以为xyz设置xs:key约束,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="abc">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="ele1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="xyz">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="ele1"/>
</xs:sequence>
</xs:complexType>
<xs:key name="PK_xyz">
<xs:selector xpath="ele1"/>
<xs:field xpath="@ID"/>
</xs:key>
</xs:element>
<xs:element name="ele1">
<xs:complexType>
<xs:attribute name="ID" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:schema>
无效,因为它是重复的。如果上述关于唯一性的假设不成立,这就是缺点:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<xyz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ele1 ID="1"/>
<ele1 ID="1"/>
</xyz>
工作样本:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<xyz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ele1 ID="1"/>
<ele1 ID="2"/>
</xyz>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<xyz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ele1 ID="1"/>
<ele1 ID="1"/>
</xyz>
Error occurred while loading [], line 5 position 3
There is a duplicate key sequence '1' for the 'PK_xyz' key or unique identity constraint.
Document3.xml is invalid.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<xyz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ele1 ID="1"/>
<ele1 ID="2"/>
</xyz>