12
votes

Différence entre XSD: Key et XSD: Unique

Quelle est la différence entre utiliser XSD: unique et XSD: clé?


0 commentaires

5 Réponses :


0
votes

xsd: la clé est unique et est utilisée pour une collection d'éléments une clé dans une portée XSD: unique est unique dans une portée.

J'espère que cela vous aide ...


4 commentaires

Ainsi, lorsque je déclare plusieurs touches XSD: toutes les clés définies doivent toujours être uniques?


Non, si vous avez reçu une collection d'éléments de livre et que vous avez déclaré XSD: la clé d'être l'attribut ISBN de l'élément de livre dans le schéma. Ensuite, les valeurs de l'attribut ISBN doivent être uniques. Cela n'a aucune influence sur d'autres éléments avec d'autres clés


Mais XSD: Unique aussi cela. XSD: La touche est également scopée. Je ne trouve aucune différence ...?


Je pense que la seule différence est que xsd: la clé n'est pas nillable, XSD: unique est ... w3.org/tr/xmlschema-0/#Specifiecifiant



1
votes

Il est similaire à la base de données.

Le champ Key est comme Primicekey. Unique et ID

champ unique n'est pas une clé, mais elle doit être unique ...


1 commentaires

Oke, mais qu'ajouter à la XSD qu'une clé est aussi un "ID"?



6
votes

J'ai trouvé ma propre réponse:

Tout cela a à voir avec la cardinalité:

XSD: la touche est utilisée pour (0..n) et (1..1) multiplicité. XSD: unique est utilisé pour une multiplicité facultative (0..1). C'est aussi la raison pour laquelle un champ sélectionné dans un XSD: unique peut être Nill.

source de ma réponse: http://www.xml.com/lpt/a/987


0 commentaires

1
votes

voir http: //www.w3 .Org / TR / 2004 / REC-XMLSCHEMA-0-20041028 / PRIMER.HTML # QuartelyReport .

Dans l'exemple décrit dans la liaison Les éléments "keyrefed" sont les valeurs des attributs numériques des parties du zip des régions et des éléments "à clé" sont les valeurs de l'attribut numéro de la partie des pièces .

Unique déclare que les valeurs doivent être uniques mais peuvent être NULL aussi, touches - elles doivent être uniques. Les deux types peuvent être des références par des éléments "keyrefed".


1 commentaires

Je viens de courir dans votre message ... veuillez le corriger car il est faux d'indiquer que les touches sont utilisées avec Keyrefs, limitant ainsi les valeurs des éléments "keyrefed" aux valeurs réellement utilisées dans "Keyed" Eléments. voir ici : ` {Key référencé} Obligatoire si {Catégorie de contrainte d'identité} est Keyref, interdit autrement. Une définition de contrainte d'identité avec {Catégorie de contrainte d'identité} égale à la touche ou unique.



13
votes

XSD: unique ne nécessite pas que le champ existe pour le sélecteur. Si le champ existe, sa valeur devrait être unique.

xsd: clé nécessite que le champ existe pour tous les résultats du sélecteur. Chaque élément du sélecteur doit avoir une clé.

Notez que XSD: Keyref n'est pas une exigence pour XSD: la clé, la touche XSD: peut être là-bas avec n'importe quel XSD: Keyref.


2 commentaires

Je viens de courir dans votre message ... S'il vous plaît, corrigez-le car il est faux d'indiquer que seulement une clé XSD: Key peut être référencé à partir d'un XSD: Keyref. Voir ici :` {Key référencé} Requis si {Catégorie de contrainte d'identité} est Keyref, interdit autrement. Une définition de contrainte d'identité avec {Catégorie de contrainte d'identité} égale à la touche ou unique.


Avec XSD: unique , vous ne pouvez pas utiliser xsd: keyrf - oui vous pouvez! Voir aussi: Stackoverflow.com/questions/15842736/Optional-key-in-xsd