XML Schema

De WikiEducator
Saltar a: navegación, buscar


XML Schema

XML Schema es una alternativa a DTD basada en XML. Describe la estructura de un documento XML.

Objetivo

  • Definir la estructura correcta de bloques de un documento XML
  • Define los elementos y atributos que pueden aparecer
  • Define qué elementos son hijos, cuántos hijos y en qué orden.
  • Define si un elemento puede contener texto o tiene que estar vacío.
  • Define los tipos de datos de elementos y atributos.
  • Define valores fijos y por defecto

A diferencia del DTD:

  • es un modelo extensible y tiene más poder expresivo.
  • están escritos en XML
  • soporta tipos de datos y namespaces
  • son una recomendación del W3C

El tipo de documento XML

La estructura de un documento XML la forman:

  • Su vocabulario (elementos y atributos)
  • El modelo de contenido de cada elemento
  • Los tipos de datos del contenido

Componentes de un esquema

  • Componentes primarios: tipos de datos, elementos y atributos
  • Componentes secundarios: definiciones especiales (grupos de atributos, restricciones y anotaciones)
  • Componentes de ayuda. Se usan en otros componentes

Un ejemplo

(fuente: http://www.w3schools.com/schema/schema_howto.asp)

<?xml version="1.0"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

DTD:

<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

XML Schema:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
   targetNamespace="http://www.w3schools.com"
   xmlns="http://www.w3schools.com"
   elementFormDefault="qualified">
 
<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

Documento con la referencia al esquema:

<?xml version="1.0"?>
 
<note
<xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Elemento schema

  • Declaración del espacio de nombres de la recomendación del W3C
  • Los hijos directos de schema son declaraciones y definiciones globales
  • Elemento raíz.
  • Sequence: los elementos tienen que aparecer en el mismo orden (especificador)
  • Tipos simples (limitan el texto que se puede insertar como valor)
  • Tipos complejos (pueden ser anónimos)