Compartir a través de


Elemento <xsd:key>

Especifica que un valor de elemento o atributo (o conjunto de valores) debe ser una clave en el á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.

  • nombre
    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.

    Necesario.

Información del elemento

Número de apariciones

Ilimitado

Elementos primarios

elemento

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

Otros recursos

Para más información consulte el esquema WC3 XML Parte 1: Recomendación de estructuras en www.w3.org/TR/2001/REC-xmlschema-1-20010502/\#element-all.

Vea también

Referencia

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