Вы находитесь на странице: 1из 32

II Curso Online JAVA-J2EE

TEMA 8

Desarrollo de aplicaciones con XML

Autor: PCYTA / Centro de Excelencia de Software Libre de Castilla-La Mancha


Versin: 1.0
Fecha: Revisado 07-02-2008 11:46
Licencia: CC-by-sa 2.5

0 Licencia
Usted es libre de:
Copiar, distribuir y comunicar pblicamente la obra
Hacer obras derivadas

Bajo las condiciones siguientes:

uso

Reconocimiento. Debe reconocer los crditos de la obra de la manera especificada por el


autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el
que hace de su obra).
Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra
derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta.

Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia
de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de
los derechos de autor
Nada en esta licencia menoscaba o restringe los derechos morales del autor.

Para ver la licencia visite:


http://creativecommons.org/licenses/by-sa/2.5/es/legalcode.es

6 de febrero de 2008

Tema 8

UNIDAD VIII. DESARROLLO DE APLICACIONES CON XML


0 Licencia............................................................................................................................................2
1 Caractersticas del XML................................................................................................................4
1.1 Introduccin a XML..................................................................................................................4
1.2 Sintaxis XML............................................................................................................................4
1.3 Componentes XML...................................................................................................................5
2 Validacin: DTD y XSD.................................................................................................................8
2.1 Validacin XML........................................................................................................................8
2.2 DTD...........................................................................................................................................8
2.3 XSD.........................................................................................................................................10
3 Estndar XSL: XPath, XSLT y XSL-FO....................................................................................16
3.1 Introduccin XSL....................................................................................................................16
3.2 XPath (I)..................................................................................................................................16
3.3 XPath (II).................................................................................................................................18
3.4 XSLT.......................................................................................................................................20
3.5 XSL-FO...................................................................................................................................21
4 DOM y paquetes Java/XML........................................................................................................24
4.1 DOM........................................................................................................................................24
4.2 Java API para XML (JAXP)....................................................................................................26
5 Servicios web con J2EE................................................................................................................28
5.1 Introduccin a los servicios Web.............................................................................................28
5.2 SOAP.......................................................................................................................................29
5.3 WSDL......................................................................................................................................30
5.4 UDDI.......................................................................................................................................30
5.5 Web Services y Java / J2EE.....................................................................................................31

6 de febrero de 2008

Tema 8

1 Caractersticas del XML


1.1 Introduccin a XML
XML (Extensible Markup Language o Lenguaje de Marcas Extensible) es un lenguaje de etiquetas
diseado para describir los datos. El XML es una recomendacin de la W3C (World Wide
Consortium).
XML <> HTML

XML est enfocado en los datos. Pretende describir la informacin.


HTML est enfocado en presentar los datos. Pretende mostrar la
informacin.

En XML las etiquetas no se encuentran predefinidas sino que te puedes definir tus propias etiquetas.
XML utiliza un DTD (Document Type Definition) o un XSD (XML Schema) para describir los
datos y definir unas reglas de validacin de los mismos.
Con XML nicamente se definen los datos, para presentarlos se utiliza XSLT que permite
transformar dichos datos en otros formatos para presentarlos (por ejemplo, XHTML o FO).
Es importante dejar claro que el XML no hace nada. XML ha sido creado para estructurar,
almacenar y enviar informacin. A continuacin podemos ver un sencillo ejemplo de XML que
presenta un correo de Juan a Jess:
<correo>
<para>Jesus</para>
<de>Juan</de>
<resumen>Recuerda</resumen>
<cuerpo>El curso de Java empieza el 22 de septiembre</cuerpo>
</correo>
Este documento XML define un correo que tiene un resumen y un cuerpo. Adems, tambin se
indica el destinatario y el remitente. Aun as, este documento XML no hace nada, simplemente
presenta la informacin agrupada con etiquetas. Se podra realizar una aplicacin que enve y reciba
correos pero eso ya no es parte del XML.

1.2 Sintaxis XML


Las reglas sintcticas del XML son muy sencillas pero tambin muy estrictas. A continuacin
listamos dichas reglas:
1. Los documentos XML tienen que tener un nico par de etiquetas que sean el elemento raz.
El resto de etiquetas o elementos deben estar dentro del raz y pueden ir anidndose.
2. Todos los elementos tienen que tener la etiqueta de cierre.
3. Las etiquetas distinguen entre maysculas y minsculas (case sensitive).
4. Todos los elementos tienen que encontrarse debidamente anidados.
5. Los valores de los atributos que tengan las etiquetas deben ir siempre entre comillas.

6 de febrero de 2008

Tema 8

Veamos un ejemplo donde podemos comprobar la anterior lista de reglas.


<?xml version="1.0" encoding="ISO-8859-1"?>
<buzon_salida>
<correo id=100>
<para>Jesus</para>
<de>Juan</de>
<resumen>Recuerda</resumen>
<cuerpo>El curso de Java empieza el 22 de septiembre</cuerpo>
</correo>
<correo id=111>
<para>Alumnos</para>
<de>Juan</de>
<resumen>Importante</resumen>
<cuerpo>XML solo describe los datos</cuerpo>
</correo>
</buzon_salida>
La primera lnea del documento se denomina declaracin XML y define la versin del XML y la
codificacin de caracteres utilizada. Esta lnea no es obligatoria pero si recomendable.
El elemento raz en ste documento es <buzon_salida></buzon_salida>. Comprueba como tanto
esta etiqueta como el resto tienen SIEMPRE una etiqueta de cierre.
El nico atributo que se presenta en ste ejemplo es el id de la etiqueta correo. En este ejemplo
queda claro que es un identificador numrico de cada correo y que, como hemos dicho, el valor que
toma se encuentra entre comillas.
La sintaxis para escribir comentarios dentro de los documentos XML es igual
que para el caso de HTML.
<!-- Esto es un comentario -->

1.3 Componentes XML


Los componentes que nos encontramos dentro de cualquier fichero XML son tres:
1. Elementos XML: son las etiquetas. Estos elementos son definidos por el creador del XML y
se pueden extender. Adems, se encuentran relacionados entre ellos formando un rbol
jerrquico.
2. Atributos XML: los elementos XML pueden tener atributos en la etiqueta de inicio. Estos
atributos se utilizan para aadir informacin adicional sobre los elementos.
3. Datos: es la informacin que realmente se quiere guardar con el fichero XML.

6 de febrero de 2008

Tema 8

Elementos XML.
Vamos a resumir las caractersticas que definen a los elementos:

Los elementos XML son extensibles: cualquier documento XML puede aadir ms
etiquetas para guardar ms informacin y aquellas aplicaciones que usan dichos documentos
deberan seguir funcionando igualmente.
Los elementos XML se encuentran relacionados como padres e hijos formando un rbol
jerrquico. En la siguiente tabla se muestra con un ejemplo las relaciones entre los
elementos y como se denominan dichas relaciones en XML.
Los elementos pueden tener varios tipos de contenido. Pueden contener otros elementos,
contenido mixto, contenido simple o estar vacios. En el ejemplo 'libro' contiene otros
elementos, 'capitulo' tiene contenido mixto porque contiene tanto texto como otros
elementos, 'parrafo' tiene contenido simple o contenido de texto nicamente, 'prod' es un
elemento vacio y es el nico elemento que tiene atributos (id y media).
<libro>
<titulo>Mi primer XML</titulo>
<prod id="1" media="pdf"></prod>
<capitulo>Introduccin a XML
<parrafo>Que es HTML</parrafo>
<parrafo>Que es XML</parrafo>
</capitulo>
<capitulo>Sintaxis XML
<parrafo>Los elementos deben tener
etiqueta de cierre</parrafo>
<parrafo>Los elementos deben estar
correctamente anidados</parrafo>
</parrafo>
</libro>

Libro es el elemento raiz.


Titulo, prod y capitulo son elementos
hijo de libro.
Libro es el elemento padre de titulo,
prod y capitulo.
Titulo, prod y capitulo son siblings o
elementos hermano porque tienen el
mismo padre.

Reglas para el nombrado de los elementos:


1. Los nombres pueden contener letras, nmeros u otros caracteres.
2. Los nombres no pueden empezar con nmero o un signo de puntuacin.
3. Los nombres no pueden empezar con las letras xml (o sus variantes
maysculas y minsculas, es decir, XML, Xml, XMl, etc).
4. Los nombres no pueden contener espacios.
5. Se recomienda que se den nombres descriptivos a los elementos y utilizar el
subrayado como separador (por ejemplo, primer_apellido, segundo_apellido)

Atributos XML.
Veamos las caractersticas que definen a los atributos:

Los atributos slo pueden aparecer en la etiqueta de inicio de los elementos XML y
proporcionan informacin adicional sobre los elementos.
El valor que tengan dichos atributos es obligatorio que vaya entre comillas pero pueden

6 de febrero de 2008

Tema 8

utilizarse tanto comillas simples como dobles (slo en el caso de que el valor de atributo
contenga un tipo de comillas se utilizara la otra para encerrar dicho valor). A continuacin
tenemos ejemplos de utilizacin de las comillas.
<persona sexo="hombre">
<persona sexo='hombre'>

<cliente nombre='Paco "el gato" '>


<cliente nombre="Paco 'el gato' ">

Cundo utilizar los atributos o cuando definir elementos?. Como vemos en el siguiente
ejemplo, los datos se pueden guardar en atributos o en elementos hijo.
<persona sexo="hombre">
<nombre>Juan</nombre>
<apellidos>Atienza Garca</apellidos>
</persona>

<persona>
<sexo>female</sexo>
<nombre>Juan</nombre>
<apellidos>Atienza Garca</apellidos>
</persona>
No existen reglas para saber cuando utilizar atributos o elementos aunque en XML se debera evitar
utilizar los atributos y utilizar los elementos hijos. En la siguiente lista se presentan los problemas
que se dan cuando se utilizan atributos y por lo que se recomienda utilizar elementos:

Los atributos no pueden contener valores mltiples.


Los atributos no se pueden extender fcilmente.
Los atributos no pueden describir estructuras.
Los atributos son ms difciles de manipular por los programas.
Los atributos no se pueden validar con DTDs.

6 de febrero de 2008

Tema 8

2 Validacin: DTD y XSD


2.1 Validacin XML
Un documento XML se dice que es vlido si est 'bien formado' y, adems, est escrito
conforme a las reglas que se definan en el fichero DTD o XSD asociado al mismo.
Un documento XML est 'bien formado' si est escrito siguiendo las reglas sintcticas que hemos
visto en la leccin anterior:

Un documento XML debe tener un nico elemento raz.


Los elementos XML deben tener etiqueta de cierre.
Las etiquetas son case sensitive.
Los elementos XML deben estar correctamente anidados.
Los atributos XML deben tener sus valores encerrados entre comillas.

Mediante un fichero DTD (Document Type Definition) o XSD (XML Schema Definition) se
define la lista de elementos permitidos en los documentos XML junto con la estructura o
interrelacin que deben presentar dichos elementos. En los siguientes apartados vamos a estudiar
con detalle ambos tipos de documentos.

2.2 DTD
Como hemos dicho anteriormente, un fichero DTD (Document Type Definition) define la lista de
elementos y la estructura que puede tener un documento XML.
Existen dos formas de relacionar un documento XML con su DTD:
1. Dentro del documento XML, se utiliza la etiqueta DOCTYPE con la sintaxis: <!DOCTYPE
elemento_raiz [declaracion_elementos]>
2. Como un fichero externo, se utiliza la etiqueta DOCTYPE con la sintaxis: <!DOCTYPE
elemento_raiz SYSTEM "nombre_fichero">
Tanto si es interno como externo los bloques para construir un fichero DTD son:

Elementos: son los bloques principales de construccin de los ficheros XML.


Atributos: proporcionan informacin adicional sobre los elementos.
Entidades: variables utilizadas para definir shorcuts a textos genricos o caracteres
especiales.
PCDATA (Parsed Carcter Data): es texto que ser parseado por el parseador. El parseador
buscar etiquetas y entidades dentro de este texto.
CDATA (Carcter data): es texto que NO ser parseado por el parseador. Las etiquetas o
entidades que contenga dicho texto no sern tratadas.

Antes de definir ms detalladamente cada uno de los bloques, vamos a recordar un ejemplo de
documento XML junto con su DTD que ya hemos visto:
ejemploXML.xml
<?xml version="1.0?>
<!DOCTYPE correo SYSTEM
"ejemploDTD.dtd">
<correo>
6 de febrero de 2008

ejemploDTD.dtd
<!ELEMENT correo (para,de,resumen,cuerpo)>
<!ELEMENT para (#PCDATA)>
<!ELEMENT de (#PCDATA)>
<!ELEMENT resumen (#PCDATA)>
Tema 8

<para>Jesus</para>
<de>Juan</de>
<resumen>Recuerda</resumen>
<cuerpo>El curso de Java empieza el 22 de
septiembre</cuerpo>
</correo>
Elementos.

<!ELEMENT cuerpo (#PCDATA)>

Son los bloques principales de construccin. Se declaran utilizando la siguiente sintaxis:


<!ELEMENT nombre_elemento CATEGORIA>
La siguiente tabla presenta los valores que puede tomar la clave CATEGORIA:
CATEGORIA
EMPTY

Ejemplo DTD
Ejemplo XML
<!ELEMENT br
<br />
EMPTY>
(#PCDATA)
<!ELEMENT de
<de>Juan</de>
(#PCDATA)>
(hijo1, hijo2,...)
Elementos con uno o <!ELEMENT note
Vase
ms hijos.
(to,from,heading,bod ejemploXML.xml
y)>
Se puede definir la cardinalidad u opcionalidad de los elementos mediante los siguientes caracteres
especiales:

Descripcin
Elemento que no va a
tener contenido.
Texto parseable.

Una nica vez: <!ELEMENT nombre_elemento (elemento_hijo)>


Una o ms veces: <!ELEMENT nombre_elemento (elemento_hijo+)>
Cero o ms veces: <!ELEMENT nombre_elemento (elemento_hijo*)>
Cero o una vez: <!ELEMENT nombre_elemento (elemento_hijo?)>
Opcionalidad: <!ELEMENT nombre_elemento (elemento_hijo1|elemento_hijo2)>

Atributos.
Definen informacin adicional sobre los elementos. Se declaran utilizando la siguiente sintaxis:
<!ATTLIST nombre_elemento nombre_atributo tipo_atributo valor_defecto>
La siguiente tabla presenta los valores ms normales que puede tomar el tipo de atributo:
TIPO DE ATRIBUTO
Descripcin
CDATA
El valor es una cadena de caracteres.
(en1|en2|..)
El valor pertenece a una lista enumerada.
ID
El valor es un id nico.
IDREF
El valor es el id de otro elemento.
IDREFS
El valor es una lista de otros ids.
El valor por defecto puede tener los siguientes valores:
VALOR
valor
#REQUIRED
6 de febrero de 2008

Descripcin
El valor por defecto del atributo.
El atributo es obligatorio.
Tema 8

#IMPLIED
#FIXED valor

El atributo no es obligatorio.
El valor del atributo es fijo.

Veamos unos cuantos ejemplos de difinicin de atributos:


DTD: <!ATTLIST person number CDATA #REQUIRED>
XML Vlido: <person number="5677" />
XML Invlido:<person />
DTD: <!ATTLIST contact fax CDATA #IMPLIED>
XML Vlido: <contact fax="555-667788" />
XML Invlido: <contact />
DTD: <!ATTLIST payment type (check|cash) "cash">
Ejemplo XML: <payment type="check" /> o <payment type="cash" />
Entidades.
Son variables utilizadas para definir 'atajos' (shorcuts) a textos genricos o caracteres especiales.
Pueden ser internas o externas y su sintaxis es diferente:

Interna: <!ENTITY entity-name "entity-value">


Externa: <!ENTITY entity-name SYSTEM "URI/URL">

Para referenciar a la entidad en el documento XML se tiene que escribir '&<nombre_entidad>;'.


Un ejemplo de entidad interna:
Ejemplo DTD:
<!ENTITY autor "Juan Atienza.">
<!ENTITY copyright "iformacion.com">
Ejemplo XML:
<author>&autor;&copyright;</author>
Un ejemplo de entidad externa:
Ejemplo DTD:
<!ENTITY autor SYSTEM "http://www.iformacion.com/entidades.dtd">
<!ENTITY copyright SYSTEM "http://www.iformacion.com/entidades.dtd">
Ejemplo XML:
<author>&autor;&copyright;</author>

2.3 XSD
Al igual que un DTD, un XSD (XML Schema Definition) sirve para definir la estructura de un
documento XML. Estos se pueden considerar los sucesores de los DTDs pues son ms potentes en
cuanto a la capacidad que presentan para describir XML. Entre las mejoras que presentan podemos
destacar:

Soportan tipos de datos permitiendo describir el contenido del documento XML, validar la
correccin de los datos, definir patrones del formato de datos e incluso conversiones entre
diferentes tipos de datos.
Los esquemas XSD se escriben en formato XML.

6 de febrero de 2008

Tema 8

10

Los esquemas son extensibles por estar escritos mediante XML, lo que permite reutilizar
esquemas, definir tipos de datos derivados de tipos de datos estndares, etc.

Antes de definir ms detalladamente cada uno de los bloques que componen un XSD, vamos a ver
el fichero XSD que describe el ejemplo de documento XML que ya hemos visto anteriormente para
DTD:
ejemploXML.xml
<?xml version="1.0?>
<correo
xmlns="http://www.iformacion.com"
xmlns:xsi="http://www.w3.org/2001/XMLSche
ma-instance"
xsi:schemaLocation="http://www.iformacion.co
m ejemploXSD.xsd">
<para>Jesus</para>
<de>Juan</de>
<resumen>Recuerda</resumen>
<cuerpo>El curso de Java empieza el 22 de
septiembre</cuerpo>
</correo>

ejemploXSD.xsd
<?xml version="1.0"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchem
a"
targetNamespace="http://www.iformacion.com"
xmlns="http://www.iformacion.com"
elementFormDefault="qualified">
<xs:element name="correo">
<xs:complexType>
<xs:sequence>
<xs:element name="para"
type="xs:string"/>
<xs:element name="de" type="xs:string"/>
<xs:element name="resumen"
type="xs:string"/>
<xs:element name="cuerpo"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Como podemos ver en este ejemplo el elemento raz de un fichero XSD es la etiqueta
<xs:schema> donde los atributos indican los servidores de donde proceden la definicin de los
elementos y tipos de datos (namespace) utilizados en el fichero.
A continuacin definimos el resto de elementos que se utilizan para definir un XML Schema.
Elementos simples.
Un elemento simple es un elemento XML (etiqueta) que nicamente contiene texto, es decir,
no puede contener otros elementos ni atributos. Cuando se dice texto no se refiere solamente a
cadenas de caracteres, tambin se incluyen los tipos de datos definidos en los XML Schema
(bolean, string, date, etc) o nuevos tipos definidos por los usuarios. Adems, a los elementos
simples se le pueden aadir restricciones (facets) para delimitar el tipo de contenido o para que los
datos incluidos sigan un patrn determinado.
La sintaxis que se utiliza para definir los tipos simples es: <xs:element name="nombre_elemento"
type="tipo_dato"/>
Los esquemas XML tienen muchos tipos de datos predefinidos, los tipos ms usuales son string,
decimal, integer, bolean, date y time.
En la siguiente tabla vemos varios ejemplos de elementos simples, en la izquierda podemos ver la
6 de febrero de 2008

Tema 8

11

definicin XSD y en la derecha un ejemplo XML:


<xs:element name="nombre"
type="xs:string"/>
<xs:element name="edad"
type="xs:integer"/>
<xs:element name="fecha_nacimiento"
type="xs:date"/>

<nombre>Juan Atienza</nombre>
<edad>31</edad>
<fecha_nacimiento>1975-0101</fecha_nacimiento>

Elementos complejos.
Un elemento complejo es un elemento XML (etiqueta) que contiene otros elementos y/o
atributos. Existen cuatro tipos de elementos complejos:

elementos vacios,
elementos que contienen solo otros elementos,
elementos que contienen solo texto,
elementos que contienen otros elementos y texto.

Todos los tipos definidos pueden contener tambin atributos.


Veamos, mediante un ejemplo, las diferentes maneras en que podemos definir los elementos
complejos. Vamos a definir el elemento XML empleado que nicamente contiene otros elementos:
<empleado>
<nombre>Juan</nombre>
<apellidos>Atienza Garca</apellidos>
</empleado>
La primera forma de definir el elemento complejo empleado es declarndolo directamente:
<xs:element name=empleado>
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="apellidos" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Definiendo el empleado de la forma anterior, nicamente dicho elemento puede utilizar el tipo
complejo definido. A continuacin, vamos a redefinir el elemento empleado para que dicho tipo
complejo se pueda reutilizar:
<xs:element name="empleado" type="persona"/>
<xs:complexType name="persona">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="apellidos" type="xs:string"/>
</xs:sequence>
</xs:complexType>

6 de febrero de 2008

Tema 8

12

Definiendo el elemento del modo anterior, podemos reutilizar el tipo complejo persona en
diferentes elementos:
<xs:element name="empleado" type="persona"/>
<xs:element name="estudiante" type="persona"/>
<xs:element name="cliente" type="persona"/>
<xs:complexType name="persona">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="apellidos" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Incluso podemos utilizar dicho elemento complejo definido persona como base para otros
elementos aadindole nuevos elementos:
<xs:element name="empleado" type="persona_completa"/>
<xs:complexType name="persona">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="apellidos" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="persona_completa">
<xs:complexContent>
<xs:extension base="persona">
<xs:sequence>
<xs:element name="edad" type="xs:integer"/>
<xs:element name="direccion" type="xs:string"/>
<xs:element name="telefono" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Dentro de los elementos complejos se utilizan etiquetas especiales que sirven de indicadores para
controlar como se definen los elementos en el documento XML. Existen siete tipos de indicadores
agrupados en:

Indicadores de orden:
All: los elementos pueden aparecer en cualquier orden.
Choice: eleccin entre varios elementos.
Sequence: los elementos deben aparecer en el orden indicado.
Indicadores de ocurrencias:
maxOccurs: indica el mximo nmero de veces que puede aparecer un elemento.
minOccurs: indica el mnimo nmero de ocurrencias.
Indicadores de grupo:
Grupo de Elementos: agrupa un conjunto de elementos bajo el mismo nombre.
Grupo de atributos: agrupa un conjunto de atributos bajo el mismo nombre.

6 de febrero de 2008

Tema 8

13

Atributos.
Los elementos simples no pueden tener atributos, si un elemento tiene atributos se considera un
elemento complejo. Pero los atributos por si mismo se declaran como tipos simples. La sintaxis para
definir atributos es: <xs:attribute name="nombre_atributo" type="tipo_dato"/>
Los tipos de datos ms comunes prefijados por el XML Schema son string, decimal, integer, bolean,
date y time.
A

continuacin tenemos un ejemplo


<apellidos idioma="EN">Smith</apellidos>

de

elemento

XML

con

un

atributo:

Y la correspondiente definicin del atributo:


<xs:attribute name="idioma" type="xs:string"/>
Restricciones.
Las restricciones se utilizan para definir valores aceptables para los elementos XML y los
atributos. Las restricciones sobre los elementos XML se denominan facets.
La siguiente tabla enumera los tipos de restricciones que se pueden definir:
Restriccin
enumeration
fractionDigits
length
maxExclusive
maxInclusive
maxLength
minExclusive
minInclusive
minLength
pattern
totalDigits
whiteSpace

Descripcin
Define una lista de valores aceptables
Especifica el nmero mximo de dgitos decimales permitidos
Especifica el nmero exacto de caracteres o items de una lista
permitidos
Especifica el lmite superior un valor numrico
Especifica el lmite superior de un valor numrico (valor de lmite
incluido)
Especifica el nmero mximo de caracteres o items de una lista
permitidos
Especifica el lmite inferior un valor numrico
Especifica el lmite inferior de un valor numrico (valor de lmite
incluido)
Especifica el nmero mnimo de caracteres o items de una lista
permitidos
Define un patrn para una cadena de caracteres
Especifica el nmero exacto de digitos permitidos
Indica como tratar los espacios en blanco

En el siguiente ejemplo se define el elemento edad con una restriccin de tipo numrico dentro del
rango [0,120]:
<xs:element name="edad">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
6 de febrero de 2008

Tema 8

14

<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Tipos de datos.
Los tipos de datos que se pueden utilizar para definir los contenidos y se agrupan en cuatro clases:
1. String: este tipo de dato se compone de caracteres, tabuladores y retornos de carro.
2. Date y Time: especifican un tipo de fecha (<xs:date>), hora (<xs:time>) o fecha y hora
(<xs:datetime>).
3. Numeric: especifican un tipo numrico (decimal, integer, long, etc).
4. Misc: otro tipo de datos, entre estos nos encontramos bolean, flota, double, anyURI,
base64Binary, etc

6 de febrero de 2008

Tema 8

15

3 Estndar XSL: XPath, XSLT y XSL-FO


3.1 Introduccin XSL
XSL son las siglas de Extensible Stylesheet Language. La W3C empez a desarrollar este
lenguaje por la necesidad de definir una pgina de estilos para los documentos XML.
Cuando decimos pgina de estilos el alumno debera recordar el tema 2 donde estudi CSS que es la
forma de definir los estilos para los documentos HTML. XSL se puede considerar algo parecido
aunque el alumno tiene que tener en cuenta que es ms complejo, pues en HTML las etiquetas son
fijas y predefinidas y se puede definir de una forma sencilla la forma de dibujarlas y en cambio en
XML las etiquetas no son estndares sino que cada documento define las suyas propias y eso
implica mayor complejidad para poder definir la forma de representarlas.
En XSL se distinguen tres partes:

XPath: un lenguaje para navegar por los nodos de los documentos XML.
XSLT: un lenguaje para transformar los documentos XML.
XSL-FO: un lenguaje para formatear los documentos XML.

En los siguientes apartados de esta leccin estudiamos ms a fondo dichos lenguajes.

3.2 XPath (I)


XPath es el lenguaje para buscar informacin dentro de un documento XML. XPath se utiliza
para navegar a travs de los elementos y los atributos. Adems, proporciona una librera de
funciones estndares para tratar dicha informacin.
En XPath se distinguen siete tipos de nodos: elementos, atributos, texto, namespace, instrucciones,
comentarios y nodo raz (document). Los documentos XML se consideran como un rbol de nodos.
El nodo raz del rbol se denomina document.
Los nodos se encuentran relacionados y las relaciones tienen la siguiente denominacin:

Padre: cada elemento y atributo tiene un solo padre.


Hijo: los nodos pueden tener cero, uno o ms hijos.
Siblings (hermanos): nodos que tiene el mismo padre.
Antecesor: el padre de un nodo, el abuelo, etc.
Descendiente: el hijo de un nodo, el nieto, etc.

Sintaxis.
Xpath utiliza expresiones en forma de ruta (path expressions) para seleccionar nodos o conjuntos
de nodos de un documento XML. Estas rutas son muy parecidas a las rutas utilizadas en los
sistemas de ficheros. La siguiente tabla muestra las expresiones ms utilizadas:
Expresin
nombreNodo
/
//
.
6 de febrero de 2008

Descripcin
Selecciona todos los nodos hijo del nodo indicado
Selecciona desde el nodo raz
Selecciona nodos del documento desde el nodo actual sin importar
donde se encuentran
Selecciona el nodo actual
Tema 8

16

..
@

Selecciona el padre del nodo actual


Selecciona atributos

En XPath podemos buscar un nodo especfico o un nodo que contenga un valor especfico, este tipo
de expresiones se denomina predicado. Los predicados se escriben entre corchetes
(/libreria/libro[0]). Tambin podemos usar caracteres comodn (wildcards) para seleccionar
elementos XML desconocidos.
Wildcard
*
@*
node()

Descripcin
Identifica cualquier nodo de tipo elemento
Identifica cualquier nodo de tipo atributo
Identifica cualquier nodo de cualquier tipo

Adems, en las expresiones tenemos operadores de diversos tipos que podemos utilizar
(aritmticos, lgicos y de igualdad). Por ejemplo, con el operador | podemos seleccionar varias rutas
a la vez.
Veamos distintos ejemplos de seleccin con XPath, para ello utilizamos el siguiente documento
XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<libreria>
<libro>
<titulo idioma="es">Don Quijote de la Mancha</titulo>
<precio>39.95</precio>
</libro>
<libro>
<titulo idioma="eng">Harry Potter</titulo>
<precio>29.99</precio>
</libro>
</libreria>
A continuacin vemos los ejemplos de seleccin con Xpath:
Expresin
libreria
/libreria

libreria/libro
//libro
libreria//libro
//@idioma
/libreria/libro[0]

Resultado
Selecciona todos los nodos hijo del elemento libreria
Selecciona el elemento raiz libreria.
Nota: Si la ruta empieza con barra / se indica siempre una ruta absoluta a un
elemento
Selecciona todos los elementos libro que son hijo de libreria
Selecciona todos los elementos libro sin importar donde se encuentren dentro
del documento XML
Selecciona todos los elementos libro que sean descendientes del elemento
libreria sin importar donde se encuentre bajo el elemento libreria
Selecciona todos los atributos con nombre idioma
Selecciona el primer elemento libro que es hijo del elemento libreria

6 de febrero de 2008

Tema 8

17

/libreria/libro[last(
)]
//titulo[@idioma='
es']
/libreria/libro[prec
io>35.00]
/libreria/*
//*
//titulo[@*]
//libro/titulo |
//libro/precio

Selecciona el ltimo elemento libro que es hijo del elemento libreria


Selecciona todos los elementos titulo que tienen un atributo idioma con valor
es
Selecciona todos los elementos libro del elemento libreria que tengan un
elemento precio con un valor mayor de 35.00
Selecciona todos los nodos hijo del elemento libreria
Selecciona todos los elementos del documento XML
Selecciona todos los elementos titulo que tengan algn atributo
Selecciona los elementos titulo Y los elementos precio de todos los elementos
libro

3.3 XPath (II)


Ejes (Axes).
Un eje identifica un conjunto de nodos relativo al nodo actual.
Nombre del Eje
Ancestor

Resultado obtenido
Selecciona todos los antecesores (padre, abuelo, etc) del nodo actual

Ancestor-or-self

Selecciona todos los antecesores del nodo actual y el nodo actual incluido

Attribute

Selecciona todos los atributos del nodo actual

Child

Selecciona todos los hijos del nodo actual

Descendant

Selecciona todos los descendientes (hijos, nietos, etc) del nodo actual

descendant-or-self Selecciona todos los descendientes (hijos, nietos, etc) del nodo actual y el nodo
actual incluido
Following

Selecciona todo lo que queda de documento desde la etiqueta de cierre del


nodo actual

following-sibling

Selecciona todos los hermanos (siblings) despues del nodo actual

Namespace

Selecciona todos los nodos namespace del nodo actual

Parent

Selecciona el padre del nodo actual

Preceding

Selecciona todo lo que exista en el documento precediendo a la etiqueta de

6 de febrero de 2008

Tema 8

18

inicio del nodo actual


preceding-sibling

Selecciona todos los hermanos (siblings) anteriores al nodo actual

Self

Selecciona el nodo actual

Los ejes son la base de un paso. Un paso consiste en:

un eje (define la relacin entre los nodos seleccionados y el nodo actual),


un nodo de chequeo (identifica un nodo dentro de un eje),
cero o ms predicados (para realizar un refinamiento del conjunto de nodos seleccionados).

La sintaxis para un paso es: eje::nodo_chequeo[predicado]


Una ruta de localizacin se compone de uno o ms pasos separados por barras (/). Puede ser
absoluta o relativa:

Absoluta: /paso1/paso2/.
Relativa: paso1/paso2/

Veamos ejemplos de ejes, pasos y rutas de localizacin:


Ejemplo
child::libro

Resultado obtenido
Selecciona todos los nodos libro que son hijo del nodo actual

attribute::idioma

Selecciona el atributo idioma del nodo actual

child::*

Selecciona todos los hijos del nodo actual

attribute::*

Selecciona todos los atributos del nodo actual

child::text()

Selecciona todos los nodos hijo texto del nodo actual

child::node()

Selecciona todos los hijos nodo del nodo actual

child::*/child::prec Selecciona todos los nodos nieto precio del nodo actual
io

Funciones.
Xpath incluye ms de 100 funciones predefinidas. Con estas funciones podemos realizar
tratamiento de cadenas y nmeros, comparaciones de fechas, manipulacin de nodos, secuencias,
bolanos, etc.
La direccin URL donde se pueden
http://www.w3.org/2005/02/xpath-functions.
6 de febrero de 2008

consultar

Tema 8

todas

las

funciones

disponibles

es

19

3.4 XSLT
XSLT se utiliza para transformar un documento XML en otro documento XML u otro tipo de
documento que se pueda reconocer por un navegador como HTML o XHTML. Con XSLT se
pueden aadir y borrar elementos y atributos del documento XML de origen al de destino, incluso
se pueden reordenar los elementos y aadir instrucciones de control que permitan ocultar o mostrar
los elementos.
Se suele decir que el proceso de transformacin con XSLT convierte un rbol de origen XML a un
rbol resultado XML.
En el proceso de transformacin, XSLT va a utilizar XPath para definir partes del documento origen
que deben coincidir con uno o ms plantillas (templates) predefinidas. Cuando se encuentra una
coincidencipixelsa, XSLT transformar la parte que coincida del documento origen en el documento
resultado.
Veamos en detalle los elementos que componen un fichero XSLT.
Etiqueta
TEMPLATE

VALUE-OF
FOR-EACH

SORT

IF
CHOOSE

APPLYTEMPLATES

Descripcin
Este elemento se utiliza para construir plantillas.
El atributo match se utiliza para asociar una
plantilla con un elemento XML, el valor que
toma este atributo es una ruta XPath.
Este elemento se utiliza para extraer el valor de
un elemento XML y aadirlo a fichero resultado.
Este elemento se utiliza para seleccionar todos
los elementos XML de un conjunto de nodos. Se
pueden seleccionar todos, o bien, se puede filtrar
la salida aadiendo un criterio de seleccin al
atributo select del elemento.
Se utiliza para ordenar la salida. Para ordenar,
nicamente se debe aadir un elemento sort
dentro de un elemento for-each en el fichero
XSL.
Se utiliza para aadir una sentencia condicional
contra el contenido del documento XML.
Esta etiqueta se utiliza conjuntamente con
WHEN y OTHERWISE para aadir una
sentencia condicional mltiple.
Esta etiqueta aplica una plantilla (template) al
elemento actual o a los nodos hijo del elemento
actual. Si aadimos el atributo select a esta
etiqueta se procesarn nicamente los elementos
hijos que coincidan con el valor de dicho
atributo. Tambin se puede usar el atributo select
para especificar el orden en que sern procesados
los nodos hijo.

6 de febrero de 2008

Tema 8

Sintaxis
<xsl:template
match=ruta_Xpath>

<xsl:value-of
select="elementoXML"/>
<xsl:for-each
select="elementoXML">

<xsl:sort>

<xsl:if>
<xsl:choose>

<xsl:apply-templates>

20

3.5 XSL-FO
XSL-FO es un lenguaje de marcas que permite describir la forma de formatear un documento XML
para generar la salida en pantalla, papel u otro medio de salida.
Los documentos XSL-FO se guardan en documentos con la extensin .fo o .fob. Tambin es posible
encontrar estos documentos con la extensin .xml para poder hacer ms accesible la edicin de
dichos documentos con los editores XML. Tienen la siguiente estructura genrica:
<?xml version="1.0" encoding="ISO-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="MiPagina">
<! La plantilla de la pgina est aqu -->
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="MiPagina">
<! El contenido de la pgina viene aqu -->
</fo:page-sequence>
</fo:root>
Veamos el significado de las etiquetas que componen esta estructura:

<fo:root> es el elemento raz de todos los documentos XSL-FO, declara el namespace.


<fo:layout-master-set> dentro de esta etiqueta se declaran una o ms plantillas con el
formato de las pginas.
<fo:simple-page-master> este elemento contiene la plantilla de una pgina. Cada plantilla
tiene que tener un nombre nico.
<fo-page-sequence> describe el contenido de la pgina. El atributo master-reference hace
referencia al nombre de la plantilla (<simple-page-master>) con dicho nombre.

XSL-FO realiza una divisin en cajas rectangulares (reas) de los documentos. Toda la salida que se
pueda generar (texto, imgenes, etc) debe ser formateada dentro de stas reas. Se distinguen los
siguientes tipos de reas:

Pginas: todo el contenido se incluye dentro de una o ms pginas. Las pginas pueden
referenciar a plantillas que definan su layout. Entre la informacin a definir de una pgina
nos encontramos con el tamao, los mrgenes y las regiones.
Regiones: las pginas contienen regiones (region-body, region-before, region-after, regionstart, region-end). A continuacin, podemos ver una imagen que nos aclararn donde se
encuentra cada regin.
Bloques: las regiones se componen de bloques. Cada bloque es un pequeo elemento como
prrafos, tablas o listas. Los bloques pueden contener otros bloques aunque normalmente
contienen lneas.
Lneas: son las reas de texto que se incluyen dentro de los bloques.

6 de febrero de 2008

Tema 8

21

Veamos el clsico ejemplo de Hola Mundo realizado con XSL-FO.


<?xml version="1.0" encoding="ISO-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hola Mundo</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
La etiqueta <fo:flow> contiene todos los elementos que van a ser impresos en la pgina. El atributo
flow-name define en que regin de la pgina se va a escribir el contenido.
6 de febrero de 2008

Tema 8

22

XSL-FO necesita software especfico que formatee y genere la salida, estos programas se
denominan procesadores XSL-FO. La mayora de estos programas generan la salida como
documentos PDF. Entre los ms conocidos se encuentran los siguientes:

XSL Formatter de Antena House (http://www.antennahouse.com).


Xinc Beta Release de Lunasil LTD (http://www.lunasil.com).
Scriptura de Inventive Designers (http://www.scriptura-xsl.com).
Apache FOP (http://xmlgraphics.apache.org/fop/).

6 de febrero de 2008

Tema 8

23

4 DOM y paquetes Java/XML


4.1 DOM
El XML Document Object Model (XML DOM) define el modo estndar para acceder y manipular
los documentos XML.
Definicin de DOM por la W3C: El Document Object Model (DOM) es una interface
independiente del lenguaje o la plataforma que permite a los programas el acceso y actualizacin
de forma dinmica del contenido, estructura y estilo de un documento.
El DOM presenta un documento XML como una estructura en forma de rbol (rbol de nodos)
compuesto de elementos, atributos y textos. El contenido de dicho documento puede ser consultado,
modificado, borrado o se pueden crear nuevos nodos. El DOM define:

El documento completo es el nodo documento.


Cada etiqueta XML es un nodo elemento.
El texto que contiene cada elemento XML son nodos de texto.
Cada atributo XML es un nodo atributo.
Los comentarios son nodos comentario.

Los textos se almacenan tambin en nodos. Un error normal programando con


DOM es navegar hasta un nodo elemento y esperar que contenga el texto. Por
ejemplo, en <dia>21</dia> hay un nodo elemento (dia) y un nodo de tipo texto bajo
l (21).
Todos los nodos en el rbol DOM estn interrelacionados. Los nodos del rbol siguen las siguientes
reglas y la siguiente denominacin:

Dentro del rbol de nodos, el nodo ms alto es el nodo raz.


Cada nodo, excepto el raz, tiene un nico nodo padre.
Un nodo puede tener cero, uno o ms nodos hijo.
Un nodo hoja es un nodo sin hijos.
Los nodos hermano (sibling) son nodos con el mismo padre.

En la siguiente imagen podemos ver un documento XML como rbol DOM y la relacin entre los
diferentes nodos:

6 de febrero de 2008

Tema 8

24

A continuacin, vamos a ver dos formas para navegar y acceder a los nodos de un documento XML
con DOM. Para consultar que mtodos existen para modificar, borrar o crear nodos podis hacerlo
en la siguiente direccin http://www.w3schools.com/dom/default.asp.
La primera forma de acceder a los elementos es mediante el mtodo
getElementsByTagName(nombreNodo). Este mtodo devuelve todos los elementos (como una
estructura nodeList) con el nombre especificado como parmetro que son descendientes del
elemento sobre el que nos encontremos (independientemente del nivel al que se encuentren).
La segunda manera de navegar entre los nodos es utilizando las relaciones que existen entre ellos.
Para ello utilizamos las siguientes propiedades de los nodos de tipo elemento:
parentNode, childNodes, firstChild, lastChild, nextSibling y previousSibling. En la siguiente
imagen podemos ver como se relacionan los nodos con las propiedades anteriores.

6 de febrero de 2008

Tema 8

25

Adems, existe una propiedad especial (document.documentElement) que devuelve el nodo raz del
documento XML.

4.2 Java API para XML (JAXP)


El API que proporciona Java para procesar XML (JAXP) incluye las facilidades bsicas para
trabajar con XML. JAXP contiene los analizadores SAX (Simple API for XML Parsing) y DOM
(Document Object Model) para que podamos elegir entre analizar nuestro documento XML como
streams de eventos o construir una representacin de objetos (el rbol de nodos DOM visto en el
apartado anterior). JAXP tambin soporta el estndar XSLT (XML Stylesheet Language
Transformations), dndonos control sobre la representacin de los datos y permitindonos
convertir los datos a otros documentos XML o a otros formatos, como a HTML.
API SAX.
SAX define un API para un analizador basado en eventos. Estar "basado en eventos" significa que
el analizador lee un documento XML desde el principio hasta el final, y cada vez que reconoce una
sintaxis de construccin, se lo notifica con un evento a la aplicacin que lo est ejecutando.
El analizador SAX notifica a la aplicacin llamando a los mtodos del interface ContentHandler.
Por ejemplo, cuando el analizador encuentra un smbolo ("<"), llama al mtodo startElement;
cuando encuentra caracteres de datos, llama al mtodo characters; y cuando encuentra un smbolo
("</"), llama al mtodo endElement, etc.
El programador debe sobreescribir estos mtodos para poder procesar los datos de las etiquetas de
la forma que su aplicacin necesite, por ejemplo, guardando estos datos en la base de datos.
API DOM.
El API "Document Object Model" (DOM), definido por la W3C y visto en el apartado anterior, es
un conjunto de interfaces para construir una representacin de objeto, en forma de rbol, del
documento XML analizado.
Una vez que hemos construido el DOM, podemos manipularlo con mtodos DOM como insert y
remove, igual que manipularamos cualquier otra estructura de datos en forma de rbol. As, al
contrario que un analizador SAX, un analizador DOM permite acceso aleatorio al documento XML.
Otra diferencia es que con un analizador SAX, slo podemos leer un documento XML, mientras
que con un analizador DOM, podemos construir una representacin en forma de objeto del
documento XML y manipularlo en memoria, aadiendo, modificando o eliminando elementos.
API XSLT.
XSLT (XSL Transformations), definido por el grupo de trabajo XSL de la W3C, describe un
lenguaje para transformar documentos XML en otros documentos XML o en otros formatos. Para
realizar la transformacin, normalmente necesitamos suministrar una hoja de estilo, que est escrita
en "XML Stylesheet Language" (XSL). La hoja de estilo XSL especfica como se mostrarn los
datos XML. XSLT usa las instrucciones de formateo de la hoja de estilo para realizar la
6 de febrero de 2008

Tema 8

26

transformacin. El documento convertido puede ser otro documento XML o un documento en otro
formato, como HTML.
JAXP soporta XSLT con el paquete javax.xml.transform, que nos permite enchufar un transformer
XSLT para realizar las transformaciones. Los subpaquetes tienen APIs de streams espeficicos, de
SAX-, y de DOM-, que nos permiten realizar transformaciones directamente desde rboles DOM y
eventos SAX.
Para poder profundizar en estos APIs podes leer los rticulos y tutoriales de los siguientes links:
- SAX:
http://www.javahispano.org/contenidos/es/mapeo_de_xml_a_java_parte_1/?menuId=ARTICLES&
onlypath=true y
http://www.javahispano.org/contenidos/es/mapeo_de_xml_a_java_parte_2__final/?menuId=ARTIC
LES&onlypath=true.
- DOM:
http://www.javahispano.org/contenidos/es/xml_desde_java_hecho_fcil_jdom/?menuId=ARTICLES
&onlypath=true y
http://www.javahispano.org/contenidos/es/xml_desde_java_hecho_fcil_jdom_parte_2/?menuId=AR
TICLES&onlypath=true.
- XSLT: http://www.programacion.com/java/tutorial/apis_xml/2/#xslt1. Servicios Web con J2EE

6 de febrero de 2008

Tema 8

27

5 Servicios web con J2EE


5.1 Introduccin a los servicios Web
Un Web Service (WS) o Servicio Web es una aplicacin que puede ser descripta, publicada,
localizada, e invocada a travs de una red, generalmente Internet. Los WS desde el punto de
vista del cliente son componentes que se encuentran dentro de una caja negra, que pueden ser
utilizados sin preocuparse de como fueron implementados, y ser accedidos utilizando XML
(SOAP), generalmente sobre HTTP.
La arquitectura bsica del modelo de WS describe un consumidor, un proveedor y ocasionalmente
un corredor (broker) y relacionados con estos agentes estn las operaciones de publish (publicar),
find (encontrar) y bind (enlazar).

Las tecnologas necesarias para desarrollar o consumir un WS son:

XML ( eXtensible Markup Language): una forma estndar de representar los datos.
SOAP (Simple Object Access Protocol): un formato comn y extensible de mensaje.
WSDL (Web Services Definition Language): un lenguaje comn y extensible para
describir los servicios, basado en XML.
UDDI (Universal Description Discovery and Integration): una forma de descubrir los
servicios en Internet, basado en XML.

A continuacin voy a copiar la definicin que realizada en una presentacin de los servicios web
por lo claridad con que explica dicho concepto:
"Un Web Service es un componente de software que se comunica con otras aplicaciones
codificando los mensaje en XML y enviando estos mensaje a travs de protocolos estndares de
Internet tales como el Hypertext Transfer Protocol (HTTP). Intuitivamente un Web Service es
similar a un sitio web que no cuenta con un interfaz de usuario y que da servicio a las aplicaciones
en vez de a las personas. Un Web Service, en vez de obtener solicitudes desde el navegador y
retornar pginas web como respuesta, lo que hace es recibir solicitudes a travs de un mensaje
formateado en XML desde una aplicacin, realiza una tarea y devuelve un mensaje de respuesta
tambin formateado en XML.
Microsoft y otras empresas lderes estn promocionando SOAP como estndar de los mensajes
para los Web Services. Un mensaje SOAP se parece mucho a una carta : es un sobre que contiene
6 de febrero de 2008

Tema 8

28

una cabecera con la direccin del receptor del mensaje , un conjunto de opciones de entrega (tal
como la informacin de encriptacin), y un cuerpo o body con la informacin o data del mensaje.
Microsoft y otros proveedores lderes promocionan los Web Services como un modelo de
programacin para la comunicacin entre aplicaciones. Estas compaas piensan que la conexin
de aplicaciones a travs de la Internet mejorar la capacidad de las empresas para trabajar
conjuntamente con sus socios de negocio, proveedores y clientes. Creando una capa de Web
Services sobre una aplicacin corporativa existente, las organizaciones podrn permitir que
sistemas externos puedan invocar las funciones de la aplicacin a travs de Internet (o una intranet
corporativa) sin tener que modificar la aplicacin misma. Por ejemplo, varias compaas estn hoy
en da creando Web Services que actan como front end para aplicaciones de entrada de rdenes
que estn residentes internamente en un mainframe. Estas compaas permiten a los sistemas de
compras de sus clientes enviar rdenes de compra a travs de la Internet. Poner una capa de web
services sobre las aplicaciones existentes es una solucin muy interesante para integrar las
aplicaciones desarrolladas por los diferentes departamentos y as reducir los costos de
integracin."

5.2 SOAP
Definicin de wikipedia de SOAP: SOAP (siglas de Simple Object Access Protocol) es un
protocolo estndar creado por Microsoft, IBM, JoEve y otros, est actualmente bajo el auspicio de
la W3C, que define cmo dos objetos en diferentes procesos pueden comunicarse por medio de
intercambio de datos XML. SOAP es uno de los protocolos utilizados en los servicios Web.
Qu es SOAP?

Un protocolo para el intercambio de informacin en un entorno descentralizado y


distribuido.
Utilizado, generalmente, sobre el protocolo HTPP.
Un estndar para el envo de datos XML.
Bsicamente, define un estndar de cmo representar la invocacin de mtodos utilizando
un sistema de peticin y respuesta como es HTTP.

Los mensajes en SOAP siguen la siguiente estructura:

Como ejemplo, veamos la forma en que un cliente solicitara informacin de un producto


(getProductDetails) a un proveedor de servicios Web utilizando SOAP:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
6 de febrero de 2008

Tema 8

29

<soap:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productId>827635</productId>
</getProductDetails>
</soap:Body>
</soap:Envelope>
Para obtener una informacin ms detallada podis consultar la documentacin de la W3C
(http://www.w3.org/TR/soap12-part0/).

5.3 WSDL
El WSDL (Lenguaje de Descripcin de Servicios Web) nos permite describir en formato XML
un servicio Web. Un documento WSDL proporciona la informacin necesaria al cliente para
interaccionar con el servicio Web. WSDL es extensible y se pude utilizar para describir,
prcticamente, cualquier servicio de red, incluyendo SOAP sobre HTTP e incluso protocolos que no
se basan en XML como DCOM sobre UDP.
Un documento WSDL utiliza los siguientes elementos en la definicin los servicios:
<definitions name="serviceName">
<types> </ types>
<message name="myMsg"> </ message>
<portType name="myPort">
<operation name="myOperation"> </operation>
</portType>
<binding name="myBinding" type="myPort"> </ binding>
<service name="mySvc">
<port name="myPort"> ... </port>
</ service>
</definitions>
donde nos encontramos las siguientes partes:

types: contenedor de definiciones del tipo de datos que utiliza algn sistema de tipos (por
ejemplo XSD).
message: definicin abstracta y escrita de los datos que se estn comunicando.
portType: conjunto abstracto de operaciones admitidas por uno o ms puntos finales.
operation: descripcin abstracta de una accin admitida por el servicio.
binding: especificacin del protocolo y del formato de datos para un tipo de puerto
determinado.
service: coleccin de puntos finales relacionados.
port: punto final nico que se define como la combinacin de un enlace y una direccin de
red.

Para obtener una informacin ms detallada podis consultar la documentacin de la W3C


(http://www.w3.org/TR/wsdl).

5.4 UDDI
UDDI (Universal Description, Discovery and Integration) es uno de los estndares bsicos de los
servicios Web cuyo objetivo es ser accedido por los mensajes SOAP y dar paso a documentos
6 de febrero de 2008

Tema 8

30

WSDL, en los que se describen los requisitos del protocolo y los formatos del mensaje solicitado
para interactuar con los servicios Web del catlogo de registros. UDDI es una iniciativa industrial
abierta, sufragada por la OASIS.
Definido con otras palabras, UDDI es un registro pblico diseado para almacenar de forma
estructurada informacin sobre empresas y los servicios que stas ofrecen. A travs de UDDI,
se puede publicar y descubrir informacin de una empresa y de sus servicios. Se puede utilizar
sistemas taxonmicos estndar para clasificar estos datos y poder encontrarlos posteriormente en
funcin de la categorizacin. Lo ms importante es que UDDI contiene informacin sobre las
interfaces tcnicas de los servicios de una empresa. A travs de un conjunto de llamadas a API XML
basadas en SOAP, se puede interactuar con UDDI tanto en tiempo de diseo como de ejecucin
para descubrir datos tcnicos de los servicios que permitan invocarlos y utilizarlos.
Para obtener una informacin ms detallada podis consultar la documentacin de OASIS
(http://www.uddi.org/specification.html).

5.5 Web Services y Java / J2EE


Los siguientes APIs son los estndares que existen en Java para el tratamiento con XML, SOAP,
UDDI:

JAXP: Java API para el procesamiento XML


JAXM: Java API para mensajera XML (SOAP).
JAX-RPC: Java API para XML RPC.
JAXR: Java API para registros XML (acceso a UDDI).
JAXB: Java API para XML Data Binding.

Dentro del entorno J2EE, los Servicios Web se pueden considerar como otra posible interfaz de
acceso a los servicios ofrecidos por una aplicacin. La mayora de las herramientas existentes para
generar los WS en Java se basan en los Servlets.

A continuacin vamos a enumerar varios entornos para la implementacin de Servicios Web en


Java:

Suns Web Services Developer Pack


(http://java.sun.com/webservices/downloads/previous/webservicespack.jsp).

6 de febrero de 2008

Tema 8

31

Apache SOAP.
Apache Axis (http://ws.apache.org/axis/).
Mind Electrics Glue (http://www.themindelectric.com/glue/index.html).
Systinet Server for Java (http://www.systinet.com/products/ssj/overview).
Servidores de Aplicaciones J2EE (Jboss, Weblogic).
Java IDEs (Eclipse, Netbeans, IDEA)

6 de febrero de 2008

Tema 8

32

Вам также может понравиться