2009-11-02 4 views
2

Comment puis-je définir que le contenu de l'élément emailaddress doit être unquie par rapport à toutes les autres adresses e-mail saisies dans l'étiquette d'utilisateur?Comment définir le contenu d'un élément pour être unique?

<?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> 

Répondre

4

Je pense que c'est ce que vous recherchez:

<?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> 

J'ai aussi pris la liberté d'ajouter des éléments omis de votre schéma original pour l'exhaustivité. Donc, l'attribut xpath de l'élément sélecteur définit les éléments qui sont utilisés par la contrainte d'unicité, alors le ou les éléments de champ ont des xpaths qui déterminent ce qui doit être unique parmi les éléments sélectionnés.

+1

Merci ... exactement ce dont j'avais besoin! – DerKlops

+0

J'ai essayé cette solution mais je n'ai pas travaillé. Je pense qu'il y a une faute de frappe: un caractère "@" est nécessaire avant l'adresse email dans le champ de xpath. –

+0

Le caractère @ serait nécessaire si l'adresse email était un attribut, mais ici c'est un élément. – Andy

0

Vous utilisez les < xs: tag > unique décrit here

Questions connexes