XML
(Extensible Markup Language)
Una herramienta multiplataforma para el
almacenamiento e intercambio de información
XML (Extensible
M
arkup
L
anguage)
Herramienta multiplataforma para transmitir
información
Es un lenguaje de marcas
extensible
, con
sintaxis similar a HTML.
Se diseñó para describir datos
● Metalenguaje = permite definir dialectos
Recomendación de W3C (Feb 98)
XML: Relación con HTML
No
reemplaza a HTML, lo complementa.
XML = Metalenguaje para
describir
datos.
● Estructurar, almacenar y enviar información
HTML = lenguaje para
visualizar
datos.
● Enfasis en cómo se presenta la información.
XML: Otras características
Extensible
● Podemos definir nuestras propias marcas
(nuestro propio lenguage).
Separación esquema/datos
● Utiliza un DTD (Document Type Definition) o un
esquema XML
Autocontenido
● combinación documento + (DTD/esquema XML)
autodescriptiva.
XML: Otras características...
Herramientas
● Existen múltiples herramientas que facilitan el
procesamiento de datos descritos en XML.
Portabilidad
● Las definiciones son portables (independientes
de la plataforma).
XML: ¿Para qué sirve?
Intercambio de datos (ej.- B2B)
● Emisor y Receptor usan XML para
componer/interpretar los datos.
Misma interpretación de los datos por ambas partes.
Facilita la compartición de datos
● Reemplaza a EDI (Electronic Data Interchange).
EDI se ha utilizado durante años para intercambio de
datos entre empresas.
Pero XML es mucho más barato (ej.- sobre internet
en lugar de infraestructura dedicada).
Y mucho más flexible.
XML: ¿Para qué sirve?...
Intercambio de datos...
● Principal estandard para intercambio de
información entre empresas sobre Internet
Base para futuras aplicaciones B2B
Simplifica SGML (Standard Generalized
Markup Language).
● XML recoge el núcleo básico de SGML (mucho
más simple).
● Simplicidad = mayor difusión, más herramientas
XML: ¿Para qué sirve?...
Complementa HTML
● HTML orientado a visualización = resulta dificil
reutilizar los datos.
● HTML es poco estricto a nivel sintáctico
Fácil para el usuario
Complica el procesamiento automatizado
● HTML posee difusión universal
Pero no es extensible.
XML: ¿Para qué sirve?...
Complementa HTML...
● XML es más complejo, más rígido en la sintaxis,
pero extensible.
● XML es una herramienta para definir lenguajes.
ej.- WAP y WML son dialectos escritos en XML
XML: Ejemplos
Junio 2005 10
<?xml version="1.0"
encoding="ISO-8859-1"?> <direccion>
<calle>San Antonio</calle> <numero>12</numero> <escalera>2</escalera>
<piso>5</piso>
<puerta>31</puerta>
<codigoPostal>46470</codigoPostal>
<poblacion>Catarroja</poblacion> <provincia>Valencia</provincia>
</direccion> <?xml version="1.0" encoding="ISO-8859-1"?> <Joke author="Cooper" firstTold="2002-01-01T12:10:10" xmlns="Different Namespace">
<Setup>A duck walks into a bar. The bartender says, "We don't serve ducks
here"</Setup>
<Punchline>The duck says, "That's OK, I don't like duck, anyway. It tastes like chicken. How about a beer?"</Punchline>
XML: Estructura general
DTD = forma de organizar los datos
● ej.- un album posee título y contiene varias
fotos; cada foto está en un fichero y posee fecha, título, etc.
● Podemos definir las marcas y propiedades que
queramos (ej.- album, foto, título, autor, etc.)
● Podemos definir nuestro DTD o utilizar uno
existente (ej.- hay DTD estandard para fotografía-)
XML: Estructura general...
XML = descripción conjunto de datos
● Texto puro (legible, y misma interpretación bajo
cualquier hard./soft.)
● Normalmente según un determinado DTD
● Esos datos pueden incluirse en un mensaje,
almacenarse en una Base de Datos, etc.
● Para visualizarlos utilizamos un lenguaje
adicional
CSS (Cascading Style Sheet) o XSL (eXtensible
Stylesheet Language)
XML: Marcas
Las marcas XML son similares a las
marcas HTML
● <MARCA> elemento </MARCA>
● Elemento = texto entre el principio y final de la
marca
● Una marca define un tipo de datos (cómo
interpretar el elemento)
XML: Marcas...
Sintaxis
● En las marcas se distinguen May/min (<ab> ≠ <Ab>)
● Toda marca debe cerrarse
● Las marcas siempre deben estar correctamente
anidadas
● Se usan los mismos comentarios que en HTML:
<!-- ... -->
● En las marcas vacías (sin elem) podemos abreviar
ej.- <camisa color=”azul” talla=”42”></camisa> Equivale a <camisa color=”azul” talla=”42”/>
XML: Elementos y sub-elementos
Los elementos son anidables
● El elemento no tiene porqué ser un valor simple
● Puede consistir en una secuencia de elementos
entre marcas (sub-elementos)
● Se puede usar la anidación sin ningún tipo de
restricción
XML: Documentos
Declaración XML
● Marca especial <?xml version=”..”..?> en la
primera línea
● Indica que usamos XML y además la versión
Elemento raíz
● Todo documento XML debe tener un (y solo un)
elemento raíz
● Todos los restantes son subelementos de la raíz
XML: Documentos...
Estructura general
● Todos los elementos deben anidarse
correctamente
● Finalmente se obtiene una estructura en árbol
XML: Atributos
Podemos asociar atributos a las marcas
● <marca unAtrib=”valorAtrib” ..
otroAtrib=”otroValor>..</marca>
● El valor del atributo siempre debe aparecer
entre dobles comillas
● En un elemento dado no podemos repetir un
nombre de atributo
XML.-
Espacios de Nombres
Evitan colisiones de nombres entre
nombres definidos en gramáticas distintas
● Ej.- un elemento autor en gramática que define
libros y en gramática que define discos
Cada espacio de nombres se identifica
mediante una URI única
● Se puede establecer un espacio de nombres
por defecto
● Se puede definir un prefijo para el espacio de
nombres (para no usar la URI completa)
XML: Atributos...
También podemos codificar la información
de los atributos como sub-elementos
● <m color=”rojo”/> equivale a
<m><color>rojo</color></m>
● Como norma general
Usamos sub-elementos si el valor puede ser opcional
o múltiple
Si el valor es único, lo codificamos como atributo
XML: Documento bien construido
Bien construido (well formed) = conforme a
las reglas XML
● En otras palabras, se adhiere a las reglas
sintácticas XML
XML: Documento bien construido...
Versión simplificada de las reglas
● Un elemento raíz
● Los restantes elementos son sub-elementos
directos o indirectos de la raíz
● Todas las anidaciones son correctas
(<a><b>...</a></b> es ilegal)
● Toda apertura posee el cierre correspondiente
● Los nombres de los atributos se usan
únicamente una vez en el mismo elemento
XML: Documento válido
Válido si y sólo si:
● Bien construido (sintaxis correcta)
● Aplica las reglas definidas en el DTD asociado
La comprobación se realiza sobre la estructura, no sobre
el contenido
El contenido de un documento válido se puede
interpretar de forma no ambigua
Emisor y receptor usan el mismo DTD
● Garantiza que sólo se aceptan documentos válidos
XML: El DTD
DTD = reglas para un tipo particular de
documentos XML
● O sea, define un dialecto
El uso de un DTD es opcional
● Si un XML no usa DTD, solo se puede
comprobar si está bien construido
XML: El DTD...
Acceso al DTD
● Externo
El fichero XML referencia a un DTD definido en otro
fichero.
<!DOCTYPE elemRaiz SYSTEM urlDelDTD> Es lo habitual en B2B
● Interno
Las definiciones del DTD se incluyen en el XML
<!DOCTYPE elemRaiz [definiciones del DTD]> Sólo útil si no vamos a reutilizar el DTD
XML: Contenido del DTD
Elementos
● <!ELEMENT nombre descripción>
● Ej.- para definir la marca 'empleado' usamos
<!ELEMENT empleado (#PCDATA)>
Datos
● La descripción del elemento indica el contenido
(datos) de dicho elemento
● Ej #PCDATA significa “parsed character data”
Corresponde a secuencia de caracteres no interpretada
XML: Contenido del DTD...
Sub-elementos
● Un elemento puede contener una secuencia de
sub-elementos
Ej.- <!ELEMENT coche (fabricante, modelo)>
Cada sub-elemento posee su propia definición
● Cada elemento puede indicar la multiplicidad
? = opcional (puede aparecer o no)
+ = una o más veces
* = cero o más veces
Ej.- <!ELEMENT hijos(hijo*)>
XML: Contenido del DTD...
El signo “|” indicar selección entre subelementos
Ej.- <!ELEMENT sexo (varón | hembra)>
● Se admiten elementos vacíos (sin contenido)
Ej.- <!ELEMENT separador EMPTY>
Atributos
Indicamos qué atributos pueden (y deben) aparecer en un
elemento
A qué elemento corresponde el atributo
El nombre y el tipo del atributo
El valor por defecto del atributo
#REQUIRED, #IMPLIED, #FIXED “valor”, “valor”
Ej.- <!ATTLIST Customer id ID #REQUIRED>
XML: Contenido del DTD...
Tipos de atributos
CDATA.- por defecto. Tira de texto
NMTOKEN.- uno o más caracteres legales XML NMTOKENS.- lista de tokens XML
ID.- nombre XML unico en el documento IDREF.- nombre XML para un atributo IDREFS.- lista nombres atributos
ENTITY.- nombre de entidad declarado en ENTITY ENTITIES.- lista de entidades
NOTATION.- nombre de notación declarado en NOTATION Enumeration.- lista de valores para atributos, separados por '|'
XML.-
Ejemplo DTD
<!ELEMENT Order (Customer, Product+, Subtotal, Tax, Shipping, Total)> <!ELEMENT Customer (#PCDATA)>
<!ATTLIST Customer id ID #REQUIRED>
<!ELEMENT Product (Name, SKU, Quantity, Price, Discount?, ShipTo, GiftMessage?)> <!ELEMENT Name (#PCDATA)>
<!ELEMENT SKU (#PCDATA)> <!ELEMENT Quantity (#PCDATA)> <!ELEMENT Price (#PCDATA)>
<!ATTLIST Price currency (USD | CAN | GBP) #REQUIRED> <!ELEMENT Discount (#PCDATA)>
<!ELEMENT ShipTo (GiftRecipient?, Street+, City, State, Zip)> <!ELEMENT GiftRecipient (#PCDATA)>
<!ELEMENT Street (#PCDATA)> <!ELEMENT City (#PCDATA)> <!ELEMENT State (#PCDATA)> <!ELEMENT Zip (#PCDATA)>
<!ELEMENT GiftMessage (#PCDATA)> <!ELEMENT Subtotal (#PCDATA)>
<!ATTLIST Subtotal currency (USD | CAN | GBP) #REQUIRED> <!ELEMENT Tax (#PCDATA)>
<!ATTLIST Tax currency (USD | CAN | GBP) #REQUIRED rate CDATA "0.0">
<!ELEMENT Shipping (#PCDATA)>
<!ATTLIST Shipping currency (USD|CAN|GBP) #REQUIRED method (USPS|UPS|Overnight) "UPS"> <!ELEMENT Total (#PCDATA)>
<!ATTLIST Total currency (USD | CAN | GBP) #REQUIRED>
XML: Ejemplo Completo
Junio 2005 31
<?xml version="1.0"
encoding="ISO-8859-1"?>
<!DOCTYPE Joke SYSTEM "Joke.dtd"> <Joke author="Cooper"
firstTold="2002-01-01T12:10:10"
xmlns="Different Namespace">
<Setup>A duck walks into a bar.
The bartender says, "We don't serve ducks here"
</Setup>
<Punchline>The duck says,
"That's OK, I don't like duck, anyway. It tastes like chicken. How about a beer?"
</Punchline> </Joke>
<!ELEMENT Joke (Setup, Punchline) > <!ATTLIST Joke
author CDATA #REQUIRED firstTold CDATA #IMPLIED >
<!ELEMENT Setup (#PCDATA) > <!ELEMENT Punchline (#PCDATA) >
Esquema XML
Alternativa a DTD
● Más complejo (es un documento XML)
● Más completo (resuelve algunas limitaciones del DTD)
● Más flexible
Soporta espacios de nombres
Valida no sólo es base a estructura, sino tambien al
contenido de los elementos
Ej.- asociar tipos y rangos a los valores
Esquema XML.-
Ejemplo (incompleto)
Junio 2005 33
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Order">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customer"> <xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="id" type="xsd:ID"/> </xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Product" maxOccurs="unbounded">
<xsd:complexType> <xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="SKU" type="xsd:positiveInteger"/> <xsd:element name="Quantity" type="xsd:positiveInteger"/> <xsd:element name="Price" type="MoneyType"/>
<xsd:element name="Discount" type="xsd:decimal" minOccurs="0"/>
...
XML: Herramientas
Edición del fichero XML
● Al tratarse de texto puro, puede utilizarse
cualquier editor
● Algunos editores de propósito generar pueden
colorear la sintaxis
● Los editores específicos permiten:
Resaltar la sintaxis utilizando colores
Comprobar si está bien construido (comprobar sintaxis)
Validar el documento (comprobar gramática)
XML: Herramientas...
Creación del fichero DTD
● Al tratarse de texto puro, puede utilizarse
cualquier editor
● Pero los editores específicos pueden facilitar la
tarea
● Normalmente los editores especificos para XML
también permiten editar DTDs
XML: Herramientas...
Transformación
● Generación de código
XSLT
● Identificación de las partes de un documento
XPath
XML: Herramientas...
Visualización
● CSS
Ya se utiliza para HTML
Con los navegadores actuales, soporte parcial
● XSL-FO
Específico para XML
Permite:
Reordenar elementos
Eliminar elemetos y añadir contenido no presente en el
documento original
Combinar documentos
XML: Herramientas...
Inclusión de enlaces
● Xlink
Inclusión de imágenes
● Xpoint
Cuando exista soporte completo para enlaces
e imágenes
● Podremos ver xml directamente en el navegador
XML.-
Interfaz de Programación
El parser valida el documento
● Mediante un API, permite a la aplicación
acceder a las distintas partes del documento
SAX
DOM
Generación por programa
● Directa, SAX, DOM, Otros
Parsing y acceso a la información
● SAX, DOM, Otros
Transformación
● XSLT
Parsing.-
SAX
Está dirigido por eventos
● Asociar uno o más métodos a cada elem reconocido
● Crear una instancia de XMLReader
● Crear una extensión de DefaultHandler, que
implementa los interfaces
ContentHanler.- startElement, endElement, characters
ErrorHandler.- warning, error, errorFatal
● Invocar el parser
● Acceder a la instancia construida
● Volcar el valor mediante toString
Complejo
Mantener pilas de elementos y texto (por la anidación), etc.
Parsing.-
DOM
API organizado en árbol
Proporciona a la aplicación un grafo de
objetos (modelo del documento)
● La aplicación recorre el grafo, extrayendo los
datos
Uso simple
Siempre construye el árbol completo
● Ineficiente si sólo queremos acceso a una parte
Parsing.-
Otros
Hay otras popuestas
● Traducir el documento a una estructura de
datos interna accesible directamente
Ej Satine bajo Python
Resumen tecnologías asociadas
XHTML (extensible HTML)
Versión más estricta de HTML (sintaxis XML)
XSL (Extensible Style Sheet Language)
● XSLT.- transformación en otros documentos XML
● XSL-FO.- para formateado (visualización)
● XPath.- para 'navegar' por documentos XML
Hiperenlaces
● XLink.- creación hiperenlaces
● XPointer.- marcar destinos en el documento
Resumen tecnologías asociadas...
Validación
● DTD.- para definir la gramática
● XSD.- esquema XML (alternativa a DTD)
XForms.- definición de formularios
XQuery.- interrogación de datos XML
Servicios Web
● SOAP ● WSDL ● RDF ● RSS Junio 2005 44Resumen tecnologías asociadas...
Dialectos
● WAP.- para acceso a internet desde
dispositivos móviles
● SMIL.- para descripción de presentaciones
visuales (integración multimedia)
● SVG.- gráficos 2D
● CML.- chemical markup language