2009-11-02 62 views
2

如何定义emailaddress-element的内容必须与用户标记内输入的所有其他电子邮件地址相比较?如何定义一个元素的内容是唯一的?

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="users"> 
    <xs:sequence> 
     <xs:element name="user"> 
      <xs:element name="name" type="xs:string" /> 
      <xs:element name="emailaddress" type="xs:string" /> 
     </xs:element> 
    </xs:sequence> 
</xs:element> 

回答

4

我想这是你所追求的唯一>标签:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="users"> 
    <xs:complexType> 
     <xs:sequence maxOccurs="unbounded"> 
     <xs:element name="user"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="name" type="xs:string"/> 
       <xs:element name="emailaddress" type="xs:string"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 

    <!-- Make sure each user has a unique email address --> 
    <xs:unique name="email-address-is-unique"> 
     <xs:selector xpath="user"/> 
     <xs:field xpath="emailaddress"/> 
    </xs:unique> 

    </xs:element> 
</xs:schema> 

我也采取了添加来自省略要素的自由你原始模式的完整性。

因此,选择器元素的xpath属性定义了唯一性约束所使用的元素,然后该字段元素具有xpaths,这些xpaths确定在所选元素中哪些元素需要唯一。

+1

谢谢......正是我需要的! – DerKlops 2009-11-02 18:29:24

+0

我试过这个解决方案,但没有工作。我认为存在拼写错误:在xpath的字段中的emailaddress之前需要“@”caracter。 – 2013-12-17 16:55:48

+0

如果电子邮件地址是属性,则需要@字符,但这里是一个元素。 – Andy 2014-01-24 13:57:38

0

您使用< XS:描述here

相关问题