Vous êtes sur la page 1sur 16

MANUAL XML

INDICE
Introduccin al lenguaje de marcas XML - Empezando a ver que es XML.
Operador (+): una o muchas apariciones de un nodo - Este y otros operadores son fundamentales para
defnir la estructura de un documento XML.
Operador (|): aparicin de uno u otro elemento - Permite defnir varios elementos como vlidos.
Utilizacin de los atributos en los nodos - Para defnir qu! elementos pueden llevar atri"utos y
cuales.
Tipo de atributo I - El atri"uto #$ identifca cada elemento de forma %nica.
T !s XML"#c$ema - &omparacin de estos dos m!todos.
X#L: 'o(as de estilo para la transformacin de dctos XML - )ransformacin de dctos XML a otros dctos
XML.
%&presiones de acceso a nodos XML con Xpat$ - *tro m!todo para acceder a los nodos.
ise'o de (ojas de estilos X#L - &reando las primeras ho(as de estilo X+L.
)rocesamiento )rocedural - *tra forma de aplicar plantillas ,templates-.
Trans*ormacin de +c$eros XML con ,pac$e ,nt " Trans*ormacin de arc$i!os XML con X#L -
,nt.
Objetos de /ormato - Permiten transformar el documento XML en otros documentos como por e(emplo
P$..
escripcin del proceso de generacin de )/s - &onvirtiendo fcheros XML a P$..
0reacin de una $oja de estilos X#L 1ue trans*ormar2 el documento XML en un +c$ero X#L"
/O - /til para la 0eneracin de datos dinmica.
(erramientas para el trabajo con XML - Para se0uir tra"a(ando con XML.
INTRODUCCION AL LENGUAJE DE MARCAS XML
Un dcto XML es vlido si ha sido asociado a un dcto de definicin de tipos y si el dcto cumple las
restricciones expresadas en l. El dcto de definicin de tipos !"!# tiene $ue aparecer antes del primer elemento
del dcto. El nom%re $ue si&ue a !'(")*E en el !"! de%e ser el mismo $ue el nom%re del elemento ra+,.
E-emplo ./
Un dcto puede contener slo el elemento ra+, tutorial con al&0n texto/
12ELEMEN" tutorial 3*(!A"A#4
Un documento vlido $ue contiene al&0n texto/
12!'(")*E tutorial 5)5"EM 6tutorial.dtd64
1tutorial4Este es un documento XML17tutorial4
Este documento tam%in es vlido
12!'(")*E tutorial 5)5"EM 6tutorial.dtd64 1tutorial74
Elementos padre/hio en los d!tos XML Un tipo elemento puede contener otros elementos hi-os. En
este caso no podr tener nin&0n texto8 tan slo elementos opcionalmente separados por espacios en %lanco.
E-emplo 9/
El elemento ra+, XXX de%e contener 0nicamente un elemento AAA se&uido de otro elemento :::. Los
elementos AAA y ::: pueden contener texto pero no otros elementos.
12ELEMEN" XXX AAA 8 :::#4
12ELEMEN" AAA 3*(!A"A#4
12ELEMEN" ::: 3*(!A"A#4
Un dcto vlido $ue contiene al&0n texto
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA4(omien,o17AAA4
1:::4;in17:::4
17XXX4
Este dcto tam%in es vlido
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1AAA74 1:::74 17XXX4
.
O"ERADOR #$% N<N=UNA8 UNA ' MU(>A5 A*A?<(<'NE5 !EL N'!'
5i el nom%re de un elemento en una !"! va se&uido por un asterisco @AB8 este elemento puede aparecer
nin&una8 una o muchas veces.
E-emplo C/
El elemento ra+, XXX puede contener nin&uno8 uno o varios elementos AAA se&uido de exactamente un
elemento :::. El elemento ::: tiene $ue estar siempre presente.
12ELEMEN" XXX AAAA 8 :::#4
12ELEMEN" AAA 3*(!A"A#4
12ELEMEN" ::: 3*(!A"A#4
Un dcto vlido
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1AAA74 1:::74 17XXX4
'tro dcto vlido. El elemento AAA no es o%li&atorio
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1:::74 17XXX4
Ms de un elemento AAA puede aparecer dentro del dcto
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1AAA74 1AAA74 1AAA74 1AAA74 1AAA74 1AAA74 1AAA74 1:::74 17XXX4
O"ERADOR #&%' UNA ' MU(>A5 A*A?<(<'NE5 !E UN N'!'
5i el nom%re de un elemento en una !"! est se&uido por el carcter ms @DB8 este elemento tiene $ue
aparecer una o ms veces .
E-emplo E/
El elemento ra+, XXX de%e contener uno o ms elementos AAA se&uidos de exactamente un elemento
:::. El elemento ::: tiene $ue estar siempre presente.
12ELEMEN" XXX AAAD 8 :::#4
12ELEMEN" AAA 3*(!A"A#4
12ELEMEN" ::: 3*(!A"A#4
Un documento vlido
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1AAA74 1:::74 17XXX4
*ueden aparecer varios elementos AAA en el documento
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1AAA74 1AAA74 1AAA74 1AAA74 1AAA74
1AAA74 1AAA74 1:::74 17XXX4
O"ERADOR #(%/ (E?' ' UNA A*A?<(<FN !E UN N'!' N'!' '*(<'NAL#.G
5i el nom%re de un elemento en la !"! est se&uido por un si&no de interro&acin @HB8 este elemento
puede aparecer nin&una o una ve,.
E-emplo I/
El elemento ra+, XXX puede contener un elemento AAA se&uido de exactamente un elemento :::. El
elemento ::: tiene $ue estar siempre presente/
12ELEMEN" XXX AAAH 8 :::#4
12ELEMEN" AAA 3*(!A"A#4
12ELEMEN" ::: 3*(!A"A#4
Un documento vlido/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1AAA74 1:::74 17XXX4
El elemento AAA no es o%li&atorio/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4 1:::74 17XXX4
(om%inacin de los operadores D8 A y H.G Este e-emplo usa una com%inacin de @ D A HB
E-emplo J/
El elemento ra+, XXX puede contener un elemento AAA se&uido de uno o ms elementos :::. El
elemento AAA puede contener un elemento ((( y varios elementos !!!. El elemento ::: tiene $ue contener8
exactamente8 un elemento ((( y un elemento !!!/
12ELEMEN" XXX AAAH 8 :::D#4
12ELEMEN" AAA (((H 8 !!!A#4
9
12ELEMEN" ::: ((( 8 !!!#4
12ELEMEN" ((( 3*(!A"A#4
12ELEMEN" !!! 3*(!A"A#4
Un documento vlido/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA4
1(((741!!!74
17AAA4
1:::4
1(((741!!!74
17:::4
17XXX4
Los elementos en AAA no son o%li&atorios/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA74
1:::4
1(((741!!!74
17:::4
17XXX4
El elemento AAA no puede ser omitido/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1:::4
1(((741!!!74
17:::4
17XXX4
O"ERADOR #)%' A"ARICION DE UNO U OTRO ELEMENTO
(on el carcter @ K B se puede seleccionar uno de entre varios elementos.
E-emplo L/
El elemento ra+, XXX de%e contener un elemento AAA se&uido de un elemento :::. El elemento AAA
tiene $ue contener un elemento ((( se&uido de un elemento !!!. El elemento ::: tiene $ue contener %ien un
elemento ((( o %ien un elemento !!!/
12ELEMEN" XXX AAA 8 :::#4
12ELEMEN" AAA ((( 8 !!!#4
12ELEMEN" ::: ((( K !!!#4
12ELEMEN" ((( 3*(!A"A#4
12ELEMEN" !!! 3*(!A"A#4
Un documento vlido/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA4
1(((74 1!!!74
17AAA4
1:::4
1(((74
17:::4
17XXX4
'tro documento vlido/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA4
1(((74 1!!!74
17AAA4
1:::4
1!!!74
17:::4
17XXX4
C
<ntercalado de nodos y texto en un documento.G El texto puede ser intercalado con elementos.
E-emplo M/
El elemento AAA puede contener o %ien ::: o (((. *or otro lado el elemento ::: puede contener
cual$uier com%inacin de texto y elementos (((./
12ELEMEN" XXX AAAD 8 :::D#4
12ELEMEN" AAA ::: K ((( #4
12ELEMEN" ::: 3*(!A"A K ((( #A4
12ELEMEN" ((( 3*(!A"A#4
Un documento vlido $ue explora varias posi%ilidades/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA4
1(((4Exactamente un elemento.17(((4
17AAA4
1AAA4
1:::4
1(((74
1(((74
1(((74
17:::4
17AAA4
1:::74
1:::4
Esta es 1(((74 una com%inacin 1(((74 de 1(((4 elementos ((( 17(((4 y texto (((74.
17:::4
1:::4
5lo texto.
17:::4
17XXX4
UTILI*ACION DE LOS ATRI+UTOS EN LOS NODOS
Los atri%utos se usan para asociar pares nom%reGvalor con elementos. La especificacin de atri%utos slo
puede aparecer dentro de la eti$ueta de apertura y en los elementos vacios. La declaracin comien,a con
ATTLIST se&uido del nom%re del elemento al $ue pertenece el atri%uto y despus le si&ue la definicin
individual de cada atri%uto.
E-emplo N/
Un atri%uto del tipo CDATA puede contener cual$uier carcter si ste se atiene a las re&las de formacin.
Los atri%utos ,RE-UIRED de%en estar siempre presentes8 los ,IM"LIED son opcionales/
12ELEMEN" attri%utes 3*(!A"A#4
12A""L<5" attri%utes aaa (!A"A 3?EOU<?E! %%% (!A"A 3<M*L<E!4
Los atri%utos (!A"A pueden contener cual$uier caracter $ue se aten&a a las re&las/
12!'(")*E attri%utes 5)5"EM 6tutorial.dtd64
1attri%utes aaaP63d.6 %%%P6AQA64
"ext
17attri%utes4
El orden de los atri%utos es indiferente/
12!'(")*E attri%utes 5)5"EM 6tutorial.dtd64
1attri%utes %%%P6R9I6 aaaP6.CS64
"exto
17attri%utes4
El atri%uto %%% puede omitirse ya $ue es 3<M*L<E!/
12!'(")*E attri%utes 5)5"EM 6tutorial.dtd64
1attri%utes aaaP63d.6 74
Tipos de atri./tos CDATA8 NMTO0EN y NMTO0ENS.G
E
Un atri%uto del tipo CDATA puede contener cual$uier caracter si ste se atiene a las re&las de formacin.
5i es del tipo NMTO0EN slo puede contener letras8 d+&itos8 punto @ . B8 &uin @ G B8 su%rayado @ T B y dos puntos
@ / B . Los del tipo NMTO0ENS pueden contener los mismos caracteres $ue NM"'UEN ms espacios en %lanco.
Un espacio en %lanco consiste en uno o ms espacios8 retornos de carro o ta%uladores.
E-emplo .V/
Los atri%utos %%% y ccc siempre tienen $ue estar presentes8 el atri%uto aaa es opcional/
12ELEMEN" attri%utes 3*(!A"A#4
12A""L<5" attri%utes aaa (!A"A 3<M*L<E!
%%% NM"'UEN 3?EOU<?E!
ccc NM"'UEN5 3?EOU<?E!4
"odos los atri%utos o%li&atorios estn presentes y sus valores son del tipo correcto/
12!'(")*E attri%utes 5)5"EM 6tutorial.dtd64
1attri%utes aaaP63d.6 %%%P6a./.96 cccP6 C.E div GE674
"odos los atri%utos o%li&atorios estn presentes y sus valores son del tipo correcto/
12!'(")*E attri%utes 5)5"EM 6tutorial.dtd64
1attri%utes %%%P6a./.96 cccP6C.E div GE674
TI"O DE ATRI+UTO ID
El valor de un atri%uto de tipo <! puede contener slo caracteres vlidos en NM"'UEN y de%e
comen,ar con una letra. Nin&0n tipo de elemento puede tener especificado ms de un atri%uto de tipo <!. El valor
de un atri%uto <! de%e ser 0nico entre todos los valores de atri%utos <!.
E-emplo../
Los atri%utos id8 code y X determinan de manera ine$u+voca su elemento/
12ELEMEN" XXX AAAD 8 :::D 8 (((D#4
12ELEMEN" AAA 3*(!A"A#4
12ELEMEN" ::: 3*(!A"A#4
12ELEMEN" ((( 3*(!A"A#4
12A""L<5" AAA id <! 3?EOU<?E!4
12A""L<5" ::: code <! 3<M*L<E! list NM"'UEN 3<M*L<E!4
12A""L<5" ((( X <! 3?EOU<?E! ) NM"'UEN 3<M*L<E!4
"odos los valores <! son 0nicos/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA idP6a.674
1AAA idP6a9674
1AAA idP6aC674
1::: codeP6OWOG.9CG.EGJ6 listP6.E/I674
1((( XP6,ero6 )P6.J6 74
17XXX4
Los atri%utos list e ) son del tipo NM"'UEN no <!. Xstos pueden tener8 por lo tanto8 el mismo valor $ue
los atri%utos <! o tener el mismo valor en varios elementos/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA idP6L.9674
1::: codeP6OW6 listP6L.9674
1((( XP6xGV6 )P6OW6 74
1((( XP6xG.6 )P6OW6 74
17XXX4
Tipo de atri./to IDRE1 2 IDRE1S.G El valor de un atri%uto <!?E; tiene $ue corresponder con el valor
de al&0n atri%uto <! del documento. El valor del atri%uto <!?E;5 puede contener varias referencias a elementos
con atri%utos <! separados por espacios en %lanco.
E-emplo .9/
Los atri%utos id y marY determinan ine$u+vocamente su elemento. Los atri%utos ref hacen referencia a
estos elementos/
12ELEMEN" XXX AAAD 8 :::D8 (((D8 !!!D#4
12ELEMEN" AAA 3*(!A"A#4
12ELEMEN" ::: 3*(!A"A#4
12ELEMEN" ((( 3*(!A"A#4
12ELEMEN" !!! 3*(!A"A#4
I
12A""L<5" AAA marY <! 3?EOU<?E!4
12A""L<5" ::: id <! 3?EOU<?E!4
12A""L<5" ((( ref <!?E; 3?EOU<?E!4
12A""L<5" !!! ref <!?E;5 3?EOU<?E!4
"odos los valores <! son 0nicos y los valores <!?E; e <!?E;5 apuntan a elementos con <! relevante/
12!'(")*E XXX 5)5"EM 6tutorial.dtd64
1XXX4
1AAA marYP6a.674
1AAA marYP6a9674
1AAA marYP6aC674
1::: idP6%VV.6 74
1((( refP6aC6 74
1!!! refP6a. %VV. a9674
17XXX4

DTD 3S XML4SC5EMA E-emplo de documento XML para matr+cula
!efinicin &eneral del documento XML $ue representa la ima&en de matr+cula de un alumno $ue reali,a
la Automatr+cula en la Universitat Zaume <. En este documento no diferenciamos si su estructura interna va a ser
definida por un !"! o por un XMLG5chema ...
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1matricula4
1personal4
1dni4I9NEIM.C(17dni4
1nom%re4?icardo :orillo !omenech17nom%re4
1titulacion4En&inyeria <nform[tica *la 9VV.#17titulacion4
1cursoTacademico49VV979VVC17cursoTacademico4
1domicilios4
1domicilio tipoP6familiar64
1nom%re4(7 *rincipal n\.17nom%re4
17domicilio4
1domicilio tipoP6ha%itual64
1nom%re4(7 5ecundaria n\917nom%re4
17domicilio4
17domicilios4
17personal4
1pa&o4
1tipoTmatricula4Matr+cula ordin[ria17tipoTmatricula4
17pa&o4
17matricula4
En el caso de $ue $ueramos definir la estructura del documento mediante un XMLG5chema8 de%eremos
sustituir la ca%ecera del documento de la forma si&uiente/
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1matricula xmlns/xsiP6http/77]]].]C.or&79VV.7XML5chemaGinstance6
1si/noNamespace5chemaLocationP6prue%a.xsd64
...
17matricula4
5i por el contrario8 $ueremos se&uir utili,ando la estructura clsica de un !"!/
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
12!'(")*E matricula 5)5"EM 6matricula.dtd64
1matricula4
...
17matricula4
E-emplo de !"! para matr+cula.G
12EN"<") matricula personal8 pa&o#4
12EN"<") personal dni8 nom%re8 titulacion8 cursoTacademico8 domicilios#4
12EN"<") dni 3*(!A"A#4
12EN"<") nom%re 3*(!A"A#4
12EN"<") titulacion 3*(!A"A#4
12EN"<") cursoTacademico 3*(!A"A#4
12EN"<") domicilios domicilioD#4
J
12EN"<") domicilio nom%re#4
12A""L<5" domicilio tipo familiarKha%itual# 3?EOU<?E!4
12EN"<") nom%re 3*(!A"A#4
12EN"<") pa&o tipoTmatricula#4
12EN"<") tipoTmatricula 3*(!A"A#4
E-emplo de XMLG5chema para matr+cula.G
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1xs/schema xmlns/xsP6http/77]]].]C.or&79VV.7XML5chema6 xml/lan&P6E564
1xs/element nameP6matricula6 typeP6tMatricula674
1xs/complex"ype nameP6tMatricula64
1xs/se$uence4
1xs/element nameP6personal6 typeP6t*ersonal674
1xs/element nameP6pa&o6 typeP6t*a&o674
17xs/se$uence4
17xs/complex"ype4
1xs/complex"ype nameP6t*ersonal64
1xs/all4
1xs/element nameP6dni6 typeP6xs/strin&674
1xs/element nameP6nom%re6 typeP6xs/strin&674
1xs/element nameP6titulacion6 typeP6 xs/strin& 674
1xs/element nameP6cursoTacademico6 typeP6 xs/strin& 674
1xs/element nameP6domicilios6 typeP6t!omicilio674
17xs/all4
17xs/complex"ype4
1xs/complex"ype nameP6t*a&o64
1xs/all4
1xs/element nameP6tipoTmatricula6 typeP6 xs/strin& 674
17xs/all4
17xs/complex"ype4
1xs/complex"ype nameP6t!omicilio64
1xs/se$uence4
1xs/element nameP6domiclio6 max'ccursP6un%ounded64
1xs/complex"ype4
1xs/all4
1xs/element nameP6nom%re6 typeP6 xs/strin& 674
17xs/all4
17xs/complex"ype4
17xs/element4
17xs/se$uence4
17xs/complex"ype4
17xs/schema4
XML4S!hemas 2 RELAX NG64
Al i&ual $ue sur&i XML 5chema como una me-ora necesaria so%re la idea en la $ue se fundamenta%an
las !"!s8 han sur&ido distintas propuestas al mar&en de los 5chemas8 de estas ideas no vamos a $uedar con una8
?ELAX N=8 $ue es8 a su ve,8 la fusin de otras dos iniciativas "?EX y ?ELAX $ue para conse&uir un mayor
avance han decidido aunar fuer,as. :sicamente8 ?ELAX N= mane-a documentos XML $ue representan
es$uemas e instancias a travs de un modelo a%stracto de datos8 esto $ue suena un poco oscuro viene a $uerer
expresar $ue8 para ?ELAX N=8 un documento XML es la representacin de un elemento y $ue a su ve, un
elemento est formado por una serie de 6partes6 como son/ un nom%re8 un contexto8 un con-unto de atri%utos y
una secuencia ordenada de cero o ms hi-os. ) as+ con cada una de estas partes.
Aun$ue la especificacin completa se puede encontrar en 'A5<5L8 vamos a mostrar cuales son la
principales diferencias8 no tanto conceptuales si no de uso8 de ?ELAX N= con respecto a XML 5chema. En
primer lu&ar es importante resaltar $ue ?ELAX N=8 y sus precursores ?ELAX y "?EX8 son intentos de
simplificar y7o potenciar la utilidad de las !"!s en &eneral y en particular de XML 5chema. "am%in es
importante indicar $ue esta iniciativa no es oficial de WC.'?=8 si %ien est impulsndose dentro de un nutrido
&rupo de &ente lideradas por Zames (larY8 MU?A"A MaYoto8 y a0n no est reconocido por el estndar ni tan
si$uiera como recomendacin. En se&undo lu&ar8 podemos decir8 sin mucho mar&en de error8 $ue la principal
me-ora de ?ELAX N= respecto a XML 5chema es la mayor simplicidad en mane-o y aprendi,a-e $ue re$uiere.
(omo consecuencia de esta simplificacin renunciamos al uso de los 1simple"ype4 y 1complex"ype4 a favor del
L
uso de8 0nicamente8 elementos y ciertas eti$uetas especiales para marcar n0mero re$uerido de apariciones8 tipo de
dato de un elemento8 etc

XSL' 5OJAS DE ESTILO "ARA LA TRANS1ORMACION DE DOCUMENTOS XML
X5L es un len&ua-e creado para dar estilo a los documentos XML a los cuales se aplica. As+8 X5L es una
especificacin $ue se compone de partes o recomendaciones/
GXpath/ len&ua-e $ue permite escri%ir expresiones para la %0s$ueda de nodos dentro del r%ol XML.
GX5L"/ re&las o patrones para la transformacin del contenido de los nodos XML so%re los cuales se
consi&ue una correspondencia. 5i lo $ue $ueremos es &enerar p&inas >"ML a partir de documentos XML8
podemos complementar7sustituir X5L por (55.
G;ormattin& '%-ects/ actualmente8 constituye un len&ua-e de especificacin de estilo en %ase al cual nos
es posi%le la &eneracin de *!;s.
"atrones de trans7orma!i8n XSLT64
!efinicin de las ca%eceras de la p&ina X5L
E-emplo .J.
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1xsl/stylesheet xmlns/xslP6http/77]]].]C.or&7.NNN7X5L7"ransform6 versionP6..V64
...
17xsl/stylesheet4
El patr8n o template/ Elemento %sico de la p&inas de estilo
*ara cada nodo del r%ol XML tenemos la posi%ilidad de definir un patrn de estilos $ue marcar como
se va a presentar este nodo en el documento final. *or e-emplo8 si tenemos el si&uiente documento XML/
E-emplo .L/
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1test.4
1titulo4*rue%a de patrones X5L17titulo4
1descripcion4(uerpo del documento17descripcion4
17test.4
... y esta ho-a de estilos/
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1xsl/stylesheet xmlns/xslP6http/77]]].]C.or&7.NNN7X5L7"ransform6 versionP6..V64
1xsl/template matchP6test.64
1html4
1head4
1title41xsl/applyGtemplates selectP6titulo6 modeP6head67417title4
17head4
1%ody4
1xsl/applyGtemplates74
17%ody4
17html4
17xsl/template4
1xsl/template matchP6titulo6 modeP6head64
M
1xsl/valueGof selectP6text#674
17xsl/template4
1xsl/template matchP6titulo64
1h.41xsl/valueGof selectP6text#67417h.4
17xsl/template4
1xsl/template matchP6descripcion64
1hC41xsl/valueGof selectP6text#67417hC4
17xsl/template4
17xsl/stylesheet4
... el resultado de la transformacin ser el si&uiente/
1html4
1head4
1meta contentP6text7html^ charsetPU";GM6 httpGe$uivP6(ontentG"ype64
1title4*rue%a de patrones X5L17title4
17head4
1%ody4
1h.4*rue%a de patrones X5L17h.4
1hC4(uerpo del documento17hC4
17%ody4
17html4
En este e-emplo podemos apreciar varias instrucciones X5L/
..Uso de la instruccin 69sl'template6 para definir nuevos templates con los $ue se van a ir identificando
los nodos del documento XML. En los templates8 podemos utili,ar el atri%uto modificador 6mode6 con el fin de
poder llamar a un mismo template desde dos contextos distintos en los $ue $ueremos dos resultados distintos. Es
por esto $ue procesar el nodo 6title6 desde la ca%ecera o desde el cuerpo del documento >"ML8 va ha tener una
representacin distinta.
9.Uso de sentencias de procesamiento de templates como 69sl'appl24templates6. Esta instruccin lan,a
la %0s$ueda de templates a aplicar a partir del punto en el $ue nos encontremos del r%ol XML. 5i ya hemos
procesado el nodo titulo con un template _xsl/template matchP6titulo6_ y desde a$u+ $ueremos procesar la
descripcin8 no podremos utili,ar directamente un 6xsl/applyGtemplates6 ya $ue este nodo se encuentra en otro
punto de la -erar$u+a. A esta instruccin podemos aplicarle el atri%uto modificador 6sele!t68 para restrin&ir los
templates $ue se aplican a los de un tipo determinado.
EX"RESIONES DE ACCESO A NODOS XML CON X"AT5
E-s. de expresiones $ue podemos aplicar dentro del 6sele!t6 de una instruccin 69sl'appl24templates6/
GAcceso a todos los nodos 6titulo6/
1xsl/applyGtemplates selectP6titulo674
GAcceso a todos los nodos 6titulo6 $ue ten&an como padre a 6test.6/
1xsl/applyGtemplates selectP6test.7titulo674
GAcceso al nodo ra+, del documento XML/
1xsl/applyGtemplates selectP67674
GAcceso a todos los nodos 6titulo6 $ue ten&an como antecesor a 6test.6/
1xsl/applyGtemplates selectP6test.77titulo674
GAcceso al primero de los nodos 6titulo6 $ue ten&an como padre a 6test.6/
1xsl/applyGtemplates selectP6test.7titulo@.B674
GAcceso al 0ltimo de los nodos 6titulo6 $ue ten&an como padre a 6test.6/
1xsl/applyGtemplates selectP6test.7titulo@position#Plast#B674
GAcceso a los nodos 6titulo6 $ue sean pares y $ue ten&an como padre a 6test.6/
1xsl/applyGtemplates selectP6test.7titulo@position# mod 9 P VB674
GAcceso a todos los nodos 6titulo6 en cual$uier parte del documento/
1xsl/applyGtemplates selectP677titulo674
GAcceso a todos los nodos 6titulo6 en cual$uier parte del documento8 a partir del contexto actual/
1xsl/applyGtemplates selectP6.77titulo674
GAcceso a todos los nodos 6titulo6 $ue ten&an como 6a%uelo6 a 6test.6/
1xsl/applyGtemplates selectP6test.7A7titulo674
GAcceso a todos los nodos 6titulo6 $ue ten&an un atri%uto 6id6/
1xsl/applyGtemplates selectP6titulo@`idB674
GAcceso a todos los nodos 6titulo6 $ue N' ten&an un atri%uto 6id6/
1xsl/applyGtemplates selectP6titulo@not`id#B674
N
GAcceso a todos los nodos 6titulo6 $ue ten&an un atri%uto 6id6 con valor 6XXX6/
1xsl/applyGtemplates selectP6titulo@`idP_XXX_B674
GAcceso a todos los nodos 6test.6 $ue ten&an un hi-o 6titulo6 con valor 6XXX6/
1xsl/applyGtemplates selectP6test.@tituloP_XXX_B674
GAcceso a todos los nodos 6test.6 $ue ten&an un hi-o 6titulo6 con valor 6XXX68 normali,ando la
%0s$ueda8 es decir8 eliminado espacios en %lanco al inicio y final del nodo/
1xsl/applyGtemplates selectP6test.@normali,eGspacetitulo#P_XXX_B674
GAcceso a todos los nodos 6titulo6 o 6descripcion6/
1xsl/applyGtemplates selectP6tituloKdescripcion674
DISE:O DE 5OJAS DE ESTILOS XSL
5eleccin de valores individuales.
E-emplo.M/
*ara la seleccin de valores individuales8 extra+dos de los nodos del r%ol XML8 de%emos utili,ar la
instruccin 69sl';al/e4o768 con ella podemos hacer referencia tanto a nodos8 como varia%les8 clculos
matemticos8 etc. *ara el acceso a los nodos8 de%emos utili,ar las expresiones Xpath previamente descritas/
1xsl/valueGof selectP6matricula7personal7dni674
1xsl/valueGof selectP6Rvalor674
1xsl/valueGof selectP6CD9674
Templates 2 el modi7i!ador < mode <6
"emplates con nom%re/ este tipo de templates no se corresponden con nin&0n nodo del documento XML
y slo podemos invocarlos haciendo referencia a ellos directamente. 5u sentencia de definicin ya no incluye el
atri%uto 6match68 sino $ue este se sustituye por 6name6. *odemos aumentar las funcionalidades de este tipo de
templates pasndole parmetros. El ste e-. hace uso de la definicin de templates por nom%re y paso de
parmetros/
E-emplo .N/
!ocumento XML $ue usaremos como %ase/
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
.V
1test94
1titulo4*rue%a de patrones X5L17titulo4
1descripcion4(uerpo del documento17descripcion4
17test94
!ocumento X5L $ue aplica los templates por nom%re/
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1xsl/stylesheet xmlns/xslP6http/77]]].]C.or&7.NNN7X5L7"ransform6 versionP6..V64
1xsl/template matchP6test964
1html4
1head4
1title41xsl/applyGtemplates selectP6titulo6 modeP6head67417title4
17head4
1%ody4
1xsl/applyGtemplates74
1xsl/callGtemplate nameP6print64
1xsl/]ithGparam nameP6in641xsl/valueGof selectP67test97titulo67417xsl/]ithGparam4
17xsl/callGtemplate4
17%ody4
17html4
17xsl/template4
1xsl/template matchP6titulo6 modeP6head64
1xsl/valueGof selectP6text#674
17xsl/template4
1xsl/template matchP6titulo64
1h.41xsl/valueGof selectP6text#67417h.4
17xsl/template4
1xsl/template matchP6descripcion64
1hC41xsl/valueGof selectP6text#67417hC4
17xsl/template4
1xsl/template nameP6print64
1xsl/param nameP6in64Nothin&17xsl/param4
1i41xsl/valueGof selectP6Rin67417i4
17xsl/template4
17xsl/stylesheet4
?esultado de la transformacin/
1html4
1head4
1meta contentP6text7html^ charsetPU";GM6 httpGe$uivP6(ontentG"ype64
1title4*rue%a de patrones X5L17title4
17head4
1%ody4
1h.4*rue%a de patrones X5L17h.4
1hC4(uerpo del documento17hC4
1i4*rue%a de patrones X5L17i4
17%ody4
17html4
"ROCESAMIENTO "ROCEDURAL
*rocesamiento procedural8 otro enfo$ue para aplicar templates.
E-emplo 9V/
1xsl/forGeach selectP6ro]64
1xsl/forGeach selectP6col64
1xsl/applyGtemplates selectP6cell674
17xsl/forGeach4
17xsl/forGeach4
*rocesamiento condicional.
E-emplo 9./
..
1xsl/if testP6`atri%utoP_x_64
1h.4Este tipo de condicional no tiene EL5E17h.4
17xsl/if4
*rocesamiento condicional para varias opciones7compro%aciones.
E-emplo 99/
1xsl/choose4
1xsl/]hen testP6Rvaria%leP.641hC4aalor uno17hC417xsl/]hen4
1xsl/]hen testP6Rvaria%leP9641hC4aalor dos17hC417xsl/]hen4
1xsl/other]ise41h.4aaria%le con valor erroneo17h.417xsl/other]ise4
17xsl/choose4
?eportar errores desde la ho-a de estilos.
E-emplo 9C/
1xsl/messa&e4
1xsl/text4Este es el mensa-e de error 2217xsl/text4
1xsl/valueGof selectP6`atri%uto674
17xsl/messa&e4
(reacin de nuevos elementos dinmicamente.
E-emplo 9E/
1xsl/varia%le nameP6test64a17xsl/varia%le4
1xsl/element nameP6bRtestc64
1xsl/attri%ute nameP6href64http/77]]].si.u-i.es17xsl/attri%ute4
5ervei d_inform[tica
17xsl/element4
'rdenacin de elementos en X5L"
E-emplo 9I.
1xsl/template matchP6personal64
1xsl/applyGtemplates4
1xsl/sort selectP6dni6 dataGtypeP6strin&6 orderP6descendin&674
1xsl/sort selectP6cursoTacademico6 dataGtypeP6num%er6 orderP6ascendin&674
17xsl/applyGtemplates4
17xsl/template4
Expresiones matemticas
E-emplo 9J/
(onsideramos la existencia de dos nodos con valores numricos a partir de nuestro contexto8 cuyos
nom%res son 6x6 e 6y6/
1xsl/valueGof selectP6xDy674
1xsl/valueGof selectP6xGy674
1xsl/valueGof selectP6xAy674
1xsl/valueGof selectP6x div y674
1xsl/valueGof selectP6x mod y674
1xsl/valueGof selectP6sumA#674
1xsl/valueGof selectP6floorx#674
1xsl/valueGof selectP6ceilin&x#674
1xsl/valueGof selectP6roundx#674
1xsl/valueGof selectP6countA#674
1xsl/valueGof selectP6strin&Glen&thx#674
Uso de varia%les
E-emplo 9L/
1xsl/template matchP6pa&o64
1xsl/varia%le nameP6test6 selectP67matricula7pa&o7tipoTmatricula674
1xsl/valueGof selectP6Rtest674
17xsl/template4
.9

TRANS1ORMACION DE 1IC5EROS XML CON A"AC5E ANT
Ant es un sistema de compilacin %asado en Zava. 5u funcionalidad es similar a la de los clsicos
MaYefiles de UN<X8 aun$ue en lu&ar de poder extenderse mediante el uso de comandos del 5hell8 Ant puede
extenderse en %ase a clases Zava.
Ant e-ecuta un cto de o.eti;os o targets descritos en un fichero XML $ue se llama por def. 6%uild.xml6.
"odos los tar&ets en Ant se e-ecutan despus del tar&et ra+, init#.
En un fichero de compilacin de Ant podemos hacer $ue un tar&et dependa de otros con el fin de $ue no
se pueda reali,ar si todos los anteriores no se han completado.
E-emplo 9M/
E-emplo de fichero Ant en el $ue tenemos el tar&et ra+, y un se&undo tar&et $ue depende del ra+,.
1Hxml versionP6..V6H4
1pro-ect nameP6nom%reTdelTproyecto6 defaultP6tar&etTporTdefecto64
1tar&et nameP6init64
1echo messa&eP6Esta es la tarea rai, 226 74
17tar&et4
1tar&et nameP6html6 dependsP664
1echo messa&eP6Esta es la tarea html y re$uiere $ue la tarea rai, se haya completado primero 226 74
17tar&et4
17pro-ect4
Ant define una lista muy amplia de tareas $ue se pueden e-ecutar dentro de un tar&et8 como por e-emplo/
a;a!/ compila un fichero Zava.
a;a/ e-ecuta un fichero Zava.
ar/ empa$ueta un con-unto de recursos.
mail/ envi de mails.
7tp/ transmisin de ficheros por ;"*.
=ar/ empa$ueta una aplicacin Z9EE.
*odemos encontrar un listado completo de todas las tareas soportadas por Ant en la direccin
http/77ant.apache.or&7manual7index.html As+8 existen adems una serie de tareas relacionadas con el procesamiento
de ficheros XML/
9mlpropert2/ permite car&ar un fichero XML como propiedades de Apache Ant.
9slt/ transformacin de documento XML mediante ho-as de estilo X5L. 5lo podemos utili,ar esta tarea
si contamos con el .ZA? del Xalan procesador X5L" de Apache#.
9ml;alidate/ validacin de documentos XML utili,ando un interfa, 5AX.
.C
E-emplo 9N/
E-emplo de fichero Ant en el $ue se transforma un documento XML aplicando una ho-a de estilos X5L/
1Hxml versionP6..V6H4
1pro-ect nameP6nom%reTdelTproyecto6 defaultP6tar&etTporTdefecto64
1tar&et nameP6init6 74
1tar&et nameP6html6 dependsP6init64
1echo messa&eP6=enerando test.html ...6 74
1xslt inP6test.xml6 outP6test.html6 styleP6test.xsl64
1outputproperty nameP6method6 valueP6html674
1outputproperty nameP6standalone6 valueP6yes674
1outputproperty nameP6encodin&6 valueP6<5'GMMING.674
1outputproperty nameP6indent6 valueP6yes674
17xslt4
17tar&et4
17pro-ect4
O+JETOS DE 1ORMATO
El estndar X5L8 tal y como est definido actualmente8 se divide en dos &randes partes/
G XSLT/ transformacin de un documento de entrada XML en al&0n tipo de documento de salida8 ya sea
XML8 >"ML8 *!;8 etc.
G 1ormattin> O.e!ts/ se encar&an de definir la visuali,acin final del resultado de la transformacin.
El 0nico uso $ue se ha hecho en la actualidad de ;ormattin& '%-ects8 siempre ha estado enfocado a la
&eneracin de documentos de calidad destinados a la impresin. Este es el caso de los documentos *!;.
Implementa!iones disponi.les.G 5i $ueremos &enerar un *!; a partir de un documento en formato ;'8
podemos utili,ar los si&uientes con-untos de utilidades8 siendo las dos primeras de li%re distri%ucin/
G Apa!he 1O"/ A*< desarrollada por el proyecto Apache $ue permite la &eneracin de los *!;s en l+nea
de comandos o mediante llamadas al A*<.
G "assi;eTe9/ con-unto de macros La"eX $ue nos permiten la transformacin del documento XML a un
documento en "eX so%re el $ue podremos &enerar un *5 y posteriormente un *!;.
G XE"/ producto comercial de 6?enderX6 http/77]]].renderx.com # escrito en Zava.
G XSL 1ormatter/ producto comercial de 6Antenna >ouse6 http/77]]].antennahouse.com #
G Uni!orn 1ormattin> O.e!ts/ producto comercial de 6Unicorn Enterprises6 $ue adems es slo para
Windo]s http/77]]].unicornGenterprises.com #.
3entaas del /so de 1O para la >enera!i8n de do!/mentos.G
..5encillo mane-o de ciertas caracter+sticas de la &eneracin de documentos como/
G*a&inacin automtica.
G!efinicin de mr&enes para el documento.
G!efinicin de patrones distintos de presentacin para cada una de las ho-as.
G(ontrol 6al mil+metro6 de la presentacin de los elementos dentro del *!;.
G!efinicin simplificada de ca%eceras y pies de p&ina.
G*ermite la insercin de diversos elementos &rficos como/ im&enes8 ta%las8 etc.
9.*ermite definir la presentacin de cada elemento del documento en %ase a atri%utos muy similares8 en
la mayor+a de los casos8 a los atri%utos de una ho-a de estilos (55.
El A*< de Apache ;'* permite una &ran inte&racin con otras A*<s del proyecto Apache/
G;'* es una parte constituyente de (ocoon ;rame]orY para la pu%licacin de documentos XML
a travs de la ]e%#.
G;'* permite em%e%er &rficos 5a=8 renderi,ndolos a *N=s e insertndo el resultado dentro del
propio *!;.
(on X5LG;' podemos acometer varios aspectos en la &eneracin de dctos con calidad de impresin/
G!efinicin del tamado f+sico de la p&ina $ue se crear AE8 Letter8 etc#.
G(ontrol so%re propiedades de la p&ina como los mr&enes8 ca%eceras8 pies8 etc.
GUso de elementos clsicos dentro del documento como son los prrafos8 ta%las8 etc.
*osi%ilidad de dar formato de presentacin al texto &enerado8 cam%iando el tipo de fuente8 su tamado8 su
color y dems recursos &rficos.
DESCRI"CION DEL "ROCESO DE GENERACION DE "D1s repite lo anterior8 lo tienen mal#
.E
CREACION DE UNA 5OJA DE ESTILOS XSL -UE TRANS1ORMARA EL DOCUMENTO
XML EN UN 1IC5ERO XSL41O
(on el fin de $ue la informacion $ue se &enere en el documento X5LG;' de salida pueda ser dinamica8
haremos $ue los datos se almacenen en un documento XML8 transformndose en el documento de salida mediante
el uso de una ho-a de estilos X5L.
1Hxml versionP6..V6 encodin&P6<5'GMMING.6H4
1xsl/stylesheet versionP6..V6 xmlns/xslP6http/77]]].]C.or&7.NNN7X5L7"ransform6
mlns/foP6http/77]]].]C.or&7.NNN7X5L7;ormat64
1xsl/output encodin&P6<5'GMMING.6 indentP6yes674
1xsl/template matchP6listado64
1fo/root xmlns/foP6 http/77]]].]C.or&7.NNN7X5L7;ormat 64
1fo/layoutGmasterGset4
1fo/simpleGpa&eGmaster mar&inGri&htP6.cm6 mar&inGleftP6.cm6 mar&inG%ottomP6.cm6
mar&inGtopP6.cm6 pa&eG]idthP69.Vmm6 pa&eGhei&htP69NLmm6 masterGameP6first64
1fo/re&ionG%efore extentP6.cm 674
1fo/re&ionG%ody mar&inGtopP6.cm 6 mar&inG%ottomP6.cm 674
1fo/re&ionGafter extentP6.cm 674
17fo/simpleGpa&eGmaster4
17fo/layoutGmasterGset4
1fo/pa&eGse$uence masterGreferenceP6first64
1fo/flo] flo]GnameP6xslGre&ionG%ody64
1fo/%locY4
1xsl/valueGof selectP6ca%ecera6 74
17fo/%locY4
1fo/listG%locY spaceG%eforeP6V.Icm6 spaceGafterP6V.Icm6 fontGsi,eP6.9pt64
1xsl/applyGtemplates selectP6articulos7articulo6 74
17fo/listG%locY4
17fo/flo]4
17fo/pa&eGse$uence4
17fo/root4
17xsl/template4
1xsl/template matchP6articulo64
1fo/listGitem4
1fo/listGitemGla%el endGindentP6la%elGend#64
1fo/%locY textGali&nP6start64
1xsl/text4e3x9V99^17xsl/text4
17fo/%locY4
17fo/listGitemGla%el4
1fo/listGitemG%ody startGindentP6%odyGstart#64
1fo/%locY4
1xsl/valueGof selectP6text#674
17fo/%locY4
17fo/listGitemG%ody4
17fo/listGitem4
17xsl/template4
17xsl/stylesheet4
Ee!/tar la trans7orma!i8n !on /n parser XSL
5i vamos a utili,ar un procesador en l+nea de comandos como puede ser el X5L"*?'(8 la instruccin a
e-ecutar seria la si&uiente/
xsltproc sample.xsl sample.xml 4 sample.fo
5i vamos a utili,ar Apache AN". El fichero 6./ild69ml6 seria el si&uiente/
1Hxml versionP6..V6H4
1pro-ect nameP6procesandoGxml6 defaultP6fo64
1tar&et nameP6init6 74
1tar&et nameP6fo6 dependsP6init64
1echo messa&eP6=enerando sample.fo ...6 74
1xslt inP6sample.xml6 outP6sample.fo6 styleP6sample.xsl64
1outputproperty nameP6method6 valueP6xml674
1outputproperty nameP6standalone6 valueP6yes674
.I
1outputproperty nameP6encodin&6 valueP6<5'GMMING.674
1outputproperty nameP6indent6 valueP6yes674
17xslt4
17tar&et4
17pro-ect4
La e-ecucin de esta definicin nos permite tomar un fichero 6sample.xml6 como entrada8 aplicarle una
ho-a de estilos xsl 6sample.xsl6 y o%tener como salida un fichero 6sample.fo6 con el codi&o ;' correspondiente.
"ro!esamiento de di!ho 7i!hero XSL41O !on Apa!he 1O"
*ara o%tener finalmente el fichero *!; $ue $ueremos como resultado8 podemos e-ecutar el si&uiente
script $ue viene con la distri%ucin de Apache ;'*/
7opt7fopGV.9V.Irc97fop.sh sample.fo Gpdf sample.pdf

5ERRAMIENTAS "ARA EL TRA+AJO CON XML
5erramientas para el tra.ao !on XML.G
..XML
GApache Xerces Zava#
GE5uite *ython#
G5a%lotron ( y *>*#
9.X5L
Gxlstproc linea de comandos#
GApache Xalan Zava#
GZame_s (larY X" ( y Zava#
GE5uite *ython#
G5a%lotron ( y *>*#
C.;ormattin& '%-ects
GApache ;'* Zava#
G*assive "eX La"eX G linea de comandos y conocido como *!; La"eX#
Entornos de tra.ao !on XML.G
..*u%licacin de documentos XML aplicando plantillas X5L
GApache (ocoon Zava#
GAxUit *erl#
9.Edicin de documentos XML7X5L75chemas7;'
GXML 5py E.E ]indo]s#
GeXcelon 5tylus ]indo]s#
GEmacs modo *5=ML7X5L#
.J

Vous aimerez peut-être aussi