O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Curso XML
Requisitos
- PC con Windows 98 / NT / 2000, 64 MB de RAM (dependen del
servidor a usar)
Para entorno Microsoft:
- Internet...
El estándar XML
DOM
El estándar XML
Qué es XML y qué elementos lo
componen
Acceso a los datos de un documento
XML
XSL
Cómo...
• XML (eXtended Markup Language) es un lenguaje que
proporciona un formato para describir datos estructurados
• Es un leng...
XML - Características
• Lenguaje de marcas extensible, es un metalenguaje
• Es “case sensitive”
• Representación estructur...
XML - Ejemplo de documento XML
<?xml version="1.0"?>
<!DOCTYPE discos SYSTEM "cds.dtd">
<discos>
<disco>
<artista tipo="in...
XML - Elementos XML
•Un documento XML está formado por tags o etiquetas
para la estructuración de los datos.
Por ejemplo: ...
XML - Elementos XML - Atributos
• Un elemento XML puede contener uno o más atributos
en su tag inicial
En este ejemplo, el...
XML - Documentos XML
Un documento XML es un conjunto de elementos XML anidados
(con estructura de árbol)
Reglas a tener en...
XML - Reglas de Construcción de
Nombres XML
En la construcción de nombres XML (atributos y elementos
XML) se deben tener e...
XML - Documento XML Bien Formado
Se dice que un documento XML está bien formado si
cumple las siguientes reglas:
• Todo ta...
XML - Ejercicio 1
<empleados>
<empleado nombre=“Juan” apellido=“Pérez” apellido=“Sánchez”>
<direccion calle=“López Peñalve...
XML - Ejercicio 2
Crear un documento XML válido que contenga los siguientes datos:
Vuelo Origen Destino Salida Llegada
IB7...
XML - Namespaces
•Un XML namespace es una colección de nombres que
pueden ser usados en elementos o atributos.
•Un namespa...
XML - Namespaces - Declaración
Se declara con el atributo xmlns en el elemento deseado.
Existen dos tipos de declaración:
...
XML - Prólogo del Documento XML
Antes del elemento raíz del documento XML pueden aparecer una
serie de elementos, formando...
XML - Prólogo del Documento XML
Declaración
• No es necesaria para que el documento sea bien formado
• Incluye los siguien...
XML - Prólogo del Documento XML
Instrucciones de procesamiento
• Asocia el documento XML con algún elemento externo, como ...
XML - DTDs (Document Type
Definition)
• Un DTD es un documento que especifica las restricciones que
debe cumplir un docume...
XML - DTDs - Declaración
Un DTD se puede declarar de 2 formas:
<!DOCTYPE discos SYSTEM “discos.dtd">
• En el propio docume...
XML - DTDs - Declaración de Elementos
• Un Elemento se declara especificando su nombre y los elementos
que lo componen:
<!...
XML - DTDs - Declaración de Elementos
• Si separamos con comas los elementos hijo, el orden de
aparición de éstos debe cum...
XML - DTDs - Declaración de Elementos
Modificadores
• Los siguientes modificadores especifican el número de elementos
que ...
XML - DTDs - Declaración de Elementos
Elementos Vacíos
• Si un elemento no contiene valor, se declara con la palabra EMPTY...
XML - DTDs - Ejercicio 1
Crear un DTD que valide la siguiente estructura:
<proveedores>
<proveedor>
<nombre>Pascal</nombre...
XML - DTDs - Declaración de Atributos
• Un elemento puede tener 1 o más atributos. Por ejemplo, para
declarar los atributo...
XML - DTDs - Declaración de Atributos
Tipos de atributos
• Enumeración. Limita los posibles valores del atributo.
<!ATTLIS...
XML - DTDs - Declaración de Entidades
• Una entidad es una asociación entre el nombre de la entidad y su
valor. La entidad...
XML - DTDs - Ejercicio 2
Crear un DTD que valide la siguiente estructura:
<almacen empresa="&empresa;">
<productos>
<produ...
XML - Schema
• Estándar para la validación de documentos XML
• Validación mediante un parser
• Mejora con respecto a los D...
XML - Schema - Declaración
• Todo schema debe ser declarado con el elemento Schema y en el
siguiente namespace:
<?xml vers...
• Elementos simples:
 content: textOnly, eltOnly, empty, mixed (por defecto)
• Elementos compuestos:
minOccurs: número m...
XML - Schema - Elementos
• Agrupación: especifica reglas de aparición para un subconjunto de
elementos
<ElementType name=“...
Declaración de atributos:
XML - Schema - Atributos
<AttributeType name=“origen“/>
<AttributeType name=“proveedor“ required...
XML - Schema - Referencia al schema
Un documento XML especifica que debe ajustarse a un schema de
la siguiente forma:
<pro...
XML - Schema - Ejercicio 1
Ejercicio 1: XML Schema
Ejercicio 1.1
• Crear un XML Schema en productosesq.xml para la validac...
XML - Schema - Tipos
Los tipos se especifican con el atributo dt:type
Tipos:
id valor único
idref referencia a un id
strin...
XML - Schema - Restricciones
El elemento datatype permite especificar el tipo de un elemento o
atributo y restringir sus v...
XML - Schema - Enumeración
En la enumeración sólo es válido uno de los valores especificados:
<AttributeType name=“calidad...
XML - Schema - Ejercicio 2
Ejercicio 2: XML Schema
Ejercicio 2.1
• Crear un XML Schema para la validación del archivo
clie...
XML - SAX
• SAX (Simple API for XML) es una API que permite a una
aplicación escribir código genérico que pueda funcionar ...
DOM
El estándar XML
Qué es XML y qué elementos lo
componen
Acceso a los datos de un documento
XML
XSL
Cómo dar formato a u...
DOM - Introducción
• El DOM (Document Object Model) es una API (Application
Programming Interface) creada para acceder a l...
DOM - Data Island
• Un Data Island es un documento XML insertado en una página
HTML. Esto se puede conseguir de 2 formas:
...
DOM - Acceso a elementos
• XMLDocument: obtiene el documento XML
• documentElement: obtiene el elemento raiz del documento...
• firstChild: devuelve el primer elemento hijo de otro elemento
• lastChild: devuelve el último elemento hijo de otro elem...
DOM - Acceso a atributos
• getAttribute(nombre): obtiene el valor del atributo con el nombre
especificado
devuelve “81422”...
DOM - Ejercicio 1
Ejercicio 1: Acceso a XML
Ejercicio 1.1
• Insertar el contenido de clientes.xml en un Data Island en el
...
DOM - Modificación de elementos
Creación de un elemento
• createElement(nombre): devuelve un elemento con el nombre
especi...
DOM - Modificación de elementos
Eliminación de un elemento
• removeChild(objeto): elimina el objeto especificado
La siguie...
DOM - Modificación de atributos
Creación o cambio de valor de un atributo
• setAttribute(nombre,valor): si el atributo esp...
DOM - Ejercicio 2
Ejercicio 2: Modificación de XML
Ejercicio 2.1
• Referenciar al archivo clientes.xml desde un Data Islan...
XSL
DOM
El estándar XML
Qué es XML y qué elementos lo
componen
Acceso a los datos de un documento
XML
XSL
Cómo dar formato...
XSL - Introducción
• XSL (eXtensible Stylesheet Language) es un estándar creado por el
W3C para el tratamiento visual de d...
XSL - Modo de funcionamiento
• XSLT usa una serie de tags que están definidos dentro de un
namespace. El namespace definid...
Para aplicar el documento XSL al XML, el procesador XSLT busca un
template que se aplique al elemento root, y lo ejecuta.
...
XSL - Ejecución en IE
• Internet Explorer 5 contiene un Procesador XSLT (MSXML).
• Para aplicar una plantilla XSLT a un do...
XSL - XPath
• XPath es un lenguaje para construir expresiones que referencien
a una parte de un documento XML
<clientes>
<...
XSL - XPath - Símbolos especiales
Símbolos especiales
Aparte de la barra / , hay otros símbolos con los siguientes signifi...
XSL - XPath - Predicados
Predicados
Un predicado es una condición que filtra los elementos devueltos
por una expresión.
/c...
XSL - XPath - Ejercicio 1
<paises>
<pais idPais=“11”>
<nombre>Italia</nombre>
<ciudades>
<ciudad idCiudad=“320”>
<nombre>R...
XSL - XHTML
XHTML (eXtended HyperText Markup Language)
• Implementación de HTML compatible con XML
• Validación:
Reglas de...
Reglas de construcción:
• Los atributos deben ir entre comillas
• Los atributos deben tener valor
• Para los scripts se de...
XSL - XHTML - Ejercicio
Ejercicio: Convertir a XHTML
<script language="JavaScript" src="myscript.js"></script>
<html>
<bod...
XSL - Elementos XSLT
<xsl:template match=“cliente">
<xsl:value-of select="@idCliente"/>
</xsl:template>
• xsl:value-of
dev...
XSL - Elementos XSLT
<xsl:if test=“not(@idCliente)">
<b>Falta el dni del cliente</b>
</xsl:if>
• xsl:if
si la evaluación d...
XSL - Elementos XSLT
<xsl:for-each select=“/clientes/cliente">
<i><xsl:value-of select=“@idCliente”/></i><br>
</xsl:for-ea...
XSL - Elementos XSLT
<xsl:comment>
comentario
</xsl:comment>
• xsl:comment
inserta un comentario en el árbol resultante.
<...
XSL - Funciones
Estas son las funciones más usadas definidas por XPath.
• position(). Devuelve la posición del nodo actual...
XSL - Ejercicios
Preparación de la máquina
• Instalación del parser MSXML 3 o superior de Microsoft
• Activación del parse...
XSL - Ejercicio 1
Ejercicio 1: Aplicar plantilla XSL a XML
Ejercicio 1.1
• Modificar el archivo productos.xml para aplicar...
XSL - Ejercicio 2
Ejercicio 2: Elementos XSLT
Ejercicio 2.1
• Modificar el archivo productos.xsl para que si el código del...
Aplicaciones Prácticas
DOM
El estándar XML
Qué es XML y qué elementos lo
componen
Acceso a los datos de un documento
XML
X...
Aplicaciones Prácticas - Introducción
XML se usa principalmente en los siguientes entornos:
• Uso de XML conjuntamente con...
Aplicaciones Prácticas - Java
• JAXP (Java API for XML Processing) es una librería de
clases de Sun que contiene:
• Un par...
Aplicaciones Prácticas - Java
Uso de las clases de JAXP
Acceso a un documento XML desde un fichero
// Clases de JAVAXP
imp...
// Se declara el documento donde se almacenará el XML
static Document document;
public static void main(String argv[])
{
/...
Aplicaciones Prácticas - Java - Objetos
En JAXP su usan los siguientes objetos. Algunos métodos
cambian ligeramente, pero ...
Aplicaciones Prácticas - Java - Objetos
Node
• appendChild(Node)
• NodeList getChildNodes()
• Node getFirstChild()
• Node ...
Aplicaciones Prácticas - Java - Objetos
El método getChildNodes() devuelve una sucesión de elementos
Text y Element interc...
Aplicaciones Prácticas - Java - Ejercicios
Preparación de la máquina
• Instalación de JDK (Java Development Kit) 1.1.8 o s...
Aplicaciones Prácticas - Java - Ejercicio 1
Ejercicio 1: Acceso a XML
Ejercicio 1.1
• Compilar la clase ejemplo.java
 jav...
Aplicaciones Prácticas - Java
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
impor...
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
File stylesheet = new File(“archivo.xsl”);
File dat...
Aplicaciones Prácticas - Java - Ejercicio 2
Ejercicio 2: Aplicar una plantilla XSL
Ejercicio 2.1
• Crear la clase java con...
Aplicaciones Prácticas - Java
Almacenar un documento XML en un archivo
• Usando el Transformer sin aplicarle ningún estilo...
Aplicaciones Prácticas - Java - Ejercicio 3
Ejercicio 3: Modificación de un archivo XML
Ejercicio 3.1
• Crear la clase mod...
Aplicaciones Prácticas - Java
Otros parsers
• JDOM (www.jdom.org)
• XT (http://www.jclark.com/xml/xt.html). Implementación...
Aplicaciones Prácticas - Java - JSP
Acceso a un documento XML desde JSP
• Se importan las mismas clases que en Java
• Se a...
Aplicaciones Prácticas - Java - JSP
Aplicación de XSL desde JSP
• Se importan las mismas clases que en Java
• Se aplica la...
Aplicaciones Prácticas - Java - Ejercicio 4
Ejercicio 4: Uso de XML con JSP
Ejercicio 4.1
• Modificar el archivo pagina.js...
Aplicaciones Prácticas - Microsoft
• Para usar XML en aplicaciones Microsoft, se usa el objeto COM
Microsoft XML (MSXML).
...
Acceder a un documento XML
• Si estamos en Visual Basic, añadir el objeto Microsoft XML a las
referencias del proyecto.
• ...
• Cargar el documento XML
 desde un archivo:
 Desde una cadena de texto:
• Usar el documento (obtener el elemento raíz):...
Aplicaciones Prácticas - Microsoft -
Ejercicio 1
Ejercicio 1: Acceso a XML desde ASP
Ejercicio 1.1
• Modificar el archivo ...
Aplicaciones Prácticas - Microsoft
Aplicar una plantilla XSLT a un documento XML
<%
Dim domXml As MSXML.DOMDocument
Dim do...
Aplicaciones Prácticas - Microsoft -
Ejercicio 2
Ejercicio 2: Aplicación de una plantilla XSL a un
documento XML desde ASP...
Recursos
• W3C (Wolrd Wide Web Consorcium)
http://www.w3.org
• Sun
http://java.sun.com/xml
• Microsoft
http://msdn.microso...
Próximos SlideShares
Carregando em…5
×

Xml

553 visualizações

Publicada em

xml

Publicada em: Internet
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Xml

  1. 1. Curso XML
  2. 2. Requisitos - PC con Windows 98 / NT / 2000, 64 MB de RAM (dependen del servidor a usar) Para entorno Microsoft: - Internet Explorer - Parser MSXML 3 o superior. - Servidor IIS o Personal Web Server de Microsoft. Para entorno Java: - JDK 1.1.8 o superior - JAXP (Java API for XML Processing) - Servidor Web (por ej. iPlanet Web Server FastTrack Edition)
  3. 3. El estándar XML DOM El estándar XML Qué es XML y qué elementos lo componen Acceso a los datos de un documento XML XSL Cómo dar formato a un documento XML con XSL Aplicaciones Prácticas Uso práctico de XML en entornos Java y Microsoft
  4. 4. • XML (eXtended Markup Language) es un lenguaje que proporciona un formato para describir datos estructurados • Es un lenguaje de marcas • Es un subconjunto de SGML (Standard Generalized Markup Language) • Definido por el W3C en 1998 XML - Introducción
  5. 5. XML - Características • Lenguaje de marcas extensible, es un metalenguaje • Es “case sensitive” • Representación estructural de los datos en forma de árbol • Define los datos en una aplicación, no su presentación • Permite interoperatividad entre máquinas distintas (un estándar para el intercambio de datos)
  6. 6. XML - Ejemplo de documento XML <?xml version="1.0"?> <!DOCTYPE discos SYSTEM "cds.dtd"> <discos> <disco> <artista tipo="individual">Frank Sinatra</artista> <titulo numerodepistas="2">In The Wee Small Hours</titulo> <pistas> <pista>In The Wee Small Hours</pista> <pista>Mood Indigo</pista> </pistas> <precio>$12.99</precio> </disco> <disco> <artista tipo="band">The Offspring</artista> <titulo numerodepistas="2">Americana</titulo> <pistas> <pista>Welcome</pista> <pista>Have You Ever</pista> </pistas> <precio>$12.99</precio> </disco> </discos>
  7. 7. XML - Elementos XML •Un documento XML está formado por tags o etiquetas para la estructuración de los datos. Por ejemplo: <disco> •Un elemento XML está formado por una etiqueta de inicio y otra etiqueta final. Entre ambas está el valor del dato al que se refiere el tag. En este ejemplo, el elemento pista tiene como valor “Welcome”: <pista>Welcome</pista>
  8. 8. XML - Elementos XML - Atributos • Un elemento XML puede contener uno o más atributos en su tag inicial En este ejemplo, el atributo sería “tipo”, y su valor “individual”: • Un elemento XML puede no contener un valor, solamente atributos. En este caso se puede escribir con un solo tag terminado en /. Esta expresión equivale a <artista tipo="individual">Frank Sinatra</artista> <precio valor=“$12.99”></precio> <precio valor=“$12.99”/>
  9. 9. XML - Documentos XML Un documento XML es un conjunto de elementos XML anidados (con estructura de árbol) Reglas a tener en cuenta: • Todos los elementos deben cerrarse • Los elementos deben estar limpiamente anidados • Un documento XML debe tener un único elemento raíz
  10. 10. XML - Reglas de Construcción de Nombres XML En la construcción de nombres XML (atributos y elementos XML) se deben tener en cuenta las siguientes reglas: • Un nombre XML puede contener los siguientes caracteres: Letras (A-Z, a-z), dígitos (0-9), guión bajo (_), guión (-) y punto (.) • Debe empezar con una letra o guión bajo • Puede usar dos puntos (:) sólo en namespaces • No puede contener espacios en blanco
  11. 11. XML - Documento XML Bien Formado Se dice que un documento XML está bien formado si cumple las siguientes reglas: • Todo tag debe tener su correspondiente tag final. • Los elementos deben quedar debidamente anidados • Debe haber exactamente un elemento raíz • Los valores de los atributos deben estar entre comillas • Un mismo elemento no debe tener más de un atributo con el mismo nombre • Los comentarios no deben colocarse dentro de los tags • Los caracteres & y < deben ser precedidos por un si forman parte de los datos de un elemento o atributo. Validar un documento XML Con un Parser XML
  12. 12. XML - Ejercicio 1 <empleados> <empleado nombre=“Juan” apellido=“Pérez” apellido=“Sánchez”> <direccion calle=“López Peñalver”> </empleado> <Empleado nombre=“Alberto”> <direccion calle=“López Peñalver”> </Empleado> <empleado> <localidad>Málaga</localidad> </Empleado> </empleados> <oficinas> <oficina 1tlf=“951000000” 2tlf=“951000001”> <ciudad>Madrid</ciudad> </oficina> <oficina> <ciudad telefono=“12312312”>Barcelona</ciudad> </oficina> </oficinas> ¿Es el siguiente documento XML un documento bien formado?
  13. 13. XML - Ejercicio 2 Crear un documento XML válido que contenga los siguientes datos: Vuelo Origen Destino Salida Llegada IB777 Málaga Madrid 8:00 8:50 IB888 Madrid Barcelona 9:00 10:10 IB999 Madrid Málaga 12:00 12:50 Código Avión Vuelos 1234 IB777,IB999 1122 IB888
  14. 14. XML - Namespaces •Un XML namespace es una colección de nombres que pueden ser usados en elementos o atributos. •Un namespace distingue nombres de forma única en la Web, para evitar conflictos. •Un namespace puede ser identificado por una: URI (Universal Resource Identifier) URL (Uniform Resource Locator) URN (Uniform Resource Number)
  15. 15. XML - Namespaces - Declaración Se declara con el atributo xmlns en el elemento deseado. Existen dos tipos de declaración: •Declaración por defecto. No hace falta usar prefijo, todos los nombres pertenecen al namespace declarado: •Declaración explícita. Cada nombre debe usar un prefijo especificando el namespace al que pertenece: <BOOK xmlns="urn:BookLovers.org:BookInfo"> <TITLE>A Suitable Boy</TITLE> <PRICE currency="US Dollar">22.95</PRICE> </BOOK> <BOOKS> <bk:BOOK xmlns:bk="urn:BookLovers.org:BookInfo" xmlns:money="urn:Finance:Money"> <bk:TITLE>A Suitable Boy</bk:TITLE> <bk:PRICE money:currency="US Dollar">22.95</bk:PRICE> </bk:BOOK> </BOOKS>
  16. 16. XML - Prólogo del Documento XML Antes del elemento raíz del documento XML pueden aparecer una serie de elementos, formando la siguiente estructura: <?xml version="1.0"?> <!-- Discos.xml, ejemplo de documento XML --> <?xml-stylesheet href=“discos.xsl” type=“text/xml”?> <!DOCTYPE discos SYSTEM “discos.dtd"> <discos> .... </discos> Declaración XML Comentarios Instrucciones de procesamiento Document Type Declaration Elemento raiz
  17. 17. XML - Prólogo del Documento XML Declaración • No es necesaria para que el documento sea bien formado • Incluye los siguientes atributos: • version: versión de XML • encoding: codificación de los caracteres • standalone: especifica si no es necesaria una validación por DTD Comentarios • Pueden aparecer en cualquier sitio excepto dentro de un tag <!-- Discos.xml, ejemplo de documento XML --> <?xml version="1.0" encoding="ISO-8859-1"?>
  18. 18. XML - Prólogo del Documento XML Instrucciones de procesamiento • Asocia el documento XML con algún elemento externo, como por ejemplo una hoja de estilos xsl. <?xml-stylesheet href=“discos.xsl” type=“text/xml”?> Document Type Declaration • Referencia a un DTD (Document Type Definition), el cual valida el documento XML. <!DOCTYPE discos SYSTEM “discos.dtd">
  19. 19. XML - DTDs (Document Type Definition) • Un DTD es un documento que especifica las restricciones que debe cumplir un documento XML. • Un documento válido es aquel que cumple las restricciones especificadas en su DTD. Un documento es inválido si no las cumple o simplemente no referencia a ningún DTD. • Permite la declaración de tres tipos de estructuras:  Elementos  Atributos  Entidades • Debido a sus limitaciones se creó el lenguaje XML Schema.
  20. 20. XML - DTDs - Declaración Un DTD se puede declarar de 2 formas: <!DOCTYPE discos SYSTEM “discos.dtd"> • En el propio documento XML (en el prólogo): <!DOCTYPE empleado [ <!ELEMENT empleado (nombre, direccion)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT direccion (ciudad, calle)> <!ELEMENT ciudad (#PCDATA)> <!ELEMENT calle (#PCDATA)> ] > • En un fichero aparte
  21. 21. XML - DTDs - Declaración de Elementos • Un Elemento se declara especificando su nombre y los elementos que lo componen: <!ELEMENT empleado (nombre, direccion)> • Si el elemento no contiene ningún otro elemento, se especifica el tipo del valor que contiene <!ELEMENT nombre (#PCDATA)> #PCDATA permite caracteres alfanuméricos •Así, el siguiente documento XML sería válido para el DTD anterior: <empleado> <nombre>Antonio</nombre> <direccion> <ciudad>Málaga</ciudad> <calle>Larios</calle> </direccion> </empleado>
  22. 22. XML - DTDs - Declaración de Elementos • Si separamos con comas los elementos hijo, el orden de aparición de éstos debe cumplirse <!ELEMENT empleado (nombre, direccion)> • Si separamos los elementos con una barra ( | ), con que aparezca sólo uno de ellos ya se cumplirá la condición <!ELEMENT empleado (nombre | direccion)> • También pueden agruparse con paréntesis: <!ELEMENT empleado ((nombre | apellido) , direccion)>
  23. 23. XML - DTDs - Declaración de Elementos Modificadores • Los siguientes modificadores especifican el número de elementos que deben aparecer: <!ELEMENT empleado (nombre , apellido? , direccion+)> * 0 ó más + 1 ó más ? 0 ó 1 • Si no se muestra ningún modificador, debe aparecer exactamente 1 elemento. Ejemplos: <!ELEMENT empleado (nombre , apellido , (direccion | telefono)*)>
  24. 24. XML - DTDs - Declaración de Elementos Elementos Vacíos • Si un elemento no contiene valor, se declara con la palabra EMPTY <!ELEMENT direccion EMPTY> Contenido ANY • Si un elemento puede tener cualquier tipo de valor o de elementos compuestos, se declara con la palabra ANY <!ELEMENT otrosDatos ANY>
  25. 25. XML - DTDs - Ejercicio 1 Crear un DTD que valide la siguiente estructura: <proveedores> <proveedor> <nombre>Pascal</nombre> <productos> <producto>Leche</producto> <producto>Flan</producto> </productos> </proveedor> <proveedor> <nombre>Capitán Pesconovo</nombre> <productos> <producto>Merluza</producto> </productos> <telefono> 952888777 </telefono> </proveedor> </proveedores>
  26. 26. XML - DTDs - Declaración de Atributos • Un elemento puede tener 1 o más atributos. Por ejemplo, para declarar los atributos ciudad, calle y numero del elemento direccion, se haría de la siguiente forma: <!ATTLIST direccion ciudad CDATA #FIXED calle CDATA #REQUIRED numero CDATA #IMPLIED > <direccion ciudad=“Málaga” calle=“Larios” numero=“5”/> • La expresión #REQUIRED indica que el atributo es obligatorio • La expresión #IMPLIED indica que el atributo es opcional • La expresión #FIXED indica que el atributo no es modificable • La expresión CDATA es el tipo de dato (datos alfanuméricos) • Se puede especificar un valor por defecto: <!ATTLIST direccion pais CDATA “España”>
  27. 27. XML - DTDs - Declaración de Atributos Tipos de atributos • Enumeración. Limita los posibles valores del atributo. <!ATTLIST empleado sexo (hombre | mujer) #REQUIRED> • Tipos de atributos simple. • CDATA. Caracteres alfanuméricos • ID. Identificador único para un elemento. • IDREF. Referencia a un número identificador contenido en el atributo ID de algún otro elemento <!ATTLIST empleado empid ID #REQUIRED supervisor IDREF #IMPLIED > <empleado empid=“A120”> </empleado> <empleado empid=“A240” supervisor=“A120”> </empleado>
  28. 28. XML - DTDs - Declaración de Entidades • Una entidad es una asociación entre el nombre de la entidad y su valor. La entidad puede aparecer en el valor de un elemento o atributo, y será sustituido por su valor. • Hay 5 entidades predefinidas: • &lt; (<) • &amp; (&) • &gt; (>) • &quot; (") • &apos; (') • Se pueden definir entidades nuevas: <!ENTITY empresa “Coritel AOS"> y usarlas de la siguiente forma <empleado empresa=“&empresa;">
  29. 29. XML - DTDs - Ejercicio 2 Crear un DTD que valide la siguiente estructura: <almacen empresa="&empresa;"> <productos> <producto id="A191"> <nombre>Teclado</nombre> <precio valor="20" moneda="euros"/> <caracteristicas>15 pulgadas</caracteristicas> </producto> <producto id="A167"> <nombre>Monitor 14'</nombre> <precio valor="20000" moneda="pesetas"/> </producto> <producto id="A180" nohay="A167"> <nombre>Monitor 15'</nombre> <precio valor="20000" moneda="pesetas"/> </producto> </productos> </almacen>
  30. 30. XML - Schema • Estándar para la validación de documentos XML • Validación mediante un parser • Mejora con respecto a los DTDs  Permite mayor exactitud en el tipo de datos.  Está escrito en formato XML  Es extensible y escalable  Permite especificar el número de elementos que contiene un elemento  Las declaraciones de elementos están anidadas
  31. 31. XML - Schema - Declaración • Todo schema debe ser declarado con el elemento Schema y en el siguiente namespace: <?xml version="1.0" encoding="ISO-8859-1"?> <Schema xmlns=“urn:schemas-microsoft-com:xml-data“ xmlns:dt="urn:schemas-microsoft-com:datatypes"> ... </Schema> • Al ser el schema un documento XML, la primera línea será la versión de XML usada. • Se almacena en un archivo con extensión xml.
  32. 32. • Elementos simples:  content: textOnly, eltOnly, empty, mixed (por defecto) • Elementos compuestos: minOccurs: número mínimo de apariciones del elemento 0,1 maxOccurs: número máximo de apariciones del elemento 1,* order: seq (por defecto), one, many XML - Schema - Elementos <ElementType name=“precio“ content=“textOnly”/> <ElementType name=“producto“ order=“seq”> <element type=“nombre” minOccurs=“1”/> <element type=“precio”/> </ElementType>
  33. 33. XML - Schema - Elementos • Agrupación: especifica reglas de aparición para un subconjunto de elementos <ElementType name=“producto“> <element type=“nombre”/> <element type=“precio”/> <group order="one"> <element type=“descripcion"/> <element type=“categoria"/> </group> </ElementType>
  34. 34. Declaración de atributos: XML - Schema - Atributos <AttributeType name=“origen“/> <AttributeType name=“proveedor“ required=“yes”/> <ElementType name=“producto“> <element type=“nombre” minOccurs=“0”/> <element type=“precio”/> <attribute type=“origen” default=“Madrid”/> <attribute type=“proveedor”/> </ElementType>
  35. 35. XML - Schema - Referencia al schema Un documento XML especifica que debe ajustarse a un schema de la siguiente forma: <productos xmlns=“x-schema:schemaproductos.xml"> ... </productos>
  36. 36. XML - Schema - Ejercicio 1 Ejercicio 1: XML Schema Ejercicio 1.1 • Crear un XML Schema en productosesq.xml para la validación del archivo productos.xml, donde debe haber al menos 1 producto, idProducto sea obligatorio, cada producto tenga al menos 1 procedencia y el precio sea opcional.
  37. 37. XML - Schema - Tipos Los tipos se especifican con el atributo dt:type Tipos: id valor único idref referencia a un id string cadena boolean 0 ó 1 char 1 carácter date fecha en formato 1994-11-05 time hora en formato 08:15:27 int entero consigo opcional float número real i1,i2,i4,i8 entero, especificando el número de bytes r4,r8 real, especificando el número de bytes ui1,ui2,ui4,ui8 entero sin signo <ElementType name=“precio“ dt:type=“int”/>
  38. 38. XML - Schema - Restricciones El elemento datatype permite especificar el tipo de un elemento o atributo y restringir sus valores Posibles atributos de datatype: dt:type tipo del elemento o atributo dt:values valores posibles si dt:type = enumeration dt:max máximo valor permitido dt:maxExclusive máximo valor permitido excluyente dt:min mínimo valor permitido dt:minExclusive mínimo valor permitido excluyente dt:maxLength máxima longitud del valor <ElementType name=“FechaEntrega" content="textonly"> <datatype dt:type="date" dt:min="1969-07-20“ dt:max=“2003-12-31"/> </ElementType>
  39. 39. XML - Schema - Enumeración En la enumeración sólo es válido uno de los valores especificados: <AttributeType name=“calidad" dt:type="enumeration“ dt:values=“alta media baja"/>
  40. 40. XML - Schema - Ejercicio 2 Ejercicio 2: XML Schema Ejercicio 2.1 • Crear un XML Schema para la validación del archivo clientes.xml, de forma que: idCliente sea obligatorio y número de 5 dígitos como máximo dni sea obligatorio y alfanumérico con 8 caracteres máximo localidad opcional nombre obligatorio apellido1 opcional apellido2 opcional, pero si aparece debe ser después de un apellido1 sexo opcional, y será “Hombre” o “Mujer” direcciones es opcional, pero si aparece habrán 1 ó más direcciones. ciudad, calle y número deben aparecer en ese orden
  41. 41. XML - SAX • SAX (Simple API for XML) es una API que permite a una aplicación escribir código genérico que pueda funcionar con cualquier parser • SAX no es un parser en sí, sólo una capa entre una aplicación y un parser XML file XML parser SAX aplicación
  42. 42. DOM El estándar XML Qué es XML y qué elementos lo componen Acceso a los datos de un documento XML XSL Cómo dar formato a un documento XML con XSL Aplicaciones Prácticas Uso práctico de XML en entornos Java y Microsoft DOM
  43. 43. DOM - Introducción • El DOM (Document Object Model) es una API (Application Programming Interface) creada para acceder a los datos de un documento XML. • Muchos lenguajes tienen librerías que permiten acceder al DOM de un documento XML mediante un parser. • El estándar “Level 1 DOM” definido por el W3C es seguido, entre otros navegadores, por Netscape 6 y Explorer 5. • Al DOM de un documento XML puede accederse desde Javascript, VBScript u otros lenguajes que lo soporten.
  44. 44. DOM - Data Island • Un Data Island es un documento XML insertado en una página HTML. Esto se puede conseguir de 2 formas: • Insertando el código del documento XML en la página: • Referenciando el archivo donde está contenido el documento XML: <XML ID="XMLCliente"> <clientes> <cliente idCliente=“81422”> <nombre>Antonio</nombre> </cliente> <cliente idCliente=“81555”> <nombre>Jose Carlos</nombre> </cliente> </clientes> </XML> <XML ID="XMLCliente" SRC=“clientes.xml"></XML>
  45. 45. DOM - Acceso a elementos • XMLDocument: obtiene el documento XML • documentElement: obtiene el elemento raiz del documento XML • childNodes: obtiene una lista de los elementos hijos de un elemento • item(n): devuelve el elemento n de una lista • text: devuelve el valor de un nodo XMLCliente.XMLDocument.documentElement.childNodes.item(0).childNodes.item(0).text La expresión devuelve “Antonio” • length: devuelve el número de nodos hijos
  46. 46. • firstChild: devuelve el primer elemento hijo de otro elemento • lastChild: devuelve el último elemento hijo de otro elemento • getElementsByTagName(nombre): obtiene una lista de los elementos encontrados con el nombre indicado. Busca de forma recursiva. devuelve “Antonio” • nextSibling: devuelve el siguiente elemento en la lista de hijos del elemento padre, o null si es el último elemento. • previousSibling: devuelve el anterior elemento en la lista de hijos del elemento padre, o null si es el primer elemento. • parentNode: devuelve el nodo padre de un elemento. DOM - Acceso a elementos XMLCliente.XMLDocument.documentElement.getElementsByTagName(“nombre”).item(0).text
  47. 47. DOM - Acceso a atributos • getAttribute(nombre): obtiene el valor del atributo con el nombre especificado devuelve “81422” • attributes: obtiene una lista de los atributos de un elemento también devuelve “81422” XMLCliente.XMLDocument.documentElement.firstChild.getAttribute("idCliente") XMLCliente.XMLDocument.documentElement.firstChild.attributes.item(0).text
  48. 48. DOM - Ejercicio 1 Ejercicio 1: Acceso a XML Ejercicio 1.1 • Insertar el contenido de clientes.xml en un Data Island en el código de pagina.htm • Modificar la función mostrarDatos() para que muestre mensajes con los siguientes datos: • Mostrar el nombre del primer cliente • Mostrar el idCliente del último cliente • Mostrar el número de clientes • Hacer un bucle que muestre los dni. • Hacer un bucle que, para cada cliente, si tiene localidad que la muestre, y si no, que muestre el mensaje “Sin localidad”
  49. 49. DOM - Modificación de elementos Creación de un elemento • createElement(nombre): devuelve un elemento con el nombre especificado • createTextNode(nombre): devuelve un objeto Text que debe ser insertado en un elemento • appendChild(objeto): inserta un hijo a la lista de hijos de un elemento. El objeto puede ser un Elemento o un objeto Text. El siguiente código inserta el apellido al primer cliente con valor “Fernández” element = XMLCliente.createElement("apellido"); textNode = XMLCliente.createTextNode("Fernández"); element.appendChild(textNode); XMLCliente.XMLDocument.documentElement.firstChild.appendChild(element);
  50. 50. DOM - Modificación de elementos Eliminación de un elemento • removeChild(objeto): elimina el objeto especificado La siguiente instrucción elimina el segundo cliente: Cambiar el valor de un elemento Simplemente con la operación de asignación. La siguiente sentencia modifica el nombre del primer cliente: XMLCliente.XMLDocument.documentElement.firstChild.firstChild.text = “Jesús"; XMLCliente.XMLDocument.documentElement.removeChild ( XMLCliente.XMLDocument.documentElement.childNodes.item(1) );
  51. 51. DOM - Modificación de atributos Creación o cambio de valor de un atributo • setAttribute(nombre,valor): si el atributo especificado existe, cambia su valor, si no, crea uno nuevo y le asigna el valor especificado. El siguiente ejemplo crea el atributo “dni” para el primer cliente: Eliminación de un atributo • removeAttribute(nombre): elimina de un nodo el atributo con el nombre especificado. Este ejemplo borra el atributo “nif” creado en la sentencia anterior: XMLCliente.XMLDocument.documentElement.firstChild.setAttribute(“dni", “55333444"); XMLCliente.XMLDocument.documentElement.firstChild.removeAttribute(“dni");
  52. 52. DOM - Ejercicio 2 Ejercicio 2: Modificación de XML Ejercicio 2.1 • Referenciar al archivo clientes.xml desde un Data Island en el código de pagina.htm • Modificar la función cambiarDatos() para que haga lo siguiente: • Añadir el atributo “localidad” al segundo cliente con el valor “Málaga” • Añadir una etiqueta “apellido” al último cliente con el valor “Martín” • Eliminar el primer cliente • Cambiar el nombre del último cliente por “Jorge”. • Para comprobar los cambios, hacer 3 bucles que muestren todos los nombres, apellidos y localidades. Debe mostrar: Nombres: Jose Carlos, Jorge Apellidos: Sánchez, Martín Localidades: Málaga, null
  53. 53. XSL DOM El estándar XML Qué es XML y qué elementos lo componen Acceso a los datos de un documento XML XSL Cómo dar formato a un documento XML con XSL Aplicaciones Prácticas Uso práctico de XML en entornos Java y Microsoft
  54. 54. XSL - Introducción • XSL (eXtensible Stylesheet Language) es un estándar creado por el W3C para el tratamiento visual de documentos XML. • El estándar XSL define dos lenguajes: XSLT y XPath. • XSLT (XSL Transformations) es un lenguaje que define una serie de elementos que sirven para dar un formato a un documento XML. • XPath (XML Path Language) es un lenguaje que define una forma de construir expresiones que identifican parte de un documento XML. • Sigue una estructura de árbol, al igual que XML. Procesador XSLT • Un procesador XSLT es un programa que se encarga de aplicar una plantilla XSL a un documento XML. • Recibe como entrada un documento XSL y otro XML y devuelve como salida un documento XML, que puede ser una página HTML.
  55. 55. XSL - Modo de funcionamiento • XSLT usa una serie de tags que están definidos dentro de un namespace. El namespace definido para los tags de XSLT 1.0 debe definirse en el tag stylesheet de la siguiente forma: • El documento XSL contiene 1 o más plantillas (templates), definidas dentro del elemento stylesheet. El atributo match indica a que elemento se le aplica la plantilla. “/” indica que la plantilla se aplica al elemento root. <xsl:template match="/"> ... </xsl:template> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> .... </xsl:stylesheet>
  56. 56. Para aplicar el documento XSL al XML, el procesador XSLT busca un template que se aplique al elemento root, y lo ejecuta. XSL - Ejemplo Éste sería un ejemplo de documento XSL: <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0“ mlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match=“/"> <html> <head><title>Clientes</title></head> <body> ..... </body> </html> </xsl:template> </xsl:stylesheet>
  57. 57. XSL - Ejecución en IE • Internet Explorer 5 contiene un Procesador XSLT (MSXML). • Para aplicar una plantilla XSLT a un documento XML, se añade la siguiente línea al comienzo del documento XML. <?xml-stylesheet type=“text/xsl” href=“clientes.xsl” ?> • Abrir el fichero xml con el Explorer
  58. 58. XSL - XPath • XPath es un lenguaje para construir expresiones que referencien a una parte de un documento XML <clientes> <cliente idCliente=“81422” dni=“33555888”> <nombre>Antonio</nombre> </cliente> <cliente idCliente=“81555”> <nombre>Jose Carlos</nombre> </cliente> </clientes> • Referencias absolutas: comienzan con el elemento root ( / ) /clientes/cliente devuelve todos los nodos cliente /clientes/cliente[1] devuelve el primer cliente • Referencias relativas: parten del nodo contextual. clientes/cliente también devuelve los nodos cliente
  59. 59. XSL - XPath - Símbolos especiales Símbolos especiales Aparte de la barra / , hay otros símbolos con los siguientes significados: /clientes/cliente/@idCliente devuelve todos los idCliente /clientes//* devuelve todos los nodos descendientes de cliente Suponiendo que el nodo contextual es /clientes/cliente con idCliente=“81422”: ./nombre devuelve el valor del elemento nombre (“Antonio”) Símbolo Significado @nombre Atributo llamado nombre // El nodo y todos sus descendientes . El propio nodo .. El nodo padre * Todos los nodos hijo @* Todos los atributos
  60. 60. XSL - XPath - Predicados Predicados Un predicado es una condición que filtra los elementos devueltos por una expresión. /clientes/cliente[nombre=‘Antonio’] devuelve los clientes llamados Antonio /clientes/cliente[@idCliente=‘81422’]/nombre devuelve el nombre del cliente con idCliente igual a ‘81422’ Negación La palabra not pone como condición que no esté un elemento o atributo. /clientes/cliente[not(@dni)] devuelve los clientes que no tengan como atributo el dni. /clientes/cliente[not(apellido)] devuelve los clientes que no tengan el tag apellido
  61. 61. XSL - XPath - Ejercicio 1 <paises> <pais idPais=“11”> <nombre>Italia</nombre> <ciudades> <ciudad idCiudad=“320”> <nombre>Roma</nombre> <poblacion>5000000</poblacion> </ciudad> </ciudades> </pais> </paises> • Obtener los nombres de todos los países • Obtener los nombres de todas las ciudades del segundo país de la lista • Obtener los nombres de las ciudades con población mayor a 1000000 • Obtener los idCiudad de las ciudades con población entre 50000 y 100000 • Obtener el idPais del país que contenga la ciudad con idCiudad = 320
  62. 62. XSL - XHTML XHTML (eXtended HyperText Markup Language) • Implementación de HTML compatible con XML • Validación: Reglas de construcción: • Tags obligatorios: head y body • Tags en minúscula • Elementos correctamente anidados • Todos los elementos deben ser cerrados Texto<p> <p>Texto</p> <br> <br/> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN“ "DTD/xhtml1-strict.dtd">
  63. 63. Reglas de construcción: • Los atributos deben ir entre comillas • Los atributos deben tener valor • Para los scripts se delimita una sección CDATA XSL - XHTML <td width=100> <td width=“100”> <option value=“1” selected> <option value=“1” selected=“selected”> <script language="JavaScript type="text/javascript"> <![CDATA[ document.write("<b>Hello World!</b>"); ]]> </script>
  64. 64. XSL - XHTML - Ejercicio Ejercicio: Convertir a XHTML <script language="JavaScript" src="myscript.js"></script> <html> <body> Pagina inicio <br> <B>Formulario 1</B> <form name=“form1”> <img src=“imagen.gif” border=0> <input type=“checkbox” checked> </form> </body> </html>
  65. 65. XSL - Elementos XSLT <xsl:template match=“cliente"> <xsl:value-of select="@idCliente"/> </xsl:template> • xsl:value-of devuelve el valor especificado en el atributo select. Puede calcular el resultado de operaciones aritméticas <xsl:element name=“a"> Ir a siguiente página </xsl:element> • xsl:element inserta un elemento con el nombre indicado en name
  66. 66. XSL - Elementos XSLT <xsl:if test=“not(@idCliente)"> <b>Falta el dni del cliente</b> </xsl:if> • xsl:if si la evaluación del contenido del atributo test es true, inserta el contenido del elemento <a> <xsl:attribute name=“href"> http://www.com </xsl:attribute> Ir a inicio </a> • xsl:attribute añade un atributo al elemento en el que esté contenido. El nombre del atributo se especifica en el atributo name y su valor se especifica en el contenido del elemento xsl:attribute.
  67. 67. XSL - Elementos XSLT <xsl:for-each select=“/clientes/cliente"> <i><xsl:value-of select=“@idCliente”/></i><br> </xsl:for-each> • xsl:for-each itera sobre los elementos de la lista que devuelva la expresión contenida en el atributo select <xsl:choose> <xsl:when test=“expresion1”> ... </xsl:when> ... <xsl:otherwise>.... </xs:otherwise> </xsl:choose> • xsl:choose, xsl:when, xsl:otherwise instancia el contenido del primer elemento xsl:when cuyo atributo test devuelva true. Si ningún test se cumple, se instancia el contenido del elemento xsl:otherwise.
  68. 68. XSL - Elementos XSLT <xsl:comment> comentario </xsl:comment> • xsl:comment inserta un comentario en el árbol resultante. <!-- comentario --> genera el código
  69. 69. XSL - Funciones Estas son las funciones más usadas definidas por XPath. • position(). Devuelve la posición del nodo actual relativa al conjunto de nodos del contexto. • count(conjuntoNodos). Devuelve el número de nodos del conjunto pasado como parámetro. • concat(cadena1, cadena2, ...). Devuelve la concatenación de sus argumentos. • substring(cadena, inicio, fin). Devuelve la subcadena que comienza en la posición inicio y termina en fin. • round(numero). Devuelve el entero más cercano al valor pasado. • not(boolean). Devuelve la negación del argumento. Si el argumento no es booleano, lo convierte con la función boolean(). • boolean(objeto). Si objeto es 0, NaN, un conjunto vacío o una cadena vacía, devuelve false; en otro caso devuelve true.
  70. 70. XSL - Ejercicios Preparación de la máquina • Instalación del parser MSXML 3 o superior de Microsoft • Activación del parser (xmlinst.exe)
  71. 71. XSL - Ejercicio 1 Ejercicio 1: Aplicar plantilla XSL a XML Ejercicio 1.1 • Modificar el archivo productos.xml para aplicarle la plantilla productos.xsl Ejercicio 1.2 • Modificar el archivo productos.xsl para que debajo de cada código muestre el precio Ejercicio 1.3 • Modificar el archivo productos.xsl para que debajo de cada precio muestre una lista de ciudades de procedencia. Ejercicio 1.4 • Modificar el archivo productos.xsl para que al comienzo muestre el número total de productos y, delante de cada producto, aparezca un índice (1,2,...).
  72. 72. XSL - Ejercicio 2 Ejercicio 2: Elementos XSLT Ejercicio 2.1 • Modificar el archivo productos.xsl para que si el código del producto es 100, muestre tras el nombre el texto “(Producto en Oferta)” Ejercicio 2.2 • Modificar el archivo productos.xsl para que, si el precio es menor que un euro, muestre tras el nombre el texto “(menos de 1 euro)” Ejercicio 2.3 • Modificar el fichero productos.xsl para que, debajo de cada producto, aparezca un botón con el nombre del producto y, al pulsarlo, muestre su precio.
  73. 73. Aplicaciones Prácticas DOM El estándar XML Qué es XML y qué elementos lo componen Acceso a los datos de un documento XML XSL Cómo dar formato a un documento XML con XSL Aplicaciones Prácticas Uso práctico de XML en entornos Java y Microsoft
  74. 74. Aplicaciones Prácticas - Introducción XML se usa principalmente en los siguientes entornos: • Uso de XML conjuntamente con HTML en el cliente.  Internet Explorer  Netscape Navigator • XML en entorno Java  JAXP • XML en entorno Microsoft  MSXML
  75. 75. Aplicaciones Prácticas - Java • JAXP (Java API for XML Processing) es una librería de clases de Sun que contiene: • Un parser XML (Crimson) • Un procesador XSLT (Xalan) • Parte de las clases tienen licencia de W3C, y el resto de Apache. • Puede descargarse libremente desde http://java.sun.com/xml • Necesita la previa instalación del JDK 1.1.8 (Java Development Kit) o Java 2 SDK (Software Development Kit)
  76. 76. Aplicaciones Prácticas - Java Uso de las clases de JAXP Acceso a un documento XML desde un fichero // Clases de JAVAXP import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; // Excepciones import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; // Acceso a ficheros import java.io.File; import java.io.IOException; // DOM de W3C import org.w3c.dom.Document; import org.w3c.dom.DOMException;
  77. 77. // Se declara el documento donde se almacenará el XML static Document document; public static void main(String argv[]) { // Se instancia la clase DocumentBuilderFactory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // Se obtiene el xml del archivo DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse(new File(“archivo.xml”)); // Se accede al documento document.getDocumentElement()..... } Aplicaciones Prácticas - Java Acceso a un documento XML desde un fichero (2)
  78. 78. Aplicaciones Prácticas - Java - Objetos En JAXP su usan los siguientes objetos. Algunos métodos cambian ligeramente, pero su significado son el mismo que en el DOM: Document • Element createElement(nombre) • Text createTextNode(valor) • Element getDocumentElement() Element subclase de Node • String getAttribute(nombre) • NodeList getElementsByTagName(nombre) • removeAttribute(nombre) • setAttribute(nombre,valor) Text subclase de Node
  79. 79. Aplicaciones Prácticas - Java - Objetos Node • appendChild(Node) • NodeList getChildNodes() • Node getFirstChild() • Node getLastChild() • Node getNextSibling() • String getNodeValue() • Node getPreviousSibling() • removeChild(Node) NodeList • int getLength() • Node item(i)
  80. 80. Aplicaciones Prácticas - Java - Objetos El método getChildNodes() devuelve una sucesión de elementos Text y Element intercalados: <clientes> Texto1 <cliente>Antonio</cliente> Texto2 <cliente>Jose</cliente> Texto3 </clientes> getChildNodes().item(i) i Devuelve 0 Text 1 Element 2 Text 3 Element 4 Text
  81. 81. Aplicaciones Prácticas - Java - Ejercicios Preparación de la máquina • Instalación de JDK (Java Development Kit) 1.1.8 o superior  http://java.sun.com/products • Instalación de JAXP (Java API for XML Processing)  http://java.sun.com/xml • Instalación del servidor Web Por ejemplo: iPlanet Web Server FastTrack Edition  http://www.iplanet.com/downloads/download/index.html
  82. 82. Aplicaciones Prácticas - Java - Ejercicio 1 Ejercicio 1: Acceso a XML Ejercicio 1.1 • Compilar la clase ejemplo.java  javac ejemplo.java (genera el fichero ejemplo.class) • Ejecutar la clase ejemplo.class  jview ejemplo clientes.xml Ejercicio 1.2 • Modificar la clase java acceder.java para que lea un documento XML pasado como parámetro.  jview acceder clientes.xml Ejercicio 1.3 • Modificar la clase acceder.java para que muestre por pantalla el nombre del segundo cliente Ejercicio 1.4 • Modificar la clase acceder.java creando un bucle que muestre todos los atributos idCliente de todos los clientes.
  83. 83. Aplicaciones Prácticas - Java import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import javax.xml.transform.stream.StreamResult; Transformación de un documento XML con XSLT
  84. 84. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); File stylesheet = new File(“archivo.xsl”); File datafile = new File(“archivo.xml”); DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse(datafile); TransformerFactory tFactory = TransformerFactory.newInstance(); StreamSource stylesource = new StreamSource(stylesheet); Transformer transformer = tFactory.newTransformer(stylesource); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(System.out); transformer.transform(source, result); Aplicaciones Prácticas - Java Transformación de un documento XML con XSLT (2)
  85. 85. Aplicaciones Prácticas - Java - Ejercicio 2 Ejercicio 2: Aplicar una plantilla XSL Ejercicio 2.1 • Crear la clase java conversor.java al que se le pase como parámetro un documento XSL y un documento XML y que escriba en un fichero htm de salida el resultado de aplicarle la plantilla XSL al documento XML. • Probarla con el documento clientes.xml y la plantilla clientes.xsl  java conversor clientes.xsl clientes.xml Ejercicio 2.2 • Modificar la plantilla clientes.xsl para que muestre debajo del idCliente su dni, y si no tiene, que muestre un mensaje indicándolo.
  86. 86. Aplicaciones Prácticas - Java Almacenar un documento XML en un archivo • Usando el Transformer sin aplicarle ningún estilo: Transformer transformer = tFactory.newTransformer(); StreamResult result = new StreamResult(new FileWriter("salida.xml"));
  87. 87. Aplicaciones Prácticas - Java - Ejercicio 3 Ejercicio 3: Modificación de un archivo XML Ejercicio 3.1 • Crear la clase modificar.java a partir de la clase conversor.java para que ésta lea el contenido de un documento Xml pasado como parámetro, inserte un dni en el segundo cliente y guarde las modificaciones. Ejercicio 3.2 • Modificar la clase modificar.java para que cree un nuevo cliente con los siguientes datos:  Nombre: Javier  idCliente: 81678  dni: 55666777
  88. 88. Aplicaciones Prácticas - Java Otros parsers • JDOM (www.jdom.org) • XT (http://www.jclark.com/xml/xt.html). Implementación de un procesador XSLT usando el parser XP. • Xerces-J (http://xml.apache.org/xerces-j/index.html). Parser creado por el proyecto Apache XML.
  89. 89. Aplicaciones Prácticas - Java - JSP Acceso a un documento XML desde JSP • Se importan las mismas clases que en Java • Se accede al documento. El fichero leído partirá del directorio raíz del servidor web: <%@ page import="javax.xml.parsers.DocumentBuilder" %> ... <% Document document; File xmlFile = new File("public_htmlarchivo.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse(xmlFile); %> <%=document.getDocumentElement().....%>
  90. 90. Aplicaciones Prácticas - Java - JSP Aplicación de XSL desde JSP • Se importan las mismas clases que en Java • Se aplica la plantilla y se manda a la variable out: <% Document document; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); File stylesheet = new File("public_htmlarchivo.xsl"); File datafile = new File("public_htmlarchivo.xml"); DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse(datafile); TransformerFactory tFactory = TransformerFactory.newInstance(); StreamSource stylesource = new StreamSource(stylesheet); Transformer transformer = tFactory.newTransformer(stylesource); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(out); transformer.transform(source, result); %>
  91. 91. Aplicaciones Prácticas - Java - Ejercicio 4 Ejercicio 4: Uso de XML con JSP Ejercicio 4.1 • Modificar el archivo pagina.jsp para que muestre los datos del archivo cliente.xml de la siguiente forma: Nombre: Antonio Código: 81422 Dni: 33555888 ó No tiene Teléfonos: 952334455 666909090 ó No tiene Ejercicio 4.2 • Modificar la página pagina2.jsp para que muestre por pantalla el resultado de aplicar la plantilla clientes.xsl a clientes.xml. • Modificar el archivo clientes.xsl para que pagina2.jsp muestre el mismo resultado de pagina.jsp
  92. 92. Aplicaciones Prácticas - Microsoft • Para usar XML en aplicaciones Microsoft, se usa el objeto COM Microsoft XML (MSXML). • Internet Explorer 5 viene con una versión antigua (msxml.dll)  Objeto Microsoft.XMLDOM • Se debe instalar una versión más moderna  Objeto MSXML2.DOMDocument
  93. 93. Acceder a un documento XML • Si estamos en Visual Basic, añadir el objeto Microsoft XML a las referencias del proyecto. • Instanciar el objeto.  En Visual Basic.  En ASP Set objParser = Server.CreateObject("Microsoft.XMLDOM") Dim objParser As MSXML.DOMDocument Set objParser = New MSXML.DOMDocument Aplicaciones Prácticas - Microsoft
  94. 94. • Cargar el documento XML  desde un archivo:  Desde una cadena de texto: • Usar el documento (obtener el elemento raíz): • Destruir el objeto tras usarlo. Set objParser = nothing Aplicaciones Prácticas - Microsoft If objParser.Load("c:tempxmldocumento.xml") Then ' Ha funcionado Else ' Ha ocurrido un error End If objParser.loadXML(“<clientes> .... </clientes>”); objParser.documentElement
  95. 95. Aplicaciones Prácticas - Microsoft - Ejercicio 1 Ejercicio 1: Acceso a XML desde ASP Ejercicio 1.1 • Modificar el archivo pagina.asp para que guarde en la variable domXml el documento almacenado en productos.xml. • Modificar la página para que muestre el idPedido del primer pedido del documento XML. Ejercicio 1.2 • Modificar la página para que aparezca la cantidad del segundo producto del tercer pedido. Ejercicio 1.3 • Modificar la página para que muestre los nombres de todos los productos adquiridos. Ejercicio 1.4 • Modificar la página para que aparezca el número de cliente del pedido con idPedido=1002, y la suma de todo su pedido.
  96. 96. Aplicaciones Prácticas - Microsoft Aplicar una plantilla XSLT a un documento XML <% Dim domXml As MSXML.DOMDocument Dim domXsl As MSXML.DOMDocument Dim resutl As String Set domXml = New MSXML.DOMDocument Set domXsl = New MSXML.DOMDocument domXml.Load("c:documento.xml") domXsl.Load("c:plantilla.xsl") result = domXml.transformNode(domXsl) %> Mostrar el resultado en ASP <%=result %>
  97. 97. Aplicaciones Prácticas - Microsoft - Ejercicio 2 Ejercicio 2: Aplicación de una plantilla XSL a un documento XML desde ASP Ejercicio 2.1 • Modificar el archivo pagina.asp para que muestre el resultado de aplicar la plantilla productos.xsl al documento productos.xml. Ejercicio 2.2 • Modificar el archivo productos.xsl para que muestre el siguiente resultado: Pedido nº: 1000 Cliente: 123 Productos: .... Línea Id Nombre Precio Total (euros) 1 315 Patatas fritas 0.9 2... ... .... ....
  98. 98. Recursos • W3C (Wolrd Wide Web Consorcium) http://www.w3.org • Sun http://java.sun.com/xml • Microsoft http://msdn.microsoft.com/xml • Apache XML Project http://xml.apache.org • Otros http://www.xml.com http://www.xml.org http://www.xmlsoftware.com http://www.xmlhack.com

×