El documento presenta información sobre esquemas y vocabularios en XML. Explica las DTD (Document Type Definition) como un modelo estructural para definir elementos, atributos, contenido y jerarquía de elementos en un documento XML. También cubre conceptos como entidades, espacios de nombres y esquemas XML para definir vocabularios. El documento incluye varios ejemplos prácticos de cómo aplicar estas definiciones y validar documentos XML.
1. Lenguajes de Marcas y SGI
UT 5: XML (I).
Definición de esquemas y vocabularios.
CFGS «Administración de Sistemas
Informáticos en Red»
CIFP Juan de Colonia (Burgos)
David H. Martín Alonso
– Curso 2010/2011 –
2. XML (I): ESQUEMAS Y VOCABULARIOS.
Contenidos
Introducción
DTD
Espacios de nombres
XML Schemas
Febrero de 2011 CIFP Juan de Colonia
3. XML (I): ESQUEMAS Y VOCABULARIOS.
XML por fuera...
● XML se emplea para organizar
información de cualquier tipo.
● Muy popular, está omnipresente en
multitud de aplicaciones para
cualquier uso.
● Es un formato de texto,
estructurado usando etiquetas.
● Aunque tiene orígenes comunes y
es también muy popular en
Internet, no es HTML.
Febrero de 2011 CIFP Juan de Colonia
4. XML (I): ESQUEMAS Y VOCABULARIOS.
XML por dentro...
● Elementos
● Atributos
● Entidades
● Texto de contenido
Febrero de 2011 CIFP Juan de Colonia
5. XML (I): ESQUEMAS Y VOCABULARIOS.
¿metalenguaje?
■ Introducción XML es solo un metalenguaje.
□ DTD
□ XSD • Formato general, básico, común, obligatorio.
• Base para lenguajes con usos reales, concretos.
Diversos modelos para desarrollar cada lenguaje
– Gramáticas, vocabularios, etc.
5/43
• Document Type Definition (DTD).
• Esquemas (XMLSchema).
• Espacios de nombres.
Necesidad de corrección a los dos niveles:
• Documentos bien formados.
• Documentos válidos.
Febrero de 2011 CIFP Juan de Colonia
6. XML (I): ESQUEMAS Y VOCABULARIOS.
xmllint
■ Introducción Utilidad de texto para «sanear» archivos XML.
□ DTD
□ XSD
– Incluido en la biblioteca «libxml» .
• Dar formato.
• Verificar.
• Validar frente a lenguajes.
6/43
$> xmllint --version
…
$> xmllint --help
…
$> xmllint --format data.xml
…
$> xmllint --valid data.xml
…
$> xmllint –noout --dtdvalid data.dtd data.xml
…
$> xmllint –noout --schema schema.xsd data.xml
…
lint: soft cloth, used for protecting a cut or burn on your skin.
lint: soft cloth, used for protecting a cut or burn on your skin.
Febrero de 2011 CIFP Juan de Colonia
7. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad I: xmllint
Trabajar con xmllint para formatear y validar
documentos XHTML. Retirar la definición DOCTYPE
del documento y descargar a mano los archivos
correspondientes para tratar de hacer la validación
completamente de manera local.
Nota: Alguna versión distribuida para Win32, en
concreto la de MSYS no incluye soporte HTTP y eso
limita la validación contra archivos de definición a
través de la red. Con la opción –-versión
podemos ver las características incluidas.
Febrero de 2011 CIFP Juan de Colonia
8. XML (I): ESQUEMAS Y VOCABULARIOS.
DTD
□ Introducción Document Type Definition
■ DTD
□ XSD • Modelo estructural del documento
– Elementos
– Atributos
– Descendientes, jerarquía
– Contenido
8/43
• Modelo clásico heredado de SGML
– ¡Sintaxis NO XML!
– Sencillo = limitado
– En recesión frente a esquemas, espacios de nombres...
• Ubicación
– Interno
– Externo
– Mixto
• Notación: <! … >
– DOCTYPE, ELEMENT, ATTLIST, ENTITY
Febrero de 2011 CIFP Juan de Colonia
9. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: DOCTYPE
□ Introducción <!DOCTYPE –nombre– [ –declaraciones– ]>
■ DTD
□ XSD
• La definición DOCTYPE precede al elemento raíz.
• El nombre debe ser el del elemento raíz.
• Las declaraciones podrán estar en un archivo
9/43
separado.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE huérfano [
<!ELEMENT huérfano EMPTY>
]>
<huérfano />
Febrero de 2011 CIFP Juan de Colonia
10. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Elementos (I)
□ Introducción <!ELEMENT –nombre– –contenido– >
■ DTD
□ XSD • Todos los elementos permitidos deben tener
descripción.
• Cada elemento debe indicar nombre y contenido.
• Contenidos especiales:
10/43
– EMPTY: elementos siempre vacíos.
– ANY: admite cualquier contenido, sean elementos o texto.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE huérfano [
<!ELEMENT huérfano ANY>
<!ELEMENT furtivo EMPTY>
]>
<huérfano><furtivo/></huérfano>
Febrero de 2011 CIFP Juan de Colonia
11. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Elementos (II)
□ Introducción • Los descendientes van entre paréntesis.
■ DTD
□ XSD
• El operador coma « , » separa los descendientes
exigidos y en orden.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE huérfano [
11/43 <!ELEMENT huérfano (a, b)>
<!ELEMENT a ANY>
<!ELEMENT b ANY>
]>
<huérfano><a/><b/></huérfano>
Febrero de 2011 CIFP Juan de Colonia
12. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Elementos (III)
□ Introducción – El operador « | » separa descendientes alternativos.
■ DTD – Los paréntesis « () » permiten crear subgrupos.
□ XSD – Los elementos (o subgrupos) pueden ser opcionales
« ? » señala componentes opcionales.
« * » permite varios componentes opcionales.
« + » exige uno o más componentes.
– #PCDATA se emplea para contenido textual.
12/43
<!DOCTYPE padre [
<!ELEMENT padre ( hijo+ ) >
<!ELEMENT hijo ( #PCDATA | a | b )* >
<!ELEMENT a ANY>
<!ELEMENT b ANY>
]>
<padre>
<hijo />
<hijo><a/></hijo><hijo><b/></hijo>
<hijo><a/><b/></hijo><hijo><b/><a/></hijo>
<hijo><b/>1<a/>2<b/>¡Hola mundo!<b/>4<b/>5<b/></hijo>
</padre>
Febrero de 2011 CIFP Juan de Colonia
13. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Elementos (IV)
□ Introducción
■ DTD
□ XSD
<!ELEMENT table
(caption?, (col*|colgroup*), thead?, tfoot?,
(tbody+|tr+))>
<!ELEMENT caption %Inline;>
13/43 <!ELEMENT thead (tr)+>
<!ELEMENT tfoot (tr)+>
<!ELEMENT tbody (tr)+>
<!ELEMENT colgroup (col)*>
<!ELEMENT col EMPTY>
<!ELEMENT tr (th|td)+>
<!ELEMENT th %Flow;>
<!ELEMENT td %Flow;>
Febrero de 2011 CIFP Juan de Colonia
14. XML (I): ESQUEMAS Y VOCABULARIOS.
<!DOCTYPE ...>
□ Introducción DTD internos
■ DTD
<!DOCTYPE elemento0 [ <!ELEMENT elemento0 ANY> ]>
□ XSD
DTD externos
– Con prólogo donde se indica la codificación:
<?xml version="1.0" encoding="utf-8"?>
14/43 • Basados en URI
<!DOCTYPE elemento0 SYSTEM "dtd0.dtd">
• Basados en identificador
– Si está almacenado no requiere descarga.
– URI opcional.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
DTD mixtos
<!DOCTYPE elemento1 SYSTEM "dtd0.dtd" [
<!ELEMENT extra ANY>
]>
Febrero de 2011 CIFP Juan de Colonia
15. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad II: diseño de DTD
Diseñar un DTD para almacenar libros, permitiendo la
incorporación de los bloques o simplemente
capítulos que lo componen.
<libro>
<título>Egolatría</título>
<autor>Yo mismo</autor>
<autor>Conmigo mismo</autor>
<bloque>
<título>Yo</título>
<capítulo><título>El Yo</título></capítulo>
<capítulo><título>Mí</título></capítulo>
<capítulo><título>Menda</título></capítulo>
</bloque>
<bloque>
<título>Lo demás</título>
<capítulo><título>La Nada</título></capítulo>
<capítulo><título>El vacío</título></capítulo>
</bloque>
</libro>
Febrero de 2011 CIFP Juan de Colonia
16. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad III: codificación DTD
Con el archivo DTD del ejercicio anterior. Convertirlo
a codificación Windows-1252 y comprobar la
necesidad de indicar la codificación en la declaración
de XML en el prólogo.
Probar si es compatible un documento XML en UTF-8
con un DTD en la codificación de Windows española.
Febrero de 2011 CIFP Juan de Colonia
17. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad V: CSS y XML
Buscar información sobre cómo enlazar XML con
CSS y preparar una hoja de estilos para el
documento del libro.
Es conveniente aplicar el formato “display: block;” a
los elementos definidos para visualizarlos en líneas
separadas.
http://www.w3schools.com/Xml/xml_display.asp
Febrero de 2011 CIFP Juan de Colonia
18. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Atributos (I)
□ Introducción <!ATTLIST –elemento– –nombre– –tipo– –opcionalidad– >
■ DTD
□ XSD
nombre + tipo + opcionalidad
• Tipos: restricciones sobre los valores admisibles.
• Opcionalidad:
18/43 – Atributos obligatorios/opcionales
– Valores por defecto
• Hay dos nombres reservados, de uso habitual.
– Idioma (BCP 47) del elemento xml:lang
– Preservar el espaciado xml:space
– Aún requieren declaración para ser usados.
<!ATTLIST ejemplo
xml:lang CDATA "es-ES"
xml:space (default|preserve) "preserve" >
Febrero de 2011 CIFP Juan de Colonia
19. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Atributos (II)
□ Introducción • Tipos: restricciones sobre los valores admisibles
■ DTD – CDATA: general, texto no procesado.
□ XSD
ID: identificador de elementos, único.
IDREF, IDREFS: referencia a un identificador existente.
NMTOKEN, NMTOKENS: palabras, nombres válidos.
ENTITY, ENTITIES: nombre de entidad definida antes.
19/43
Enumeración de valores permitidos: (a1|a2|b1|c2)
• Opcionalidad y valores por defecto
– #REQUIRED: obligatorio
– #IMPLIED: opcional
– Opcional con valor por defecto: "valor"
– Opcional, valor por defecto y obligado: #FIXED "valor"
<!ELEMENT e0 ANY >
<!ATTLIST e0
id ID #REQUIRED
refs IDREFS #IMPLIED
a0 CDATA #IMPLIED
a1 CDATA "220V"
a2 CDATA #FIXED "siempre"
a3 (pc|mac) #REQUIRED >
Febrero de 2011 CIFP Juan de Colonia
20. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Atributos (III)
□ Introducción
■ DTD
□ XSD
<!DOCTYPE padre [
20/43
<!ELEMENT padre (hijo+) >
<!ELEMENT hijo EMPTY >
<!ATTLIST hijo
id ID #REQUIRED
a0 CDATA #REQUIRED
rel IDREF #IMPLIED
>
]>
<padre>
<hijo id="c6" a0="eso" rel="c7"/>
<hijo id="c7" a0="eso"/>
</padre>
Febrero de 2011 CIFP Juan de Colonia
21. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad V: Diseño DTD
Diseñar un modelo de documento DTD para la
información de los horarios de los alumnos aplicando
las posibilidades explicadas hasta el momento. Ej.:
empleando identificadores únicos para los módulos.
Febrero de 2011 CIFP Juan de Colonia
22. XML (I): ESQUEMAS Y VOCABULARIOS.
Entidades
□ Introducción <!ENTITY –nombre– –definición– >
■ DTD
□ XSD
Constantes, valores reutilizables
Varios tipos
• Internas / externas
22/43
– Internas. Ej.: <!ENTITY HMundo "Hola mundo">
– Externas.
Ej.: <!ENTITY ENT0 SYSTEM "algo.ent">
Ej.: <!ENTITY % HTMLlat1 PUBLIC
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
"xhtml-lat1.ent">
• Generales (&nombre;) / de parámetros (%nombre;)
– De parámetros, para usar en el propio DTD:
Ej.: <!ENTITY % comunes "id ID #IMPLIED">
Predefinidas:
< – > – & – ' – "
Febrero de 2011 CIFP Juan de Colonia
23. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos DTD: Entidades
□ Introducción <?xml version="1.0" encoding="utf-8"?>
■ DTD <!ENTITY % contenido "(#PCDATA|p)*">
□ XSD <!ELEMENT html (head,body)>
<!ELEMENT head (title)>
<!ELEMENT body %contenido;>
<!ELEMENT title (#PCDATA)>
<!ELEMENT p %contenido;>
23/43
<?xml version="1.0" encoding="utf-8"?>
<!ENTITY % ENT0 SYSTEM "htmltrucado.ent">
%ENT0;
<!ELEMENT html (head,body)>
<!ELEMENT head (title)>
<!ELEMENT body %contenido;>
<!ELEMENT title (#PCDATA)>
<!ELEMENT p %contenido;>
<?xml version="1.0" encoding="utf-8"?>
<!ENTITY % contenido "(#PCDATA|p)*">
<!ENTITY firma "<p>DHMA2011</p>">
Febrero de 2011 CIFP Juan de Colonia
24. XML (I): ESQUEMAS Y VOCABULARIOS.
Espacios de nombres
□ Introducción XML Namespaces – xmlns
□ DTD
■ XSD • Espacios de nombres.
• Permiten la coexistencia de escenarios
– Combinación de elementos en el mismo archivo.
– Definiciones separadas
24/43 • Se identifican mediante un nombre, un URI
– ATENCIÓN: no es una dirección web, sólo un nombre.
– Puede no estar disponible si tratamos de acceder a él.
Atributo xmlns. Heredado por los elementos hijo.
• Espacio de nombres por defecto
<html xmlns="http://www.w3.org/1999/xhtml">
• Espacios alternativos, identificados con prefijo
<padre
xmlns:svg="http://www.w3.org/2000/svg">
…
<svg:ellipse cx="2cm" cy="4cm"
rx="2cm" ry="1cm" />
Febrero de 2011 CIFP Juan de Colonia
25. XML (I): ESQUEMAS Y VOCABULARIOS.
Usando espacios de nombres
● En un mismo documento XML pueden coexistir varios
vocabularios/gramáticas que llamamos «espacios de
nombres» .
● Cada espacio de nombres se identifica mediante un nombre
único, con formato URI, que generalmente no devuelve
ninguna página.
● Se selecciona con el atributo «xmlns» y afecta
a todos los nodos hijo.
● Se le puede asignar un prefijo para identificar
solo a algunos elementos
<padre xmlns:prefijo="…">
<prefijo:nombre> … </prefijo:nombre>
Febrero de 2011 CIFP Juan de Colonia
26. XML (I): ESQUEMAS Y VOCABULARIOS.
Esquemas XML (I)
□ Introducción XML Schema Definition Language (XSD)
□ DTD
■ XSD
– Confusión con el nombre genérico: Esquema XML
• Modelo estructural del documento
– Nombre adoptado de las bases de datos
– Conjunto de restricciones de estructura y contenido
verificables por medios automáticos.
• Mejoras sobre DTD
26/43
– Formato XML los esquemas son validables por separado
– Mejoras en tipaje: aplicable también al contenido
– Mejoras en tipaje: más tipos y permite ampliarlos
+ permite una validación más estricta
+ mejora la comunicación entre aplicaciones, rigor en datos
– Soporte para espacios de nombres reutilización
– Muy completo ≠ sencillo
... the syntax of XML Schema was obviously produced by someone who grew up at the
... the syntax of XML Schema was obviously produced by someone who grew up at the
bottom of a deep well in the middle of a dark, wasteful moor where he was tortured daily by
bottom of a deep well in the middle of a dark, wasteful moor where he was tortured daily by
abusive giant squirrels and wishes to share his pain with the world.
abusive giant squirrels and wishes to share his pain with the world.
Robin Berjon (co-author SVG 1.1 spec)
Robin Berjon (co-author SVG 1.1 spec)
Febrero de 2011 CIFP Juan de Colonia
27. XML (I): ESQUEMAS Y VOCABULARIOS.
Esquemas XML (II)
□ Introducción Objetos: Tipos predefinidos:
□ DTD
■ XSD
element – string
attribute – decimal
simpleType – float
complexType – date
group –…
27/43
attributeGroup
Compositores
sequence
choice
all
Febrero de 2011 CIFP Juan de Colonia
28. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos XSD: Elementos
□ Introducción <xs:element name="título" type="xs:string"/>
□ DTD <xs:element name="autor" type="xs:string"/>
■ XSD
<xs:element name="capítulo">
<xs:complexType>
<xs:sequence>
28/43 <xs:element ref="título"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="bloque">
<xs:complexType>
<xs:sequence>
<xs:element ref="título"/>
<xs:element ref="capítulo"
minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Febrero de 2011 CIFP Juan de Colonia
29. XML (I): ESQUEMAS Y VOCABULARIOS.
El esquema XSD
□ Introducción • Elemento raíz del esquema: schema XSD
□ DTD
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
■ XSD
targetNamespace="http://www.mio.es/xsd1"
xmlns="http://www.mio.es/xsd1"> Vocabulario
... XML Schema
</schema> Vocabulario
definido
29/43
• Espacio de nombres del propio XML Schema.
– Nombres con prefijo
– Elementos de XML Schema para construir las definiciones.
• Espacio de nombres objeto de la definición.
– Nombres sin prefijo
– Permite referencias entre elementos propios de forma clara.
Vocabulario XML
<raíz xmlns="http://www.mio.es/xsd1" a usar
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mio.es/xsd1 xsdlibros.xsd">
...
</raíz> Localización
del vocabulario
Febrero de 2011 CIFP Juan de Colonia
30. XML (I): ESQUEMAS Y VOCABULARIOS.
xs – xsi
□ Introducción Usamos dos especificaciones estándar.
□ DTD
■ XSD
– XML Schema: dos espacios de nombres implicados.
– Prefijos estándar, ampliamente utilizados pero cambiables.
• Schema Namespace
– Nombre: http://www.w3.org/2001/XMLSchema
30/43
– En el archivo XSD que contiene las definiciones.
– Habitualmente usa los prefijos xs: o xsd:
– Elementos XML Schema para construir las definiciones.
• Schema Instance Namespace
– Nombre: http://www.w3.org/2001/XMLSchema-instance
– En el archivo que contiene el documento XML con datos.
– Habitualmente usa el prefijo xsi:
– Localización de archivos XSD.
– Opcional y muy reducido.
Solo schemaLocation y noNamespaceSchemaLocation
Febrero de 2011 CIFP Juan de Colonia
31. XML (I): ESQUEMAS Y VOCABULARIOS.
Elementos XSD
□ Introducción • Elementos globales
□ DTD – Hijos directos de <schema … >
■ XSD
– Definidos con <element … >
– Incorporación directa y obligatoria al espacio.
– Atributo name para darle nombre y type para el tipo.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … >
31/43
<xs:element name="título" type="xs:string"/>
<xs:element name="libro" type="grupo"/>
...
– Se pueden reutilizar/referenciar posteriormente
<xs:complexType name="grupo">
<xs:sequence>
<xs:element ref="título"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
– Tipos complejos: definición en elemento o separada.
– Repeticiones: minOccurs="1" maxOccurs="unbounded"
Febrero de 2011 CIFP Juan de Colonia
32. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos XSD: Elementos (II)
□ Introducción <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
□ DTD targetNamespace="http://www.mio.es/xsd2" xmlns="http://www.mio.es/xsd2">
<xs:element name="título" type="xs:string"/>
■ XSD <xs:element name="autor" type="xs:string"/>
<xs:element name="capítulo">
<xs:complexType>
<xs:sequence>
<xs:element ref="título"/>
</xs:sequence>
</xs:complexType>
</xs:element>
32/43
<xs:element name="bloque">
<xs:complexType>
<xs:sequence>
<xs:element ref="título"/>
<xs:element ref="capítulo" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="libro">
<xs:complexType>
<xs:sequence>
<xs:element ref="título"/>
<xs:element ref="autor" minOccurs="1" maxOccurs="unbounded"/>
<xs:choice>
<xs:element ref="bloque" minOccurs="1" maxOccurs="unbounded"/>
<xs:element ref="capítulo" minOccurs="1" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Febrero de 2011 CIFP Juan de Colonia
33. XML (I): ESQUEMAS Y VOCABULARIOS.
Atributos XSD
□ Introducción • Atributos globales
□ DTD – Hijos directos de <schema … >
■ XSD
– Definidos con <attribute … >
– Atributo name para darle nombre y type para el tipo.
– use="required" o use="optional"
con default="…"
33/43
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … >
<xs:attribute name="cód" type="xs:decimal"/>
...
– Se pueden referenciar posteriormente
– Van al final (tras sequence/choice/all)
<xs:complexType name="codificado">
...
<xs:attribute ref="cód" use="required"/>
</xs:complexType>
</xs:schema>
Febrero de 2011 CIFP Juan de Colonia
34. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad VI: Tipos simples
Buscar en las referencias los tipos de datos simples
predefinidos y ponerlos a prueba.
W3Schools
Dankert, E.
XML Schema Tutorial
Febrero de 2011 CIFP Juan de Colonia
35. XML (I): ESQUEMAS Y VOCABULARIOS.
simpleType vs. complexType
□ Introducción • Tenemos tipos predefinidos que podemos adaptar
□ DTD – restriction / extension
■ XSD
– Sobre el tipo indicado con base="…"
– También se pueden aplicar a los nuevos tipos creados.
– Definiciones globales con nombre, reutilizables.
– Definiciones locales sin nombre, en elementos y atributos.
35/43
• simpleType
– Aplicables a texto: válido para contenido o atributos
• complexType
– Cuando hay atributos, elementos hijo o contenido mixto.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" … >
<xs:simpleType name="díasemana">
<xs:restriction base="xsd:string">
<xs:enumeration value="miércoles"/>
<xs:enumeration value="viernes"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="jornada" type="díasemana"/>
</schema>
Febrero de 2011 CIFP Juan de Colonia
36. XML (I): ESQUEMAS Y VOCABULARIOS.
Ejemplos XSD: Tipos
□ Introducción <?xml version="1.0" encoding="utf-8"?>
□ DTD <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
■ XSD targetNamespace="http://www.mio.es/xsd3"
xmlns="http://www.mio.es/xsd3">
<xs:simpleType name="díasemana">
<xs:restriction base="xs:string">
<xs:enumeration value="miércoles"/>
36/43
<xs:enumeration value="viernes"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="jornada" type="díasemana"/>
<xs:element name="clase">
<xs:complexType>
<xs:sequence>
<xs:element ref="jornada" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Febrero de 2011 CIFP Juan de Colonia
37. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad VII: esquemas
Reconstruir el ejemplo anterior para que <jornada>
sea un elemento vacío con dos atributos día1 y
día2 donde indiquemos el día de la semana.
Rehacer alguno de los ejercicios de diseño de DTD
realizados empleando ahora esquemas XML
Schema.
Febrero de 2011 CIFP Juan de Colonia
38. XML (I): ESQUEMAS Y VOCABULARIOS.
Definiciones globales y locales
□ Introducción • Globales: definiciones en primer nivel, en schema.
□ DTD
– Nombre obligatorio name="…", también para tipos.
■ XSD
– Reutilizables usando ref="…" o type="…"
• Locales: definiciones dentro de otras definiciones
– Permite omitir nombres si no es elemento ni atributo.
38/43 • Se pueden construir esquemas alternativos con unas
y otras.
• Calificación: prefijos obligatorios o no.
– Por defecto los elementos y atributos locales no requieren
calificación por prefijo, se identifican por el contexto.
– Incompatible con espacio de nombres por defecto.
– Se puede forzar el uso del prefijo
elementFormDefault="qualified"
attributeFormDefault="qualified"
Febrero de 2011 CIFP Juan de Colonia
39. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad VIII: otros modelos
Existen otros lenguajes para especificar las
características de documentos XML. Relax NG es
uno de los más citados con una sintaxis más sencilla
que XML Schema. Buscar información sobre él y
construir y validar ejemplos.
Febrero de 2011 CIFP Juan de Colonia
40. XML (I): ESQUEMAS Y VOCABULARIOS.
Actividad IX: SVG y MathML
Familiarizarse con los lenguajes SVG y MathML.
Aprovechar la actividad para revisar conceptos
básicos sobre formatos de imágenes y resoluciones
e introducir el uso de la aplicación de diseño gráfico
Inkscape, pero sin perder nunca de vista la parte
técnica analizando el código XML/SVG/CSS.
Febrero de 2011 CIFP Juan de Colonia
41. XML (I): ESQUEMAS Y VOCABULARIOS.
Referencias
W3C Recommendation (2008, W3C) XExtensible Markup Language
http://www.w3.org/TR/xml/
W3Schools (WWW) DTD Tutorial
http://www.w3schools.com/DTD/
W3Schools (WWW) XML Schema Tutorial
http://www.w3schools.com/Schema/
Boulanger, T. y Lecomte, S. (2009, ENI). XML práctico: bases esenciales,
conceptos y casos prácticos. ISBN: 978-2-7460-4958-1.
Dankert, E. (2005, edankert...) XML Grammars.
http://www.edankert.com/grammars/
Webucator (2009) XML Schema Tutorial.
http://www.learn-xml-schema-tutorial.com/
Wilde, E. (2010, UC Berkeley) XML Foundations –INFO 242 (CCN 42593)– .
http://dret.net/lectures/xml-fall10/
Bibliografía actualizada en delicious:
http://www.delicious.com/dhmartin/LM-ASIR
Febrero de 2011 CIFP Juan de Colonia
42. XML (I): ESQUEMAS Y VOCABULARIOS.
Licencia
Este material está disponible bajo una Licencia Creative Commons,
http://creativecommons.org/licenses/by-nc-sa/3.0/es/
Febrero de 2011 CIFP Juan de Colonia
43. XML (I): ESQUEMAS Y VOCABULARIOS.
¿Dudas o cuestiones?
Febrero de 2011 CIFP Juan de Colonia