使用XSD验证的节点属性值唯一性 [英] Node attribute value uniqueness using XSD validation
问题描述
你好fellas,
我有以下问题。有许多类似的元素。我想确保只有一个默认属性设置为true。怎么样?这是一个例子。我希望我的验证失败以获取以下XML:
< root>
< element name =" e1" />
< element name =" E2" default =" true" />
< element name =" e3" default =" true" />
< element name =" e4" />
< / root>
请注意"默认"是一个可选属性:
< xs:element name =" element">
< xs:complexType>
< xs:attribute name =" default" type =" xs:boolean" />
< xs:attribute name =" name"使用= QUOT;需" type =" xs:NCName" />
< / xs:complexType>
< / xs:element>
您可以使用W3C XML模式语言1.0来定义唯一性约束:
< xs:schema attributeFormDefault = " unqualified" elementFormDefault = " qualified" xmlns: xs = " http://www.w3.org/2001/XMLSchema" >
< xs:element name = " root" >
< xs:complexType >
< < font style ="font-size:11px"> xs:sequence >
< xs:element maxOccurs = " unbounded" name = " element" >
< xs:complexType >
< < font style ="font-size:11px"> xs:attribute name = " name" type < font style ="font-size:11px"> = " xs:string" 使用 = " required" />
< xs:attribute name = " default" type = " xs:boolean" 使用 = " optional" />
< td> < / xs:complexType >
< / xs:element > ;
< / xs:sequence > < font style ="font-size:11px">
< / xs:complexType >
< xs:unique name = " unique-default" >
< xs:selector xpath = " element" />
< xs:field xpath = " @ default" />
< / xs:unique >
< / xs:element >
< / xs:schema >
Hi fellas,
I have the following problem. There are multiple similar elements. I want to make sure that only one has the default attribute set to true. How? Here is example. I want my validation to fail for the following XML:
<root>
<element name="e1"/>
<element name="e2" default="true"/>
<element name="e3" default="true"/>
<element name="e4"/>
</root>
Note that "default" is an optional attribute:
<xs:element name="element">
<xs:complexType>
<xs:attribute name="default" type="xs:boolean"/>
<xs:attribute name="name" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>解决方案Well what you can do with the W3C XML schema language 1.0 is define a uniqueness constraint:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="element"> <xs:complexType> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="default" type="xs:boolean" use="optional" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:unique name="unique-default"> <xs:selector xpath="element"/> <xs:field xpath="@default"/> </xs:unique> </xs:element> </xs:schema>
这篇关于使用XSD验证的节点属性值唯一性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文