Título
Características y elementos fundamentales
J.M. Morales-del-Castillo
Título
Introducción (1)
• Al igual que las DTD XML Schema es un lenguaje para expresar las reglas que deben seguir los ficheros XML para ser considerados válidos (atendiendo a un criterio determinado).
• Ventajas frente a las DTD:– Utiliza sintaxis XML.– Permite un mayor control sobre la estructura
del documento y sobre los tipos de datos que se pueden utilizar.
• Desventajas frente a las DTD:– Es algo más complejo.
Título
Introducción (2)
!El fichero es válido!
Validadores en línea:
http://tools.decisionsoft.com/schemaValidate/results.jsp
http://www.xmlforasp.net/SchemaValidator.aspx
Título
Introducción (3)• XML Schema permite:
– Crear un vocabulario XML específico (ya que definimos como válidas unas etiquetas específicas).
– Definir el contenido de los elementos de un fichero XML, así como una serie de restricciones para ese contenido.
• Esto implica:– El conjunto de etiquetas debe de estar identificado por un
espacio de nombre propio.– El esquema es exclusivo para ese espacio de nombre.
• Restricciones:– No soporta el procesamiento de entidades.
Título
Cómo referenciar un esquema desde un documento XML
• Veamos cómo referenciar desde un fichero XML su esquema asociado:
<?xml version=“1.0” encoding=“ISO-8859-1”?><elemento xmlns=“http://www.example.es/local/”
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://www.example.es/local/ Ejemplo_Esquema.xsd”>
Espacio de nombre por defecto para nuestras
etiquetas
Espacio de nombre para instancias de xml schema
Orden donde se define que el esquema asociado al espacio
de nombre dado se encuentra en el fichero Ejemplo_Esquema.xsd
Título
Cabecera de los esquemas XML
• Todos los esquemas XML tienen una cabecera con los siguientes elementos:
<?xml version=“1.0” encoding=“ISO-8859-1”?><xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”
targetNamespace=“http://www.example.es/local/” xmlns=“http://www.example.es/local/” elementFormDefault=“qualified”>
...
Elemento raíz xs:schema. Se debe cerrar al
final del esquema
Espacio de nombre de XML Schema
Espacio de nombre al que aplicar el
esquema
Espacio de nombre por defecto
Orden que especifica que todo elemento declarado en el esquema debe tener un
espacio de nombre asociado
Título
Componentes de XML Schema
Elementos
Tipo de datos
Atributos
Predefinidos
Construidos
Título
Tipo de datos predefinidos
• Existen diferentes tipos de datos que ya están incluidos en la definición de XML Schema y que los validadores pueden procesar sin necesidad de que los tenga que definir el desarrollador.
• Tipos de datos predefinidos comunes son:– Cadena de caracteres: xs:string– Entero positivo: xs:integer– Número decimal: xs:decimal (entero positivo + dos
cifras decimales)– Fecha: xs:date (formato AAAA-MM-DD)– Año: xs:gYear (formato AAAA)
PredefinidosTipo de datos
Título
Tipo de datos construidos
• Otros tipos de dato los debemos de definir nosotros mismos ya que no están incluidos por defecto en XML Schema. Se construyen a partir de una restricción en un tipo de dato predefinido.
• Se pueden definir dentro de un elemento o al principio del fichero.
• Vamos a ver dos ejemplos:
– Valores facetados de opciones múltiples– Valores facetados con patrones de formato
Construidos o arquetipos
Tipo de datos
Título
Facetas con opciones múltiples
Construidos o arquetipos
(opciones múltiples)
<xs:simpleType name=“colores">
<xs:restriction base="xs:string">
<xs:enumeration value=“rojo"/>
<xs:enumeration value=“verde"/>
<xs:enumeration value=“azul"/>
</xs:restriction>
</xs:simpleType>
Tipo de datos
Título
Facetas con patrones de formato
Construidos o arquetipos (patrones de formato)
<xs:simpleType name=“Num_Telefono">
<xs:restriction base="xs:string">
<xs:length value=“10"/>
<xs:pattern value="\d{2}-\d{7}"/>
<xs:pattern value="\d{3}-\d{6}"/>
</xs:restriction>
</xs:simpleType>
Números de teléfono: 93-4467801 ó 958-128434
Tipo de datos
Título
Cómo definir elementos (1)
• Los elementos que solo contienen datos se definen así: <xs:element name=“elemento” type=“construído/predefinido”/>
• Si contiene elementos anidados estos se definen bajo las etiquetas complexType y enumeration:
<xs:element name=“elemento”> <xs:complexType> <xs:sequence> <xs:element name=“elemento1” type=“construído/predefinido”/> <xs:element name=“elemento2” type=“construído/predefinido”/>
...
Elementos
Título
Cómo definir elementos (y 2)
• Es posible definir las ocurrencias de los elementos con los atributos minOccurs y maxOccurs.
– minOccurs: Define el número mínimo de ocurrencias del elemento. Su valor mínimo es 0.
– maxOccurs: Define el número máximo de ocurrencias. Su valor mínimo es 1 y el máximo unbounded.
• Si no se indica ninguno de ellos, el elemento deberá aparecer una única vez (es decir minOccurs=0 y maxOccurs=1).
<xs:element name=“nombre” type=“tipo” minOccurs=“0” maxOccurs=“unbounded”/>
Elementos
Título
Cómo definir atributos (1)
• Se definen siempre dentro del ámbito de un elemento (anidados en una etiqueta complexType).
• En elementos vacíos o que contienen a otros elementos los definimos así:
<xs:element name=“nombre”> <complexType> <xs:attribute name=“atributo” type=“predefinido/construído”/> ...
Atributos
Título
Cómo definir atributos (2)
• Si el elemento contiene datos y además un atributo (<elemento atributo=“valor”>Datos</elemento>) es necesario definir una etiqueta simpleContent, una etiqueta extension que contiene el tipo de dato del elemento y a continuación la definición del atributo (siempre dentro del ámbito de una etiqueta complexType):
<xs:element name=“nombre”> <xs:complexType> <xs:simpleContent> <xs:extension base=“construído/predefinido del elemento”> <xs:attribute name=“atributo” type=“construído/predefinido”/> ...
Atributos
Título
Cómo definir atributos (y 3)
• Además es posible definir la obligatoriedad del uso de un atributo en el documento XML indicando el atributo use. Sus valores son optional y required.
<xs:attribute name=“atributo” type=“predefinido” use=“required”/>
Atributos
Título
Extensión
• La extensión de los ficheros de esquemas XML es .xsd
Título
Siguiente módulo:
Visualizar XML con CSS
© J.M. Morales-del-Castillo 2007