Marcación relacionada con el esquema en documentos XML

La marcación relacionada con el esquema en documentos XML incluye xsi:nil, xsi:type, xsi:schemaLocationy xsi:noNamespaceSchemaLocation.

La marcación relacionada con el esquema en documentos XML incluye los elementos siguientes:

xsi:nil

Cuando un elemento XML se establece en xsi:nil en la instancia de documento XML, su campo de clase dinámica relacionado se establece en nulo. El operador isunknown aplicado en este campo devuelve true. En otras palabras, cuando un objeto XML se serializa mediante el método driver.writeObject , se añade la siguiente información a este objeto:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Ejemplo de correlación xsi: nil en un documento XML

El ejemplo siguiente muestra la correlación de xsi:nil en un documento XML. La regla detectPersonWithMissingAddress utiliza la palabra clave isunknown para buscar una persona cuya dirección no se conoce.

En este ejemplo:

  • xsi es el nombre del espacio de nombres

  • http://www.w3.org/2001/XMLSchema es la URL

  • nil es un elemento del espacio de nombres

A continuación se muestra el esquema:

<element name="person">
  <complexType>
    <sequence>
     <element name="surname"/>
     <element name="address" nillable="true"/>
   </sequence>
  <complexType>
</element>

Este es el extracto de un documento XML:

<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <surname>Smith</surname>
  <address xsi:nil="true"/>
</person>

Y aquí está la regla:

rule detectPersonWithMissingAddress
{
  when {
    Person ( address isunknown );
  }
  then {
   ...
  }
}

Los espacios de nombres XML están diseñados para proporcionar nombres universalmente exclusivos para elementos y atributos. Los desarrolladores pueden utilizarlos para llevar a cabo las acciones siguientes:

  • Combine fragmentos de distintos documentos sin conflictos de denominación.

  • Escribir módulos de código reutilizables que se pueden invocar para elementos y atributos específicos. Los nombres universalmente exclusivos garantizan que dichos módulos se invocan únicamente para los elementos y atributos correctos.

  • Defina elementos y atributos que se pueden reutilizar en otros esquemas sin ningún riesgo de conflictos de nombres.

xsi:type

Para refinar el tipo de un elemento en el documento XML, puede utilizar el polimorfismo xsi. Esta característica sustituye un subtipo para el tipo estándar del elemento.

Ejemplo de correlación xsi: type en un documento XML

El ejemplo siguiente muestra cómo utilizar el polimorfismo xsi. El ejemplo utiliza un esquema y un extracto de un documento XML.

A continuación se muestra el esquema:

<element name="person" type="person"/>
  <complexType name=" person " >
    <sequence>
      <element name="name">
      <element name="surname">
    </sequence>
  </complexType>
  <complexType name=" inhabitant ">
    <complexContent>
     <extension base="person">
      <sequence>
        <element name="address"/>
      </sequence>
     </extension>
  </complexType>

Y aquí hay un extracto de un documento XML:

<person xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:type="inhabitant">
  <name>John</name>
  <surname>Smith</surname>
  <address>123 Downing Street, London</address>
</person>

xsi:schemaLocation y xsi:noNamespaceSchemaLocation

Estas funciones están soportadas por el analizador. Sin embargo, la información resultante no se utiliza en el enlace XML.