Diferencia entre revisiones de «Usuario:Lmorillas/modulo lenguajes de marcas/xml»
(16 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
{{Usuario:Lmorillas/modulo_lenguajes_de_marcas/nav }} | {{Usuario:Lmorillas/modulo_lenguajes_de_marcas/nav }} | ||
− | {{ | + | {{MiTitulo| XML}} |
− | {{ | + | {{/documentacion general}} |
+ | {{/que es}} | ||
− | |||
− | |||
− | |||
− | |||
− | + | {{/ventajas}} | |
− | == | + | |
− | + | {{/presentacion css}} | |
− | + | <!-- | |
− | * | + | == Intro a XML == |
+ | http://www.ibm.com/developerworks/xml/tutorials/xmlintro/ | ||
+ | * ¿Por qué se creó XML? | ||
+ | * Reglas de los documentos XML | ||
+ | * Cómo definir qué pueden contener (y qué no) los documentos XML | ||
+ | * Interfaces de programación para trabajar con documentos XML | ||
+ | * Principales estándares XML | ||
+ | * Ejemplo de uso empresarial de XML | ||
+ | * Ampliar | ||
+ | --> | ||
+ | |||
+ | {{/sintaxis xml}} | ||
+ | |||
+ | {{/dtd}} | ||
+ | |||
+ | {{/namespaces}} | ||
+ | |||
+ | {{/xml schema}} | ||
+ | |||
+ | == Intro XPath == | ||
+ | [[/xpath | Intro a XPath ]] | ||
+ | |||
+ | == Intro a XSLT == | ||
+ | [[/xslt | Intro a XSLT]] |
Última revisión de 10:54 10 ene 2013
Contenido
- 1 Documentación general
- 2 Editores
- 3 ¿Qué es XML?
- 4 Lectura inicial
- 5 Listado de cursos en XML
- 6 Actividad
- 7 Objetivo
- 8 Ventajas
- 9 ¿Para qué sirve?
- 9.1 Visualización con CSS
- 9.2 Sintaxis XML
- 9.3 DTD
- 9.3.1 Funciones de un DTD
- 9.3.2 ¿Cómo se introduce?
- 9.3.3 ¿Dónde?
- 9.3.4 Declaraciones ELEMENT
- 9.3.5 Sintaxis de declaraciones ELEMENT
- 9.3.6 Restricciones
- 9.3.7 Comodines
- 9.3.8 Declaración de atributos de un elemento
- 9.3.9 Tipos de atributos
- 9.3.10 Atributos por defecto
- 9.3.11 Declaración de entidades
- 9.3.12 Entidades parámetro
- 9.3.13 Entidades y notaciones
- 9.3.14 Ejercicios DTDs
- 10 Ejercicios DTDs
Documentación general
- http://www.mclibre.org/consultar/xml/
- http://www.ibm.com/developerworks/xml/newto/
- http://www.w3schools.com/xml/
- http://html.conclase.net/recursos/especificaciones
- Tecnologías xml: http://www.w3c.es/divulgacion/guiasbreves/tecnologiasxml
Editores
- xmlcopy editor: http://xml-copy-editor.sourceforge.net/
¿Qué es XML?
Lectura inicial
Echa un vistazo a los siguientes links:
|
Un ejemplo
XML (EXtensible Markup Language) es un modo multiplataforma de representar datos. XML te permite crear datos que se podrán leer por cualquier aplicación en cualquier plataforma. Puedes crearlo y editarlo a mano por estar basado en tecnologías de etiquetas.
<?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
Listado de cursos en XML
Crea una versión en XML con la información de 5 cursos de http://plan.aragon.es/MapaRec.nsf/fmrListado?OpenForm
|
|
Ventajas de usar XML
|
|
Visualización con CSS
Documentación
- http://www.mclibre.org/consultar/xml/lecciones/xml_css.html
- http://evc-cit.info/cit041x/lecture6_example.html
- http://es.tz8.de/style-styling-xml.html
- https://www.ibm.com/developerworks/xml/tutorials/x-xmlcss (3 entregas)
En el doc xml
En el documento xml introducimos una referencia al documento .css
<?xml-stylesheet type="text/css" href="url_del_css"?>
Chuleta CSS
- Básico
long {display: none;} abbreviation {display: inline;} abbreviation * {display: inline;} * {display: block;}
- Generar contenido
title:before {content: 'Title: ';} title:after {content: ' (technical paper)';} subtitle:before {content: 'Subtitle: ';} author:before {content: 'Author: ';}
- Comillas
subtitle:before {content: open-quote;} subtitle:after {content: close-quote;}
- Atributos
author:after {content: ' (' attr(e-mail) ')';}
- Contadores
section:before { content: "Section " counter(section) "\A\A0"; counter-increment: section; white-space: pre; }
- Contenido desde uris
paper:after { content: url('disclaimer.txt'); white-space: pre; }
Sintaxis XML
La estructura de los documentos XML
- Los documentos XML tienen información de texto que abarca las marcas y el contenido.
- Las marcas describen los datos y están encerradas entre signos < y >
- El prólogo es la parte introductoria del doc XML: precede al primer elemento:
<?xml version="1.0" encoding="utf-8"?>
- El contenido del documento se encuentra en sus elementos y atributos.
- Los elementos empiezan y finalizan con una etiqueta de inicio y fin.
- Los atributos están en la etiqueta de inicio.
- Restricciones para los nombres:
- Tienen que empezar por letra, quión bajo o dos puntos (recomendado letra)
- Se distinguen mayúsculas y minúsculas
- Los dos puntos deberían de usarse sólo para separar namespaces.
- No deben de empezar con el carácter xml (reservados para el W3C)
Documentos bien formados
- Un elmento raíz que encierra los demás
- Todos los elementos tienen una etiqueta de inicio y una de fin ( o son elementos vacíos)
- Todos los elementos están anidados jerárquicamente (sin solapamientos)
- Todos los valores de los atributos están entre comillas (dobles o sencillas)
<elemento_vacio></elemento_vacio> <elemento_vacio />
Secciones CDATA
- Incluyen caracteres no permitidos: <, >, &, "
<formula>4 < 5 </formula> # NO VÁLIDO <formula><![CDATA[4<5>]]> </formula>
Documentos válidos
- Según un tipo de documento (DTD, xml schema, relax NG, ...)
DTD
Un DTD es el documento que define la estructura que debe tener un documento XML(elementos, atributos, entidades, notaciones, etc, que pueden aparecer, el orden y el número de veces que pueden aparecer, cuáles pueden ser hijos de cuáles, etc.)
Funciones de un DTD
- Validar documentos
- Dar valores por defecto a atributos que no existen
- Declarar y reemplazar entidades
- Documentar los documentos.
¿Cómo se introduce?
- declaración DOCTYPE
¿Dónde?
- Pueden aparecer dentro del documento xml, fuera o en ambos sitios.
- Dentro del doc:
<!DOCTYPE root ... >
- Fuera del documento:
<!DOCTYPE root SYSTEM "http://...">
- Primero lee el externo, depués el interno
Declaraciones ELEMENT
- Especifican qué pueden contener los elementos
- No soporte directo de namespaces
- Los elementos pueden contener:
- Nada
<!ELEMENT name EMPTY>
- Texto
<!ELEMENT name (#PCDATA)>
- Texto y nuevos elementos (hijos)
<!ELEMENT name (#PCDATA|elem1|elem2|...)*>
- Hijos
<!ELEMENT name (elem1|elem2|...)*>
Sintaxis de declaraciones ELEMENT
- Secuencia de hijos
<!ELEMENT name (ch1, ch2)>
- Elección entre hijos
<!ELEMENT name (ch1|ch2)>
- Secuencia de hijos opcionales
<!ELEMENT name (ch?, ch2?, ch3?)>
- Cero o más ...
<!ELEMENT name (child*)>
- Uno o más
<!ELEMENT name (child+)>
Se pueden combinar las posibilidades
- Elección entre secuencias:
((a, b) | (c, d)
- Secuencia de opciones
((a | b), (c | d))
- Secuencia opcional
(a, b, c)?
No se puede mezclar , y | en una lista. Usa paréntesis para desambiguar.
Restricciones
- Un modelo mixto no puede restringir cuántas veces y el orden en que aparecen los hijos. Sólo los elementos permitidos.
- Un modelo de sólo elementos requiere que cada elemento hijo de la instancia coincida exactamente con una parte del modelo. Lo siguente no es legal:
(A?, A?)
Comodines
- Un elmento que puede contener cualquier elemento declarado en el DTD o texto
<!ELEMENT name ANY>
Declaración de atributos de un elemento
<!ATTLIST ename attr1 type1 default1 attr2 type2 default2 ...>
Tipos de atributos
- CDATA
- sin restricción
- ID
- un identificador
- IDREF
- tiene que coincidir con un ID de un elemento.
- NMTOKEN
- nombre o número
- IDREFS
- uno o más IDs separados por espacios
- NMTOKENS
- uno o más separados por espacios
Atributos por defecto
- Valor requerido, lo insertará el parser
#FIXED "value"
- Atributo requerido, pero sin valor específico
#REQUIRED
- Atributo no requerido, con valor por defecto
"valor"
- Atributo no requerido, sin valor por defecto:
#IMPLIED
Declaración de entidades
- Declaran un nombre para texto que se insertará en el documento
<!ENTITY nombreEntidad "valorEntidad">
- Se insertan así:
&nombreEntidad;
Entidades parámetro
<!ENTITY %datos_personales "nombre|telefono|email"> <!ENTITY %empleado (departamento, %datos_personales)>
Entidades y notaciones
Combinar datos textuales y no textuales.
<!ELEMENT logo EMPTY> <!ATTLIST logo imagen ENTITY #REQUIRED> <!NOTATION GIF SYSTEM "visor_sistemas"> <!ENTITY logo_centro SYSTEM "http://www.miempresa.com/logo.gif"> NDATA GIF>
<logo imagen="logo_centro" />
Ejercicios DTDs
Realiza los ejercicios de DTDs de la siguiente página de Bartolomé Sintes Marco: http://www.mclibre.org/consultar/xml/ejercicios/dtd.html
|
Uso de Namespaces
(Ejemplos de
Motivación
- Objetivo: resolver conflictos cuando coinciden elementos con el mismo nombre, pero con diferente significado.
- Ocurre con frecuencia cuando construimos nuevas estructuras desde definiciones existentes.
- Recomendación del W3C. Se usa para identificar el origen de cada elemento: http://www.w3.org/TR/REC-xml-names/
Ejemplo 1
<table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> This XML carries information about a table (a piece of furniture):
Ejemplo 2
<table> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table>
Declaración de namespaces
- A cada namespace se le asigna un prefijo
- El prefijo hace referencia a una URI (Uniform Resource Identifier), que no suele tener equivalencia física (convención para crear espacios únicos)
<root> <h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table xmlns:f="http://www.w3schools.com/furniture"> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> </root>
Declaración al inicio
<root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture"> <h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> </root>
Namespace por defecto
- Sin prefijo: los elementos sin especificación del namespace están en el namespace por defecto, excepto si el elemento que no tiene prefijo es hijo de un elemento que sí que lo tiene.
<table xmlns="http://www.w3.org/TR/html4/"> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table>
Namespace vacío
- Si un elemento no va a estar asociado a ningún namespace, se puede definir un namespace vacío.
Namespaces y atributos
- La declaración de namespaces no tienen efecto sobre los atributos
- Si los atributos no están calificados, no se asocian a ningún namespace.
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
XML Schema
Documentación
- http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/
- http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html
- http://www.w3schools.com/schema/
- http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=1
Objetivo
XML Schema es una alternativa a DTD basada en XML. Describe la estructura de un documento XML.
- 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.aafunky.com/w3c/xmlschema/xmlschema-0es.html)
<?xml version="1.0"?> <hojaPedido fechaPedido="1999-10-20"> <enviarA pais="EEUU"> <nombre>Alice Smith</nombre> <calle>123 Maple Street</calle> <ciudad>Mill Valley</ciudad> <estado>CA</estado> <zip>90952</zip> </enviarA> <facturarA pais="EEUU"> <nombre>Robert Smith</nombre> <calle>8 Oak Avenue</calle> <ciudad>Old Town</ciudad> <estado>PA</estado> <zip>95819</zip> </facturarA> <comentario>¡Deprisa, mi césped parece una selva!</comentario> <elementos> <elemento numProducto="872-AA"> <nombreProducto>Cortacesped</nombreProducto> <cantidad>1</cantidad> <precioEEUU>148.95</precioEEUU> <comentario>Confirmar que es eléctrico</comentario> </elemento> <elemento numProducto="926-AA"> <nombreProducto>Monitor para bebes</nombreProducto> <cantidad>1</cantidad> <precioEEUU>39.98</precioEEUU> <fechaEnvio>1999-05-21</fechaEnvio> </elemento> </elementos> </hojaPedido>
XML Schema:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="es"> Esquema de hoja de pedido para Example.com. Copyright 2000 Example.com. Todos los derechos reservados. </xsd:documentation> </xsd:annotation> <xsd:element name="hojaPedido" type="TipoHojaPedido"/> <xsd:element name="comentario" type="xsd:string"/> <xsd:complexType name="TipoHojaPedido"> <xsd:sequence> <xsd:element name="enviarA" type="direccionEEUU"/> <xsd:element name="facturarA" type="direccionEEUU"/> <xsd:element ref="comentario" minOccurs="0"/> <xsd:element name="elementos" type="Elementos"/> </xsd:sequence> <xsd:attribute name="fechaPedido" type="xsd:date"/> </xsd:complexType> <xsd:complexType name="direccionEEUU"> <xsd:sequence> <xsd:element name="nombre" type="xsd:string"/> <xsd:element name="calle" type="xsd:string"/> <xsd:element name="ciudad" type="xsd:string"/> <xsd:element name="estado" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="pais" type="xsd:NMTOKEN" fixed="EEUU"/> </xsd:complexType> <xsd:complexType name="Elementos"> <xsd:sequence> <xsd:element name="elemento" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="nombreProducto" type="xsd:string"/> <xsd:element name="cantidad"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="precioEEUU" type="xsd:decimal"/> <xsd:element ref="comentario" minOccurs="0"/> <xsd:element name="fechaEnvio" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="numProducto" type="SKU" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <!-- Stock Keeping Unit [Código de Almacenaje], --> <!-- un código para identificar productos --> <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
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 (declarado a nivel global).
- 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)
- element
- para declarar elementos. Atributos: name, ref, type, sympleType, complexType
- attribute
- para declarar atributos. Nomalmente dentro de attributeGroup. Tipos: simpleType o type. Siempre son de tipo simple. Frecuencia: use: required, optional, prohibited,.
- sequence
- los elementos tienen que aparecer en el mismo orden
- cardinalidad
- minOccurs, maxOccurs. Si no se especifica nada: 1.
- Restricciones de valor
- fixed, default,