2009-08-10 18 views

答えて

5

私は自分の答えを見つけた:

それはすべてが持っていますカーディナリティとの関係:

xsd:キーは(0..N)と(1..1)の多重度に使用されます。 xsd:uniqueはオプションの(0..1)多重度に使用されます。これは、xsd:unique内の選択されたフィールドがnillになる理由もあります。私の答えの

出典: http://www.xml.com/lpt/a/987

0

xsd:キーは一意であり、要素の集合に使用されます。スコープ内のキー xsd:uniqueはスコープ内で一意です。

希望します。

+0

異なる要素に複数のxsd:キーを宣言するとき、定義されたすべてのキーは依然として一意でなければなりませんか? – Joep

+1

いいえ、book要素のコレクションがあり、xsd:keyがスキーマ内のbook要素のisbn属性であると宣言した場合。次に、isbn属性の値は一意でなければなりません。これは他のキーを持つ他の要素には影響しません – norbertB

+0

しかし、xsd:uniqueもこれを行います。 xsd:keyもスコープされています。私は違いを見つけることはできません...? – Joep

1

これはデータベースに似ています。

キーフィールドが主キーのようなものです。..ユニークなID

一意のフィールドキーではないが、それはユニークである必要があります...

+0

Oke、それは何に追加されますか? xsdはキーも "id"ですか? – Joep

1

http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/primer.html#quartelyReportを参照してください。

リンクで説明されている例では、「keyRefed」要素は領域のジップの部分の数値属性の値であり、「キー付き」要素は、その部分の数値属性の値です。部品。

ユニークでは、値は一意である必要がありますが、キーもnullでもかまいません。キーは一意である必要があります。どちらの型も "keyRefed"要素で参照できます。

+2

私はちょうどあなたのポストに出てきました...キーがKeyrefsで使われているので、 "keyRefed"要素の値を "keyed"要素で実際に使われている値に制限しているということは間違っているので、ここに](http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/structures.html#Identity-constraint_Definition_details): '** {参照されるキー} ** {identity-constraint category }はkeyrefで、それ以外の場合は禁止されます。 {identity-constraint category}がkeyまたはuniqueに等しいアイデンティティ制約の定義。 –

11

xsd:uniqueでは、セレクタにフィールドが存在する必要はありません。フィールドが存在する場合、その値は一意でなければなりません。

xsd:keyには、すべてのセレクタ結果にフィールドが存在する必要があります。セレクタ内のすべての要素にキーが必要です。

xsd:keyrefはxsd:keyでは必須ではなく、xsd:keyはxsd:keyrefと一緒に使用できます。

+1

私はちょうどあなたの投稿に行きました...'' xsd:keyref 'という名前のxsd:keyしか参照できないと言って間違っているので、修正してください。[here](http://www.w3.org/TR/2004/REC-xmlschema- 1-20041028/structures.html#Identity-constraint_Definition_details):** {参照されるキー} ** {identity-constraint category}がkeyrefであれば必要です。それ以外の場合は禁止されます。 {identity-constraint category}がkeyまたはuniqueに等しいID制約の定義。 –

+0

と 'xsd:unique'を使用すると、' xsd:keyref'を使用できません。参照:http://stackoverflow.com/questions/15842736/optional-key-in-xsd – Csq