Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Transformacin
Procesador XSL
1 y3 2
Plantilla
)*
S+
4 8 3
Ti#os de nodos
)odo rai$ )odos de elemento )odos de te,to )odos de atributo )odos de es#acio de nombre )odos de instrucciones de #rocesamiento )odos de comentarios
5
<?xml version=1.0 encoding=I !"##$%"1 ?> -,sl7st&les1eet 6ersion/08390 ,mlns7,sl/:1tt#722;;;3;<3org28===2XSL2Transform0 ,mlns7fo/:1tt#722;;;3;<3org28===2XSL2Format0 result5ns/0fo04 . </xsl:st&lesheet>
6
<?xml version='1.0 encoding='I !"##$%"1 ?> <xsl:st&lesheet version='1.0 xmlns:xsl='http://(((.().org/1%%%/* +/,rans-orm ,mlns/:1tt#722;;;3;<3org2TR2R>C51tml?90 result5ns/:04 . </xsl:st&lesheet> <?xml version='1.0 encoding='I !"##$%"1 ?> <xsl:st&lesheet version='1.0 xmlns:xsl='http://(((.().org/1%%%/* +/,rans-orm xmlns='http://(((.().org/,././0"html10 res2lt"ns='> <xsl:template match='/> -HTML4 -H>@D4AAAA-2H>@D4 - *DB4AAAA-2 *DB4 -2HTML4 </xsl:template> <xsl:template match='todo> </xsl:template> . </xsl:st&lesheet>
<?xml version='1.0 encoding='I !"$$#%"1?> <xsl:st&lesheet> -,sl7tem#late matc1/:nodo04 . -2,sl7tem#late4 -,sl7tem#late matc1/:nodo0 . -2,sl7tem#late4 . </xsl:st&lesheet>
Patrones de locali!aci"n
Operador
/
Operadores de ruta
#tilidad
Separa los niveles de los nodos de su izquierda y derecha y selecciona los nodos hijos (de nivel inferior del nodo especificado Selecciona todos los descendientes (niveles inferiores del nodo especificado a su izquierda Selecciona el nodo actual Selecciona el nodo padre (de nivel superior del nodo actual #$presa alternativas Selecciona un nodo de atri&uto Selecciona todos los nodos *+rupa otros operadores
9
// ! !! " % ' ()
normas/norma norma/Version /normas/norma / normas//Siglas //Texto // ./Siglas .//Siglas . ../norma Siglas|Version Fecha/@orden norma/* Norma/@*
10
todos los nodos hi3os del elemento <normas> todos los nodos descendientes de <normas> todos los atri42tos de c2al52ier elemento 52e tengan el nom4re orden
*/norma/Texto|../norma//versin elementos <Texto> 52e son hi3os de <norma>, 52e p2eden estar a c2al52ier nivel del nodo act2al6 pero6 adicionalmente6 tam4i7n locali8a a los elementos <Versin> descendientes de <norma>, 52e a s2 ve8 de4e ser hi3o del padre del nodo act2al
11 1,
9odo rai86 o sea6 el doc2mento e:ala el elemento rai8 <escuela_verano> 9odo del elemento <curso> 9odo del elemento <estancia> 9odo del elemento <actividad>
/escuela_verano/curso/estancia/opciones/Opcin 9odos de los elementos <Opcin> 52e sean descendientes de <estancia> /escuela_verano/curso/actividad/opciones/Opcin 9odos de los elementos <Opcin> 52e sean descendientes de <actividad> /.//estancia//Opcin 9odos de los elementos <Opcin> 52e sean descendientes de <estancia> /.//Opcin /.//@* /.//@nmero ,odos los nodos del elemento <Opcin> ,odos los nodos de los atri42tos ,odos los nodos de atri42tos con nom4re de nmero
12
1-- 1.
Filtros XSL
[operador
patrn]
>,istencia de nodos
Calor de nodos
13
>,istencia de nodos .... <xsl:template match !norma ['"ser#aci$n]%& <(&>sta norma inclu&e un elemento :*bser6acin07<)* /& <)&<xsl:#al+e,o- /&</)&</(& </xsl:template& ... 1; 1# norma [o"ser#aci$n]/Versi$n norma ['"ser#aci$n] [-echa] Fecha [@orden]
8= & D9 D8 & DD
D< & D?
14
Calor de nodos .... <xsl:template match !norma[siglas !.T/0%]%& <(&1sta norma incl+2e +n elemento !Siglas% c+2o contenido es !.T/0%&<)* /& <)&<xsl:#al+e,o- /&</)&</(& </xsl:template& ..... match 3norma[Siglas 3.T/03]3& .... <xsl:template match !Fecha[@orden !4ltimo%]%& <(&1sta !Fecha% incl+2e +n atri"+to !orden% c+2o contenido es !4ltimo%.<)* /& <)&<xsl:#al+e,o- /&</)&</(& </xsl:template& match 3Fecha[@orden 34ltimo3]3&
DG & DH
15
DE & DF
SImbolo
8 < < & &
*#erador
5e65 5ne5 5lt5 5le5 5gt5 5ge5
SImbolo
*#erador
5ie65 5ine5 5ilt5 5ile5 5igt5 5ige5
Combinaciones de filtros Siglas[. !:SS%] Fecha[@orden !primero%]/../Siglas[. !.T/0%] //norma[Versi$n& !;.<%]/*[@orden8 !primero%] //norma[@id]/Fecha[@orden] SImbolo == || 8 *#erador 5an25 5all5 *#erador 5and5 5or5 5not5 Jtilidad c+al6+iera de los elementos de la lista todos los elementos de la lista
?E 5 E8
17
Jtilidad 'peraci$n l$gica >N9 'peraci$n l$gica '* 'peraci$n l$gica N'T
<= 5 ??
Conflictos & colisiones >l #rocesador elige la m's #recisa /normas/norma/Texto /normas//Texto //Texto /*
ED & E<
ejercicio
18E? & EG
>lementos XSLT b'sicos <xsl:st2lesheet xmlns:xsl !http://???.?@.org/T*/A9,xsl% indent,res+lt:%2es% lang+age !Ba#aScript;.C%& </xsl:st2lesheet& <xsl:template match !patr$n% lang+age !V)Script%& .... </xsl:template& <xsl:template match !*%& <xsl:de-ine,template,set& <xsl:template match !li"ro%&... </xsl:template& <xsl:template match !a+tor%&... </xsl:template& </xsl:de-ine,template,set& </xsl:template&
19
20
*#ciones a6an$adas
85?
<xsl:cop2&
E5H
8? 5 8F
21
*#ciones a6an$adas <xsl:choose& <xsl:?hen match 3.[(Mginas5gt5N@<<N]3& Oli"ro de tamaPo grandeQ<)*/&</xsl:?hen& <xsl:?hen match 3.[(Mginas5gt5NC<<N]3& Oli"ro de tamaPo medianoQ<)*/&</xsl:?hen& <xsl:?hen match 3.[(Mginas5gt5N;<<N]3& Oli"ro de tamaPo pe6+ePoQ<)*/&</xsl:?hen& <xsl:other?ise& Odemasiado pe6+ePo para ser +n li"roQ<)*/&</xsl:other?ise& </xsl:choose& <xsl:choose& <xsl:?hen match 3.[a+tores[<]]3&;., <xsl:#al+e,oselect 3a+tores/>+tor3 /& O<xsl:#al+e,oselect 3TFt+lo3 /&Q<)*/&</xsl:?hen& </xsl:choose& <xsl:choose& <xsl:?hen match 3.[1ditorial G/cRra?.illL]3& <xsl:#al+e,o- select !TFt+lo% /&<)*/&</xsl:?hen& <xsl:other?ise&</xsl:other?ise& </xsl:choose&
8G
8H
22
8=
*#ciones a6an$adas
<Sxml #ersion 3;.<3 encoding 37S',TTIK,;3S& <xsl:st2lesheet xmlns:xsl 3http://???.?@.org/T*/A9,xsl3& <xsl:template match 3/3& <xsl:-or,each select 3//3& Nom"re de nodo/eti6+eta: <xsl:node,name /& </xsl:-or,each& </xsl:template& </xsl:st2lesheet&
23 D9 5 D8
Creacin de nodos en la salida <xsl:pi name !xml%&#ersion !;.<%</xsl:pi& <xsl:comment&1sto es +n comentario</xsl:comment& <xsl:element name !(*'F1S'*%&1d+ardo</xsl:element& <xsl:attri"+te name !N7V10%&Formaci$n </xsl:attri"+te&
... <xsl:template match !li"ro%& <xsl:cop2& <xsl:attri"+te name !categorFa%&:omp+taci$n</xsl:attri"+te& </xsl:cop2& </xsl:template& ...
24
Creacin de nodos en la salida ... <xsl:template match !li"ro[;]%& <xsl:cop2& <xsl:atti"+te name !categorFa%&U/0</xml:attri"+te& </xsl:cop2& </xsl:template& ... ... <xsl:template match !//1N0>:1%& <>& <xsl:attri"+te name !hre-%&<xsl:#al+e,o- /& </xsl:attri"+te& /ail to 1d+ardo (eis </>& </xsl:template& ... <> hre- !epeis@+gr.es%&/ail to 1d+ardo (eis</>&
25
Creacin de nodos en la salida ... <xsl:template match !//F7RV*>%& <7/R& <xsl:attri"+te name !src%&<xsl:#al+e,o- /& </xsl:attri"+te& </7/R& </xsl:template& ... <7/R src !-igs/logo.gi-%&</7/R& ... <xsl:template match !//F7RV*>%& <7/R ?idth !C<<% height !HI% alt ![0ogotipo]%& <xsl:attri"+te name !src%&<xsl:#al+e,o- /& </xsl:attri"+te& </7/R& </xsl:template& ... <7/R src !-igs/logo.gi-% ?idth !C<<% height !HI% >lt ![0ogotipo]%&</7/R&
26
27 DD 5 D?
Muiones KSCR+PTSL en XSL ... <xsl:script lang+age !V)Script%& F+nction Fecha.oraOQ Fecha.ora No?OQ 1nd F+nction </xsl:script& ... ... <xsl:script lang+age !V)Script%& F+nction (+lgadas>:mOp+lgQ (+lgadas>:m p+lg*C.IY 1nd F+nction </xsl:script& ... <xsl:script lang+age !leng+aZe[de[g+i$n%& <8[:9>T>[ ... ]]& </xsl:script&
28
29 DE 5 DF