Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Metadatos
Definicin:
Metadatos
Se pueden considerar como etiquetas asignadas a datos,
de la forma nombre = valor
Autor = Miguel de Cervantes
Ttulo = Novelas ejemplares
Localizacin = 1 D 3
Lenguajes de marcas
Los documentos electrnicos tienen 3 partes:
Contenido: los datos o palabras en s mismos
Estructura: la organizacin del contenido
Presentacin: el aspecto con el que se presenta el contenido al lector
<H1>Factura</H1>
<P>De: Pepe Martinez</P>
<P>A: Juan Fernandez</P>
<P>Fecha: 1 Dic 2000</P>
<P>Cantidad: 1000 Pts</P>
<P>Iva: 17%</P>
<P>Total: 1170 Pts</P>
<Factura>
<De>Pepe Martinez</De>
<A>Juan Fernandez</A>
<Fecha ao=2000 mes=12 dia =1/>
<Cantidad moneda=Pts>1000</Cantidad>
<Iva>17</Iva>
<Total>1170</Total>
</Factura>
Origen XML
Hacia finales de los sesenta, un grupo de investigadores
comenz a interesarse por darle otros usos a los
documentos electrnicos. En particular, IBM pidi a Charles
Goldfarb que construyese un sistema para almacenar,
buscar, gestionar y publicar documentos legales.
El resultado de su trabajo fue el lenguaje SGML (Standard
Generalized Markup Language), actualmente el estndar de
la ISO 8879. XML es un subconjunto de SGML pensado
para ser llevado al web.
Servicios Telemticos Avanzados. Tema 3-2
Documentos estructurados
Goldfarb y otros investigadores de IBM reconocieron tres hechos
importantes:!
Para intercambiar informacin, los programas tienen que soportar un
lenguaje comn. Tiene sentido que ese lenguaje comn sea algn tipo de
lenguaje de marcas.
La estructura de un documento se puede ver como una jerarqua de
elementos. Por ejemplo, una carta puede tener, en un primer nivel, un
elemento "encabezado" y otro "cuerpo". El encabezado puede contener, a su
vez, elementos "destinatario", "asunto", etc. Las marcas que delimitan estos
elementos se denominan marcas estructurales generalizadas (structural
generalized markup).
Los documentos tienen que seguir algn tipo de reglas, es decir, el lenguaje
de marcas debera ser especificado de algn modo formal que permitiese
garantizar que el documento cumple cierta estructura.
Servicios Telemticos Avanzados. Tema 3-2
Separacin contenido/presentacin
Una vez que se tiene definido un tipo de documento, es necesario
definir cmo se va a imprimir o a visualizar en una pantalla. Esta
descripcin se recoge en una hoja de estilo. !
La idea central de la solucin propuesta por Goldfarb es que
mantener separados los tres aspectos de un documento, contenido,
estructura, y presentacin, aporta grandes ventajas:
Permite al navegador hacer el trabajo de presentacin de los datos en la
pantalla
Facilita al navegador la manipulacin de los datos, y la realizacin de
clculos a partir de ellos
Se pueden realizar bsquedas "inteligentes" de informacin.
Fomenta la creacin de vocabularios (marcas) estndar en diferentes
dominios, como los bancos, las telecomunicaciones, el transporte, etc.
Servicios Telemticos Avanzados. Tema 3-2
XML bsico
La siguiente figura muestra los elementos bsicos de un
sistema basado en XML:
documento
XML
Parser XML
Aplicacin XML
Definicin de
Tipo de
Documento
Detalles sintcticos
Los documentos XML estn compuestos por caracteres del conjunto
Unicode. Cualquier secuencia de caracteres se denomina string. La
sintaxis de XML describe la forma de combinar strings para crear
documentos XML bien formados.!
XML distingue maysculas y minsculas, y por tanto no es lo mismo
"ELEMENT" que "element".
Las marcas se parecen a las de HTML. Empiezan por '<' o por '&'.
Los blancos son el espacio (ASCII 32), el tabulador (ASCII 9), el retorno de
carro (ASCII 13) y el carcter de lnea nueva (ASCII 10).
Los literales aparecen rodeados de comillas simples o dobles.
Los nombres que se pueden utilizar para designar elementos XML deben
empezar por letra, '.' o '_', e ir seguidos de letras, dgitos, '-', '_', '.' y ':'.
Servicios Telemticos Avanzados. Tema 3-2
10
11
12
rbol sintctico
Parser XML: genera el rbol sintctico
memo
from
name: Eduardo...
email: edumart@...
to
name: Humberto...
email: humberto@...
body
paragraph: Humberto...
13
14
15
CDATA y comentarios
A veces puede resultar interesante indicarle al analizador XML que no
intente interpretar una porcin de documento. Esto se hace marcando
la seccin de la siguiente manera:!
<![CDATA[ contenido que no se interpretar ]]>!
De esta forma, es posible incluir contenido que tiene caracteres
empleados por XML para establecer el comienzo de las marcas:
!<![CDATA[
<HTML>
Esto es un ejemplo de HTML dentro de XML
<p>Los prrafos se indican con esta marca
</HTML> ]]>!
16
17
<?xml version="1.0"?>
<!DOCTYPE label[
<!ELEMENT label (name, street, city, state, country, code)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT code (#PCDATA)>
]>
<label>
<name>Rock N. Robyn</name>
<street>Jay Bird Street</street>
<city>Baltimore</city>
<state>MD</state>
<country>USA</country>
<code>43214</code>
</label>
Servicios Telemticos Avanzados. Tema 3-2
18
19
20
21
22
Expresiones regulares
Permiten definir una gramtica de forma recursiva
Las expresiones regulares ms sencillas son:
(#PCDATA) : caracteres
(elemento): el contenido es una y slo una aparicin de elemento
23
Atributos (1)
Otra forma de aadir informacin a un elemento es definiendo
atributos. La principal diferencia entre los atributos y el contenido de
un elemento no vaco es que el valor de los primeros no puede
contener sub-elementos. !
Los atributos se declaran para tipos de elementos especficos:!
<!ELEMENT PERSONA (#PCDATA)>
<!ATTLIST PERSONA EMAIL CDATA #REQUIRED>
24
Atributos (2)
Los atributos pueden tener valores por defecto:
!<!ATTLIST
25
Atributos (3)
!ID e IDREF: permite crear referencias cruzadas entre
elementos.
<!ELEMENT SECTION (TITULO, PARRAFO*)>
<!ATTLIST SECTION IDENTIFICADOR ID #IMPLIED>
<!ELEMENT REFERENCIA EMPTY>
<!ATTLIST REFERENCIA TARGET IDREF #REQUIRED>
...
<SECTION IDENTIFICADOR="Capitulo 1">
...
</SECTION>
...
Vea <REFERENCIA TARGET="Capitulo 1"/> para volver a
leer sobre
...
Servicios Telemticos Avanzados. Tema 3-2
26
Atributos (4)
ENTITY: tipo de los atributos cuyo valor es el nombre
de una entidad.!
<!ATTLIST REFERENCIA-LIBRO TARGET ENTITY
#REQUIRED>
...
<!ENTITY otro-libro SYSTEM
"http://www.amazon.com/....">
...
<REFERENCIA-LIBRO TARGET="otro-libro">
...
Servicios Telemticos Avanzados. Tema 3-2
27
Entidades (1)
Son abreviaturas que representan un valor (su contenido).
Pueden ser:
Internas: su valor est indicado en el mismo DTD en el que se declaran.
Externas: su valor est en documentos externos al DTD en el que se
declaran.
Generales: se emplean en DTDs y en documentos XML
Parmetro: slo se emplean en DTDs
28
Entidades (2)
Ejemplo de declaracin de entidad general interna:
<?xml version="1.0" ?>
<!DOCTYPE EJEMPLO SYSTEM "ejemplo.dtd" [
<!ENTITY xml "Extensible Markup Language">
]>
<EJEMPLO>
&xml;
</EJEMPLO>
29
Entidades (3)
Una referencia a una entidad es un string formado por el smbolo '&'
concatenado con el nombre de la entidad.
El procesador XML se encarga de sustituir la referencia por su
contenido, que es automticamente analizado por el procesador, que
asume que contiene texto XML.
Mediante entidades es posible dividir un documento en mltiples
ficheros, lo cual favorece la reutilizacin y el mantenimiento de
documentos de gran tamao.
Si queremos incluir en un documento una entidad que no es XML,
debemos emplear el string 'NDATA' seguido de un identificador que
indica el tipo de notacin de la entidad.
<!ENTITY imagen SYSTEM
"http://www.home.org/migato.gif" NDATA GIF>
Servicios Telemticos Avanzados. Tema 3-2
30
Entidades (4)
Las entidades parmetro slo pueden aparecer en DTDs. La forma
de distinguirlas de las entidades generales es mediante un smbolo
'%' en su declaracin, y una sintaxis diferente en su uso.
!
<!DOCTYPE EJEMPLO [
<!-- declaracin de una entidad parmetro -->
<!ENTITY % entidad-ejemplo "<!ELEMENT EJEMPLO
(#PCDATA)>">
<!-- uso de la entidad parmetro -->
%entidad-ejemplo;
]>
<EJEMPLO>
...
</EJEMPLO>
Servicios Telemticos Avanzados. Tema 3-2
31
Espacios de nombres
Definicin: un espacio de nombres XML es una coleccin de nombres, identificada con una
referencia URI, que se emplean en documentos XML como nombres de elementos y nombres de
atributos.
Definicin: dos referencias URI que identifican espacios de nombres se consideran idnticas si
son iguales carcter a carcter.
Los nombres de elementos y atributos aparecen cualificados:
prefijo:parte_local
El prefijo corresponde a una referencia URI, que identifica el espacio de nombres
32
33
34
Hojas de estilo
XML no predefine la apariencia de los elementos. Se requiere una descripcin
aparte mediante una hoja de estilo.
XSL (eXtensible Stylesheet Language) es un lenguaje basado en XML,
estandarizado por el W3C, para expresar hojas de estilo aplicables a
documentos XML. Est formado por tres partes:
XSLT (eXtensible Stylesheet Transformations): lenguaje para especificar transformaciones
de documentos XML
XPath (XML Path Language): lenguaje para crear patrones para identificar elementos XML
sobre los que aplicar transformaciones
Formating Objects: vocabulario XML de objetos de formateo, que describen de manera
independiente el estilo a aplicar
35
Uso de XSL
El lenguaje XSL se
puede usar para:
Representar documentos
XML en diferentes
formatos
Extraer parte del
contenido de un
documento XML
hoja de estilo
XSL
Procesador
XSL
documento
RTF
documento
XML
Procesador
XSL
documento
PDF
Procesador
XSL
documento
HTML
Transformar
documentos XML entre
esquemas
Servicios Telemticos Avanzados. Tema 3-2
36
Se pueden usar:
En el visualizador: IExplorer 5 soporta el uso de hojas de estilo en documentos XML
En el servidor de contenidos: Cocoon es un sistema de publicacin de documentos basado
en XML y XSL.
37
Objetos de formato
Es un conjunto muy extenso de elementos y atributos que
representan reas del documento de salida.
Son especialmente tiles para convertir datos XML de tipo
texto en representaciones binarias (como PDF).
<fo:block font-size="24pt" text-align="centered"
space-before.optimum="24pt">
Java y XML
</fo:block>
38
Ejemplo
Extracto de la hoja de estilo:
<xsl:template match=LIBRO">
<P><xsl:apply-templates/></P>
</xsl:template>
<xsl:template match=AUTOR>
<B> <xsl:value-of/>:</B>
</xsl:template>
<xsl:template match=TITULO">
<xsl:value-of/>
</xsl:template>
<LIBRO>
<AUTOR>Carlos Urruti</AUTOR>
<TITULO>Cocina rpida</TITULO>
</LIBRO>
<LIBRO>
<AUTOR>Carmen Lpez</AUTOR>
<TITULO>101 Recetas</TITULO>
</LIBRO>
<LIBRO>
<AUTOR>Sue Meyer</AUTOR>
<TITULO>Cocina italiana</TITULO>
</LIBRO>
Resultado HTML:
39
40
41
java.io.IOException;
org.xml.sax.SAXException;
org.xml.sax.Attributes;
org.xml.sax.Locator;
org.xml.sax.XMLReader;
org.xml.sax.ContentHandler;
org.xml.sax.ErrorHandler;
org.apache.xerces.parsers.SAXParser;
void performDemo(String uri) {
System.out.println("Parsing XML File:" + uri );
ContentHandler contentHandler = new MyContentHandler();
ErrorHandler errorHandler = new MyErrorHandler();
try {
XMLReader parser = new SAXParser();
parser.setContentHandler(contentHandler);
parser.setErrorHandler(errorHandler);
parser.parse(uri);
} catch (IOException e) {
System.out.println("Error reading URI:" + e.getMessage());
} catch (SAXException e) {
System.out.println("Error in parsing: " + e.getMessage());
}}
42
43
44
45
46
47
48
DOM es una especificacin del W3C (a diferencia de SAX) independiente de la plataforma que
define una serie de interfaces basados en objetos que permiten crear programas y scripts que
accedan y actualicen al contenido, la estructura y la presentacin de los documentos.
Existen "bindings" de DOM a diversos lenguajes de programacin, entre ellos Java. En Java, los
programadores emplean libreras que implementan el paquete org.w3c.dom
El resultado del anlisis es un org.w3c.dom.Document, un objeto que representa un rbol de
anlisis del documento. Por tanto, hasta que no finaliza el anlisis no puede comenzar el
procesamiento:
public void performDemo(String uri) {
DOMParser parser = new DOMParser();
try {
parser.parse(uri);
org.w3c.dom.Document doc = parser.getDocument();
// Procesamiento
} catch (Exception e) { ... } }
Servicios Telemticos Avanzados. Tema 3-2
49
Document
DocumentFragment
DocumentType
ProcessingInstruction
Node
Comment
CharacterData
Text
Element
Attr
EntityReference
Entity
CDATASection
Node node;
...
switch (node.getNodeType()) {
case Node.DOCUMENT_NODE:
// Objeto Document
Document doc =(Document)node;
break;
case Node.ELEMENT_NODE:
// Objeto Element
Element e = (Element)node;
break;
case Node.TEXT_NODE:
// Objeto Text
Text t = (Text)node;
break;
... }
Notation
Servicios Telemticos Avanzados. Tema 3-2
50
51
52
53