• No se han encontrado resultados

XML. (Extensible Markup Language) Una herramienta multiplataforma para el almacenamiento e intercambio de información.

N/A
N/A
Protected

Academic year: 2021

Share "XML. (Extensible Markup Language) Una herramienta multiplataforma para el almacenamiento e intercambio de información."

Copied!
45
0
0

Texto completo

(1)

XML

(Extensible Markup Language)

Una herramienta multiplataforma para el

almacenamiento e intercambio de información

(2)

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)

(3)

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.

(4)

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.

(5)

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).

(6)

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.

(7)

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

(8)

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.

(9)

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

(10)

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>

(11)

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-)

(12)

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)

(13)

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)

(14)

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”/>

(15)

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

(16)

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

(17)

XML: Documentos...

Estructura general

● Todos los elementos deben anidarse

correctamente

● Finalmente se obtiene una estructura en árbol

(18)

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

(19)

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)

(20)

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

(21)

XML: Documento bien construido

Bien construido (well formed) = conforme a

las reglas XML

● En otras palabras, se adhiere a las reglas

sintácticas XML

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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*)>

(28)

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>

(29)

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 '|'

(30)

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>

(31)

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) >

(32)

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

(33)

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"/>

...

(34)

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)

(35)

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

(36)

XML: Herramientas...

Transformación

● Generación de código

 XSLT

● Identificación de las partes de un documento

 XPath

(37)

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

(38)

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

(39)

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

(40)

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.

(41)

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

(42)

Parsing.-

Otros

Hay otras popuestas

● Traducir el documento a una estructura de

datos interna accesible directamente

 Ej Satine bajo Python

(43)

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

(44)

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 44

(45)

Resumen 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

Referencias

Documento similar