Escolar Documentos
Profissional Documentos
Cultura Documentos
22/08/2012
Contenido
XML
XML Parsing
DTD
Schema
SAX API
DOM API
XSLT
Qu es XML?
HTML y XML
Ventajas XML
Usos XML
Sitios web
Instrucciones de
procesamiento
<?xml version="1.0"?>
<saludo>
Hola, mundo!
</saludo>
10
Comentarios en XML
11
<saludo tipo=coloquial>Hola</saludo>
12
<CUSTOMER LAST_NAME="Smith
FIRST_NAME="Sam" DATE="October 15, 2001"
PURCHASE="Tomatoes" PRICE=1.25" NUMBER="8" />
13
Referencias a entidades
15
Cdigos de escape
16
Secciones CDATA
<![CDATA[<saludo>Hola, mundo!</saludo>]]>
17
Ejemplo
ID_PROVEE
DOR
NOMBRE
CALLE
CIUDAD
ESTADO
CODPOSTAL
101
Nescafe
Nazar 25
Toluca
Mxico
06470
49
Illy
Moreno 32
Mxico
DF
01000
150
ACME
25 E Marc
Urbana
IL
61801
22/08/2012
18
Practica
NOM_CAFE
ID_PROVEEDOR
PRECIO
VENTAS
TOTAL
COLOMBIANO
101
85.70
FRANCES
49
98.75
ESPRESSO
150
120.40
DECAF
101
100.00
VERACRUZ
49
120.00
22/08/2012
19
Gramticas en XML
20
21
22
Ejemplo
ID_PROVEE
DOR
NOMBRE
CALLE
CIUDAD
ESTADO
CODPOSTAL
101
Nescafe
Nazar 25
Toluca
Mxico
06470
49
Illy
Moreno 32
Mxico
DF
01000
150
ACME
25 E Marc
Urbana
IL
61801
22/08/2012
23
Practica
NOM_CAFE
ID_PROVEEDOR
PRECIO
VENTAS
TOTAL
COLOMBIANO
101
85.70
FRANCES
49
98.75
ESPRESSO
150
120.40
DECAF
101
100.00
VERACRUZ
49
120.00
22/08/2012
24
XML Schemas
Los
Ejemplo Schema
DTD :
XML Schema:
<xsd:element name="text">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:element name="emph"/>
<xsd:element ="name"/>
</xsd:sequence>
<xsd:attribute name="timestamp" type="xsd:date use="required"/>
</xsd:complexType>
</xsd:element>
26
Documento XML:
<?xml version="1.0"?>
<text timestamp="08:45:00.000">
The deadline of <name>ISO3
assigment</name> is <emph>November
21th 2003</emph>.
</text>
27
Ejemplo
ID_PROVEE
DOR
NOMBRE
CALLE
CIUDAD
ESTADO
CODPOSTAL
101
Nescafe
Nazar 25
Toluca
Mxico
06470
49
Illy
Moreno 32
Mxico
DF
01000
150
ACME
25 E Marc
Urbana
IL
61801
22/08/2012
28
Practica
NOM_CAFE
ID_PROVEEDOR
PRECIO
VENTAS
TOTAL
COLOMBIANO
101
85.70
FRANCES
49
98.75
ESPRESSO
150
120.40
DECAF
101
100.00
VERACRUZ
49
120.00
22/08/2012
29
30
31
32
Proceso de validacin
documento XML
Documento
XML
(opcional)
Well
Formed?
no
si
DTD?
no
Procesamiento de
la informacin
si
si
DTD
Error: Documento
XML mal formado
Valid?
no
Error: Documento
XML no vlido
33
XML Namespaces
34
35
36
Herramientas de XML
Editores
XML parsers
XML Validators
37
38
XML Parsing
Documento
XML
Parser XML
Aplicacin
XML
XML DTD
XML Schema
39
SAX
Define una interface dirigida por eventos (eventdriven) para el procesamiento de un documento XML
Definida por David Megginson y lista correo XML-DEV
http://www.megginson.com/SAX
DOM
40
41
Caractersticas de SAX
SAX Objects
<?xml version=1.0?>
Parser
startDocument
<addressbook>
Parser
startElement
<name>Diego Ipia</name>
Parser
<email>dipina@deusto.es</email>
Parser
</person>
Parser
endElement
<person>
Parser
startElement
<name>Asier Perallos</name>
Parser
<email>perallos@deusto.es</email>
Parser
Parser
endElement
Parser
<person>
</person>
</addressbook>
43
44
Java JAXP
factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
45
46
EntityResolver y DTDHandler
EntityResolver
InputSource resolveEntity(String
publicId, String systemId)
DTDHandler
47
ErrorHandler
void error(SAXParseException exception)
void fatalError(SAXParseException
exception)
48
ContentHandler
void characters(char[] ch, int start, int length)
void endDocument()
void startDocument()
49
DefaultHandler
EntityResolver
DTDHanler
ErrorHandler
ContentHandler
22/08/2012
51
22/08/2012
52
DOM en JAXP
Document
Builder
(Content
Handler)
XML
SDPL 2003
XML
Reader
Error
Handler
(SAX
Parser)
DTD
Handler
Entity
Resolver
DOM Document
54
Caractersticas DOM
55
56
57
59
JAXP DOM
import javax.xml.parsers.*;
import org.w3c.dom.*;
DocumentBuilderFactory fact =
DocumentBuilderFactory.newInstance();
// Crear nueva instancia de DOMBuilder
DocumentBuilder parser = fact.newDocumentBuilder();
60
Clase DocumentBuilder
61
Element getDocumentElement()
Devuelve el elemento raz el documento
Node
NamedNodeMap getAttributes()
Devuelve lista de atributos en un nodo
Node getFirstChild()
Devuelve el primer hijo de este nodo
Node getFirstChild()
Devuelve el ltimo hijo de este nodo
NodeList getChildNodes()
Devuelve todos los hijos de este nodo
Node getParentNode()
Devuelve nodo padre del nodo actual
short getNodeType()
Devuelve tipo de nodo actual
String getNodeName()
Devuelve nombre nodo
String getNodeValue()
Devuelve contenido nodo
63
NodeList
int getLength()
Devuelve nmero de nodos en lista
Node item(int index)
Devuelve el nodo identificado por index en una coleccin
NamedNodeMap
int getLength()
Devuelve nmero de nodos en lista
Node getNamedItem(String name)
Recupera un nodo dado su nombre
Node item(int index)
Devuelve el nodo identificado por index en una coleccin
64
Ejemplo DOM I
<?xml version="1.0" encoding=UTF-8"?>
<Peliculas>
<Pelicula codigo='1' titulo='Lo que el viento se
llev'
director='Victor Fleming'
actores='Clark Gable, Vivien Leigh,
Leslie Howard'/>
<Pelicula codigo='2' titulo='Los Otros'
director='Alejandro Amenabar'
actores='Nicole Kidman'/>
<Pelicula codigo="5" titulo="Malena"
director="Giuseppe Tornatore"
actores="Monica Bellucci, Giuseppe
Sulfaro"/>
</Peliculas>
65
Ejemplo DOM II
Root
Pelculas
...
Pelcula
codigo=1
diirector=Victor Fleming
titulo=Lo que el
viento se llev
Pelcula
codigo=5
diirector=Giuseppe
Tornatore
titulo=Malena
actores=Monica Bellucci,
Giuseppe Sulfaro
66
Ejemplo DOM IV
public static void tratarNodo(Node nodo) {
switch (nodo.getNodeType()) {
case Node.DOCUMENT_NODE:
break;
case Node.ELEMENT_NODE:
break;
case Node.ATTRIBUTE_NODE:
break;
case Node.TEXT_NODE:
break;
case Node.CDATA_SECTION_NODE:
break;
case Node.PROCESSING_INSTRUCTION_NODE:
break;
case Node.ENTITY_REFERENCE_NODE:
break;
case Node.DOCUMENT_TYPE_NODE:
break;
}
}
68
Ejemplo DOM V
case Node.DOCUMENT_NODE:
System.out.println("<xml version=\"1.0\">");
Document doc = (Document)nodo;
tratarNodo(doc.getDocumentElement());
break;
69
Ejemplo DOM VI
case Node.ELEMENT_NODE:
String nombre = nodo.getNodeName();
System.out.print("<" + nombre);
NamedNodeMap ats = nodo.getAttributes();
for (int i=0; i<ats.getLength(); i++) {
tratarNodo(ats.item(i));
}
System.out.println(">");
NodeList hijos = nodo.getChildNodes();
for (int i=0; i<hijos.getLength(); i++) {
tratarNodo(hijos.item(i));
}
break;
case Node.ATTRIBUTE_NODE:
System.out.print(" " + nodo.getNodeName() +
"=\"" + nodo.getNodeValue() +"\""); break;
70
71
Prctica DOM
22/08/2012
72
73
Dos partes:
75
Ventajas y desventajas de
XSLT
Ventajas:
Desventajas:
76
77
Documento XML
(students.xml)
<?xml version="1.0" encoding="iso-8859-1"?>
<course>
<name id=is201>POO Avanzada</name>
<teacher id=rsr">Roberto Solis Robles</teacher>
<student id=jm">
<name>Jorge Medina</name>
<hw1>70</hw1>
<hw2>75</hw2>
<project>80</project>
<final>85</final>
</student>
<student id=eg">
<name>Edgar Gonzalez</name>
<hw1>80</hw1>
<hw2>90</hw2>
<project>90</project>
<final>70</final>
</student>
</course>
78
79
Resultado de transformacin
(students.html)
<HTML>
<HEAD> <TITLE>Nombre de estudiantes</TITLE>
</HEAD>
<BODY>
<P>Jorge Medina</P>
<P>Edgar Gonzalez</P>
</BODY>
</HTML>
80
81
Servidor
XML
Internet
XSLT
JSP
Clases
Java
Base de
Datos
82
Ejemplos de Procesadores
XSLT existentes
83
84
Ejemplo XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/X
SL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
85
Elementos XSLT
<xsl:template match=course">
<xsl:value-of select=student"/>
</xsl:template>
O usar xsl:for-each
<xsl:template match=course">
<xsl:for-each select=student">
<xsl:value-of select=name"/>
</xsl:for-each>
</xsl:template>
86
87
Ejemplo (students2.xsl)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<HEAD> <TITLE>Nombre de estudiantes</TITLE> </HEAD>
<BODY>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="course">
<xsl:apply-templates select="student"/>
</xsl:template>
<xsl:template match="student">
<xsl:for-each select="name"><P><xsl:value-of
select="."/></P></xsl:for-each>
</xsl:template>
</xsl:stylesheet>
88
89
Seleccionar comentarios:
<xsl:template match="comment()"> ...
</xsl:template>
91
92
Resultado transformacin
Salida :
93
Java JAXP
94
.newTransformer()
.transform(.,.)
XSLT
SDPL 2003
95
97
Practica XSLT
Nombre
HW1
HW2
Proy
Final
Prom
Jorge
Medina
70
75
80
85
77.5
Edgar
Gonzalez
80
90
90
70
82.5
22/08/2012
98