XML Schema

Es una W3C Recommendation que surge como sucesor del DTD (Document Type Definition) pero con mayor potencia descriptiva.
A diferencia del DTD, que tenía su propia sintaxis, los XMLSchema son documentos XML empleados para describir la estructura de otros documentos XML:

  • Qué elementos pueden formar parte de un documento XML.
  • Qué elementos hijo componen a esos elementos: orden y número.
  • Si un elemento está vacío o puede contener texto
  • Qué atributos pueden tener los elementos.
  • Qué posibles valores pueden tomar los atributos.

Permiten definir nuevos tipos de datos y soportan herencia entre tipos de datos. Asi es posible la reutilización de un xml-schema en otro.

Cabe distinguir entre documento valido y documento bien formado.

Un documento válido será aquel que cumpla el XMLSchema que lo define.

Y un documento bien formado es aquel que sigue las reglas de sintaxis XML:

  • debe empezar con la declaracion XML
  • debe tener un unico elemento raíz
  • Toda etiqueta tiene su correspondiente de cierre
  • Los elementos son sensibles a las mayusculas
  • Todos los elementos deben ser anidados correctamente
  • Todos los atributos deben llevar los valores entre comillas
  • Se definen entidades para los caracteres especiales

 El elemento Raíz es:
  <xs:schema> … </xs:schema>

Definición de un Elemento Simple
Es aquel que contiene sólo texto. No contiene a ningún otro elemento. Tampoco tiene atributos.

 <xs:element name=”xxx” type=”yyy” default=”zzz” /> (valor por defecto)
 <xs:element name=”xxx” type=”yyy” fixed=”zzz” />   (valor prefijado)

Entre los tipos predefinidos:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time
     

Definición de un Elemento Complejo
Son aquellos elementos que tiene atributos o se componen de otros elementos o son elementos vacíos (puede tener atributos) o son elementos que contienen solo texto

Definir un elemento complejo compuesto por otro elementos
Al introducir los atributos dentro de <sequence> obliga a ese orden.

<xs:element name=”person”>
  <xs:complexType>
    <xs:sequence>
      <xs:element name=”firstname” type=”xs:string”/>
      <xs:element name=”lastname” type=”xs:string”/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

De esta forma los atributos firstname y lastname se pueden aplicar a otros elementos.

<xs:element name=”employee” type=”personinfo”/>
<xs:complexType name=”personinfo”>
  <xs:sequence>
    <xs:element name=”firstname” type=”xs:string”/>
    <xs:element name=”lastname” type=”xs:string”/>
  </xs:sequence>
</xs:complexType>

Definir un elemento complejo compuesto por elementos vacíos (puede tener atributos).

<xs:element name=”product”>
  <xs:complexType>
    <xs:attribute name=”prodid” type=”xs:positiveInteger”/>
  </xs:complexType>
</xs:element>

Definir un elemento complejo compuesto contienen solo texto
Se define mediante un “simpleContent”. Para estos casos hay que definir una “extensión” o una “restricción”.

<xs:element name=”somename”>
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base=”basetype”>
        ….
        ….
      </xs:extension>    
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

Definir un elemento complejo de contenido mixto (texto y otros elementos)
Para ello hay que usar el atributo mixed con valor true.

<xs:element name=”letter”>
  <xs:complexType mixed=”true”>
    <xs:sequence>
      <xs:element name=”name” type=”xs:string”/>
      <xs:element name=”orderid” type=”xs:positiveInteger”/>
      <xs:element name=”shipdate” type=”xs:date”/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Declaración de atributos
Pueden tener un valor por defecto o prefijado (este no se puede modificar). Y pueden ser obligatorios u opcionales

  <xs:attribute name=”xxx” type=”yyy” default=”zzz” />
  <xs:attribute name=”xxx” type=”yyy” fixed=”zzz” />
  <xs:attribute name=”xxx” type=”yyy” use=”required” />

Definición de restricciones
También se conocen como facets. Las restricciones se usan para definir los valores aceptables de los elementos o atributos.

Indicadores
Establecen cómo deben aparecer o usarse los elementos definidos dentro del doc XML.

  • Indicadores de orden: establecen un orden de los elementos
    • All (cualquier orden y solo una ocurrencia)
    • Choice (o un hijo u otro)
    • Sequence (orden específico)
  • Indicadores de ocurrencia:
    • maxOccurs
    • minOccurs
  • Indicadores de grupo: define grupos de elementos
    • Group name: Se debe definir un etiqueta all, choice o sequence dentro de la etiqueta del grupo
    • attributeGroup name

Una respuesta a XML Schema

  1. […] Especificaciones XML XML (eXtensible Markup Language) surge como un formato estandarizado para el intercambio de información entre sistemas. Se desarrolla a partir del lenguaje SGML (ISO 8879). Si bien inicialmente se definia la estructura de los documentos mediante el DTD, finalmente se ha obtado por definirlaempleando a su vez una gramática XML: XMLSchema. […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: