使用XSD验证的节点属性值唯一性 [英] Node attribute value uniqueness using XSD validation

查看:317
本文介绍了使用XSD验证的节点属性值唯一性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好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来定义唯一性约束:
























< td> < / xs:complexType >

















< 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" />
< / 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆