Condividi tramite


key

Indica che il valore (o l'insieme di valori) di un attributo o di un elemento deve essere una chiave compresa nell'ambito specificato. In un documento di istanza, l'ambito di una chiave è l'elemento element contenitore. La presenza di una chiave indica che i dati devono essere univoci all'interno di un ambito specificato, non accettare valori null ed essere sempre presenti.

<key
  id = ID 
  name = NCName 
  {any attributes with non-schema Namespace}...>
Content: (annotation?, (selector, field+))
</key>

Attributi

  • id
    ID dell'elemento. Il valore di id deve essere di tipo ID ed essere univoco all'interno del documento che contiene l'elemento.

    Facoltativo.

  • name
    Nome dell'elemento key. Il nome deve essere un NCName (No-Colon-Name), come indicato nella specifica relativa agli spazi dei nomi XML.

    Il nome deve essere univoco all'interno di un insieme di vincoli di identità.

    Obbligatorio.

Informazioni sull'elemento

Numero di occorrenze Illimitato
Elementi padre element
Contenuto annotation, field, selector

Osservazioni

È necessario che l'elemento key contenga gli elementi che seguono, nell'ordine in cui sono indicati.

selector L'elemento selector contiene un'espressione XPath (XML Path Language) che specifica l'insieme di elementi nell'ambito del quale i valori specificati dal campo devono risultare univoci.

Deve essere presente un solo elemento selector.

field Ciascun elemento field contiene un'espressione XPath che specifica i valori (valori di attributi o elementi) che devono essere univoci all'interno dell'insieme di elementi specificato dall'elemento selector.

Se è presente più di un elemento field, la combinazione degli elementi field deve essere univoca. In questo caso, i valori di un singolo elemento field possono essere univoci o non univoci negli insiemi di elementi selezionati, ma la combinazione di tutti gli elementi field deve essere univoca.

È necessario che siano presenti uno o più elementi field.

Esempio

Nell'esempio che segue viene definito un elemento keyref corrispondente all'elemento key dello schema.

<xs:schema 
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
   targetNamespace="namespace1"
        xmlns:r="namespace1"
        elementFormDefault="qualified">

 <xs:element name="root">
  <xs:complexType>
   <xs:sequence>

    <xs:element name="A" type="r:A" maxOccurs="unbounded">
     <xs:keyref name="dummy" refer="r:pNumKey">
      <xs:selector xpath="r:part"/>
      <xs:field xpath="@ref-number"/>
     </xs:keyref>
    </xs:element>

    <xs:element name="B" type="r:B"/>

   </xs:sequence>
  </xs:complexType>

  <xs:key name="pNumKey">
   <xs:selector xpath="r:B/r:part"/>
   <xs:field xpath="@key-number"/>
  </xs:key>

  </xs:element>

 <xs:complexType name="A">
  <xs:sequence>
   <xs:element name="part" maxOccurs="unbounded">
    <xs:complexType>
     <xs:simpleContent>
      <xs:extension base="xs:string">
       <xs:attribute name="ref-number" type="xs:integer"/>
      </xs:extension>
     </xs:simpleContent>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="B">
  <xs:sequence>
   <xs:element name="part" maxOccurs="unbounded">
    <xs:complexType>
     <xs:simpleContent>
      <xs:extension base="xs:string">
       <xs:attribute name="key-number" type="xs:integer"/>
      </xs:extension>
     </xs:simpleContent>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

</xs:schema>

Input: key.xml

<root xmlns="namespace1">
  <A>
    <!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
    <part ref-number="1"/>
  </A>
  <A>
    <!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
    <part ref-number="2"/>
  </A>
  <B>
    <part key-number="1"/>
    <part key-number="2"/>
    <part key-number="3"/>
  </B>
</root>

Vedere anche

Informazioni di riferimento sullo schema XML (XSD) | Elementi di uno schema XML

Per ulteriori informazioni, vedere il documento del W3C dal titolo XML Schema Part 1: Structures Recommendation all'indirizzo http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/\#element-key/ (informazioni in lingua inglese).