在 XSD 中放置 xs:unique 约束的位置? [英] Where to place xs:unique constraint in XSD?
本文介绍了在 XSD 中放置 xs:unique 约束的位置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用 XSD 进行 XML 验证.我想为 input
元素添加唯一值约束.
I am using XSD for XML validation. I want to add unique values constraint for the input
elements.
我有这样的 XML 格式:
I have XML format like this:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<definitions>
<input>Page</input>
</definitions>
<definitions>
<input>Page</input>
</definitions>
</test>
我的 XSD:
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element name="definitions" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="input"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我想知道 xs:unique
应该如何放置.
I want to know how xs:unique
should be placed.
推荐答案
要放置 xs:unique
元素:
- 确定元素的唯一性范围 (
test
)xs:unique/@selector
(定义
). - 放置
xs:unique
元素- 在
test
的声明中,以及 -
xs:complexType
用于test
- 在
- Identify the scope of uniqueness (
test
) for the elements ofxs:unique/@selector
(definitions
). - Place the
xs:unique
element- within the declaration of
test
, and - after the
xs:complexType
fortest
- within the declaration of
请参阅以下 XSD 中的此处:
See HERE in the XSD below:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element name="definitions"
maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="input"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- HERE -->
<xs:unique name="definitions-input-unique">
<xs:selector xpath="definitions"/>
<xs:field xpath="input"/>
</xs:unique>
</xs:element>
</xs:schema>
那么这个无效 XML
<?xml version="1.0" encoding="UTF-8"?>
<test>
<definitions>
<input>Page</input>
</definitions>
<definitions>
<input>Page</input>
</definitions>
</test>
将收到如下错误消息:
[错误] try.xml:7:24: cvc-identity-constraint.4.1: Duplicate unique为身份约束声明的值 [Page]元素test"的定义-输入-唯一".
[Error] try.xml:7:24: cvc-identity-constraint.4.1: Duplicate unique value [Page] declared for identity constraint "definitions-input-unique" of element "test".
这篇关于在 XSD 中放置 xs:unique 约束的位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文