Compartir a través de


key

Especifica que el valor de un atributo o elemento (o conjunto de valores) debe ser una clave dentro del ámbito especificado. El ámbito de una clave es el elemento (element) contenedor en un documento de instancia. La clave indica que los datos deben ser únicos en un ámbito especificado, no aceptar valores nil y estar siempre presente.

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

Atributos

  • id
    Identificador de este elemento. El valor id debe ser de tipo ID y debe ser único dentro del documento que contiene este elemento.

    Opcional.

  • name
    Nombre del elemento key. El nombre no debe incluir un signo de dos puntos (NCName), como se define en la especificación de los espacios de nombres XML.

    El nombre debe ser único en un conjunto de restricción de identidad.

    Requerido.

Información del elemento

Número de apariciones Ilimitado
Elementos primarios element
Contenido annotation, field, selector

Comentarios

El elemento key debe contener los siguientes elementos por orden.

selector El elemento selector contiene una expresión de XPath (XML Path Language) que especifica el conjunto de elementos en los que los valores especificados por elementos field deben ser únicos.

Sólo debe haber un elemento selector.

field Cada elemento field contiene una expresión XPath que especifica los valores (valores de atributo o elemento) que deben ser únicos para el conjunto de elementos especificados por el elemento selector.

Si hay más de un elemento field, la combinación de los elementos field debe ser única. En este caso, los valores de un solo elemento field pueden ser o no únicos entre los elementos seleccionados pero la combinación de todos los elementos field debe ser única.

Debe haber uno o varios elementos field.

Ejemplo

En el ejemplo siguiente se define un elemento keyref que corresponde al elemento key en este esquema.

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

Entrada: 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>

Vea también

Referencia de esquemas XML (XSD) | Elementos de los esquemas XML

Para obtener más información, vea la parte 1: Structures Recommendation de XML Schema del W3C (World Wide Web Consortium), en http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/\#element-key.