Академический Документы
Профессиональный Документы
Культура Документы
TEMA 8
0 Licencia
Usted es libre de:
Copiar, distribuir y comunicar pblicamente la obra
Hacer obras derivadas
uso
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.
6 de febrero de 2008
Tema 8
6 de febrero de 2008
Tema 8
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.
6 de febrero de 2008
Tema 8
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>
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'>
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:
6 de febrero de 2008
Tema 8
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:
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.
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.
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.
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
<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.
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
de
elemento
XML
con
un
atributo:
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
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.
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
..
@
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
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
Child
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
following-sibling
Namespace
Parent
Preceding
6 de febrero de 2008
Tema 8
18
Self
Absoluta: /paso1/paso2/.
Relativa: paso1/paso2/
Resultado obtenido
Selecciona todos los nodos libro que son hijo del nodo actual
attribute::idioma
child::*
attribute::*
child::text()
child::node()
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:
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
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:
6 de febrero de 2008
Tema 8
23
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.
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
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?
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.
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).
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.
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