xsl:template

Anuncio
XSLT%%
Tecnologías XML
Transformación%de%documentos%XML%%
Transformación
de documentos XML
mást
onlin
Direc
Ingen
de S
Web
El%problema%de%presentar%un%
documento%XML%%
•  XML$no$incorpora$ninguna$semán2ca$intrínseca$
de$presentación$%
•  Soluciones%%
–  XML+CSS$
–  XML+XSL$(Extensible$Stylesheet$Language,$"lenguaje$
extensible$de$hojas$de$es2lo").$%
•  Familia%de%lenguajes%basados%en%XML%%
•  Permite%describir%cómo%la%información%contenida%
en%un%documento%XML%debe%ser%transformada%o%
formateada%para%su%presentación%en%un%medio%
específico%%
¿Por%qué%XSL?%%
• 
• 
Está%diseñado%para%integrarse%en%la%arquitectura%XML.%
%Es%mucho%más%potente%que%CSS.%
• 
Cada%vez%hay%más%herramientas%para%XSL.%
–  CSS%no%Hene%capacidades%de%transformación.%
CSS%versus%XSL%%
CSS$
XSL$
¿Puede&ser&usada&con&
HTML?&%
Si%
NO%
¿Puede&ser&usado&con&
XML?&%
SI%
SI%
¿Lenguajes&de&
transformación?&%
NO%
SI%
¿Sintaxis?&%
CSS%
XML%
XSL%%
•  Formado%por:%%
%
–  XSLT%(Extensible%Stylesheet%Language%TransformaHons):%
permite%converHr%documentos%XML%de%una%sintaxis%a%otra%
(por%ejemplo,%de%un%XML%a%otro%o%a%un%documento%HTML).%%
–  XSLUFO%(lenguaje%de%hojas%extensibles%de%formateo%de%
objetos):%permite%especificar%el%formato%visual%con%el%cual%
se%quiere%presentar%un%documento%XML,%es%usado%
principalmente%para%generar%documentos%PDF.%%
–  XPath,%o%XML%Path%Language:%sintaxis%(no%basada%en%XML)%
para%acceder%o%referirse%a%porciones%de%un%documento%
XML%%
Estas%tres%especificaciones%son%recomendaciones%oficiales%del%
W3C.%%
Transformación%XSLT%%
•  Transformación%estructural:%%
–  Los%datos%son%converHdos%de%la%estrucutra%de%
entrada%(XML)%a%una%estructura%que%refleje%la%
salida%deseada%%
%
•  Formato%(pdf,%html,%etc.)%%
–  La%salida%de%datos,%generados%por%la%nueva%
estructura%se%entrega%en%el%formato%requerido%
(PDF,%HTML,%delimitado%por%comas)%%
¿%Por%que%transformar%XML%?%%
•  Conversión%entre%modelos%de%datos%%
–  Aunque%legible,%XML%está%pensado%para%el%
intercambio%de%información%entre%aplicaciones.%%
•  Es%necesaria%una%capa%de%presentación%para%
hacer%“amigable”%el%acceso%de%los%humanos%a%
la%información%XML.%%
–  XML%produce%separación%entre%el%modelo%de%datos%
y%presentación%visual.%%
¿Cómo%funciona?%%
•  Durante%el%proceso%de%transformación,%XSLT%
uHliza%XPath$para%definir%partes%del%documento%
fuente%que%encajan%dentro%de%una%o%mas%
planHllas%predefinidas%%
•  Por%cada%coincidencia,%XSLT%transformará%esta%
parte%del%documento%fuente%para%generar%el%
documento%resultante%%
•  La%porción%del%documento%fuente%que%no%encaja%
con%la%planHlla%permanecerá%sin%modificación%
alguna%%
Tecnologías XML
Proceso de publicación XML-XSL
Proceso%de%publicación%XMLUXSL%%
Procesador
de XSLT
XML
original
Nueva
Nueva
Estructura
Nueva
Estructura
XML + FO
Estructura
XML + FO
XML + FO
XSL
Coordinador: Dr. Oscar Sanjuán Martínez
más
onli
Procesador Dire
De XSL-FO Inge
de S
Web
HTML,
PDF, ...
Ejemplo:%Transformando%a%HTML%%
poema.xsl%%
%
<?xml$version=”1.0”?>$$
<xsl:stylesheet$version=”1.0”$%
$xmlns:xsl=”hPp://www.w3.org/1999/XSL/Transform”>$$
$
<xsl:output$method=”html”/>$%
$
<xsl:template$match=”/”>$$
<html>$%
$<head>$$
$
$<2tle>Ejemplo</2tle>$%
$</head>$$
$<body>$%
$
$<h1>Poema</h1>$$
$</body>$%
</html>$$
</xsl:template>$$
%
</xsl:stylesheet>$%
Espacio%de%
nombres%%
PlanHlla%
Reglas%de%planHllas%%
•  Las%reglas%de%planHllas%(templates)%se%idenHfican%
mediante:%%
$<xsl:template$match=”$.$.$.$”>$%
%...resultado...%%
$</xsl:template>$%
•  El%valor%del%atributo%match%es%una%expresión%
%Xpath$$$
•  Cuando%el%procesador%encaja%el%nodo%actual%con%
la%expresión%genera%el%valor%de%la%planHlla%%
Asociar%hoja%de%esHlos%a%documento%
XML%
•  Es%posible%indicar%en%el%documento%XML%qué%
hoja%de%esHlos%XSL%lleva%asociada%o%también%la%
CSS%%
–  Type:%“text/css”%(CSS)%o%“text/xsl”%(XSL)”%
•  Un%navegador%puede%reconocer%dicha%
información%y%mostrar%el%resultado%de%la%
transformación%
<?xmlWstylesheet$type=$“text/css”$href$=$“poema.css”?>$
<?xmlWstylesheet$type=$“text/xsl”$href$=$“poema.xsl”?>%
Ejemplo:%Asociando%una%hoja%de%esHlos%
a%un%documento%%
•  XML%%
Poema.xml%%
<?xml%version=”1.0”%encoding="ISOU8859U1"?>%%
<?xml−stylesheet%type=”text/xsl”%href=”poema.xsl”?>%%
<poema%fecha=”Abril%de%1915”%lugar=”Granada%”>%
<Htulo>Alba</Htulo>%
<verso>Mi%corazón%oprimido</verso>%
<verso>late%junto%a%la%alborada</verso>%
...%
</poema>%%
Ejemplo:%Obtener%valores%%
poemaLugarFecha.xsl%%
<?xml%version="1.0"?>%%
<xsl:stylesheet%version="1.0"%%
%xmlns:xsl="hlp://www.w3.org/1999/XSL/Transform">%%
<xsl:output%method="html"/>%%
<xsl:template%match="poema">%
%Fecha%:%<xsl:valueUof%select="@fecha"/>%,%
%Lugar%:%<xsl:valueUof%select="@lugar"/>%%
</xsl:template>%%
</xsl:stylesheet>%%
Ejemplo%básico%%
<?xml%version=%“1.0”?>%
<?xmlWstylesheet$type=$“text/xsl”$href$=“intro.xsl”?>$
<miCurso>%
%<curso>Curso%Arquitectura%de%Datos</curso>%
</miCurso>%
<?xml%version%=%"1.0"?>%
<xsl:stylesheet%version%="1.0"%xmlns:xsl="hlp://www.w3.org/1999/XSL/Transform">%
$<xsl:template$match$=$"miCurso">$
%
%<html>%
%
%
%<body><p><xsl:valueWof$select="curso"/></p></body>%
%
%</html>%
$</xsl:template>$
</xsl:stylesheet>%
<html>%
%<body><p>Curso%de%Lenguajes%para%Internet</p></body>%%
</html>%
Estructura%básica%de%una%hoja%XSL%%
•  Elementos$de$XSLT:%%
–  Pertenecen%al%namespace&xsl%%
–  Sus%eHquetas%llevan%el%prefijo%xsl:%.%Son%el%equivalente%a%las%
palabras%clave%del%lenguaje%de%programación%(definidos%por%el%
estándar%e%interpretados%por%cualquier%procesador%de%XSLT)%%
•  Elementos$LRE$(Literal%Result%Elements):%
–  Son%elementos%que%no%pertenecen%a%XSLT,%sino%que%se%repiten%
en%la%salida%sin%más.%
–  Ejemplo:%un%elemento%<fecha>%%
•  Elementos$de$extensión:$%
–  Son%elementos%noUestándar%(al%igual%que%los%LRE),%que%son%
manejados%por%implementaciones%concretas%del%procesador.%
Normalmente,%no%los%uHlizaremos%%
<xsl:stylesheet>%%
•  Es%el%elemento%raíz%de%una%hoja%XSL%%
–  version:%Suele%ser%1.0%%
–  xmlns:xsl:%Asigna%el%namespace&xsl%(las%eHquetas%
de%XSL%empiezan%por%el%prefijo%xsl:).%El%valor%para%
XSLT%suele%ser%
%hPp://www.w3.org/1999/XSL/Transform$%
<xsl:stylesheet$version$="1.0"$
xmlns:xsl=$"hPp://www.w3.org/1999/XSL/Transform">$
$...$
</xsl:stylesheet>%
Elementos%de%nivel%superior%%
• 
• 
• 
• 
Son%elementos%hijos%de%xsl:stylesheet%%
Son%hijos%directos%(tampoco%pueden%anidarse)%%
Dos%excepciones:%xsl:variable%y%xsl:param%%
No%son%instrucciones%sobre%cómo%procesar%
elementos,%sino%estructuras%contenedoras%para%
instrucciones.%
xsl:output%%
xsl:stripUspace%%
xsl:namespaceUalias%%
xsl:template%%
xsl:preserveUspace%%
xsl:alributeUset%%
xsl:include%%
xsl:key%%
xsl:variable%%
xsl:import%%
xsl:decimalUformat%%
xsl:param%%
<xsl:output>%%
•  Define%qué%Hpo%de%salida%se%va%a%generar%como%
resultado%%
–  method:%xml,%html%o%text%%
–  encoding:%define%la%forma%de%representar%
caracteres%que%se%adoptará%en%la%salida%
(isoU8859U1,%UTFU8,%UTFU16,%windowsU1252)%%
–  omitUxmlUdeclaraHon:%yes%o%no.%Indica%si%se%genera%
o%no%la%declaración%<?xml...?>%%
–  indent:%yes%o%no.%Si%es%yes,%el%procesador%(para%
salidas%xml%o%html)%indentará%el%resultado%%
Otros%elementos%de%nivel%superior%%
•  <xsl:include>$que%permite%referenciar%
planHllas%procedentes%de%una%fuente%externa%%
•  <xsl:stripWspace>$que%elimina%antes%del%
procesamiento%todos%los%modos%consistentes%
en%espacios%en%blanco%%
•  <xsl:preserveWspace>$manHene%los%espacios%
en%blanco%%
Reglas%de%transformación%
XSLT:Templates%%
•  Es%el%elemento%básico%y%fundamental%del%lenguaje%
de%transformación%XSLT%%
•  Una%regla(o“template”)consta%de%dos%partes:%%
–  Una%“e2queta”%formada%por%un%patrón%de%localización%
que%selecciona%nodos%en%el%árbol%XML%origen%sobre%los%
que%se%aplica%la%tranformación%%
•  Expresión%Xpath.%
–  Una%“acción”%que%indica%la%transformación%a%realizar%
sobre%los%nodos%seleccionados.%%
•  Cada%hoja%de%esHlo%XSL%debe%contener%al%menos%
una%regla%si%se%quiere%que%ejecute%algo%%
Obtención%de%patrones%%
•  <xsl:template%match=“...”>%
%
•  <xsl:applyUtemplates%select=“...”>%%
<xsl:template>%%
•  Cada%eHqueta%<xsl:template>%conHene%reglas%por%
aplicar%a%ciertos%elementos%de%un%nodo%%
–  match%es%uHlizado%para%asociar%la%planHlla%con%un%
elemento%XML.%El%atributo%match%también%puede%
uHlizarse%para%aplicarse%a%una%rama%completa%del%
documento%XML%(Por%ejemplo%match="/"%define%a%
todo%el%documento)%%
–  name%Además%de%cuando%encaja,%un%template%puede%
invocarse%explícitamente%(en%ese%caso%se%necesita%que%
tenga%un%nombre)%
%
•  Ejemplo:%<xsl:template%match="/">%%
Ejemplo%%
<xslTutorial%>%
%<bold>Hello,%world.</bold>%
%<red>I%am%</red>%%
%<italic>fine.</italic>%%
</xslTutorial>%%
%
<p>%%
%<b>Hello,%world.</b>%
</p>%
<p%style="color:red">I%am%</p>%
<p>%<i>fine.</i></p>%
<xsl:stylesheet$$
$xmlns:xsl='hlp://www.w3.org/1999/XSL/Transform'>%%
<xsl:template$match="bold">%
%<p><b><xsl:valueWof$select="."/></b></p>%
</xsl:template>%
<xsl:template$match="red">%
%<p%style="color:red"><xsl:valueWof$select="."/></p>%
</xsl:template>%
<xsl:template$match="italic">%
%<p><i><xsl:valueWof$select="."/></i></p>%%
</xsl:template>%
</xsl:stylesheet>%
Hello,%world.%
I%am%
fine.&
<xsl:applyUtemplates>%%
•  Se%uHliza%para%indicar%al%procesador%que%
intente%emparejar%templates%con%cierto%nodo%
o%conjunto%de%nodos%(nodeset)%%
–  select:%Su%valor%es%una%expresión%XPath%de%
conjunto%de%nodos.%El%procesador%intentará%
emparejar%ese%conjunto%de%nodos%con%sus%
templates%respecHvos%%
•  Permite%realizar%un%tratamiento%recursivo%de%
todos%los%elementos%del%árbol%fuente%%
Ejemplo%%
<?xml%version="1.0"%encoding="ISOU8859U1"?>%
<xsl:stylesheet%version="1.0”%
%xmlns:xsl="hlp://www.w3.org/1999/XSL/Transform">%%
%
<xsl:template%match="/">%%
%<html>%
%<body>%
%<h2>My%CD%CollecHon</h2>%%
%<xsl:applyUtemplates/>%%
%</body>%%
%</html>%%
</xsl:template>%%
%
<xsl:template%match="cd">%%
%<p>%%
%<xsl:applyUtemplates%select="Htle"/>%%
%<xsl:applyUtemplates%select="arHst"/>%%
%</p>%%
</xsl:template>%%
%
<xsl:template%match="Htle">%
%Title:%<span%style="color:#ff0000">%%
%<xsl:vaueUof%select="."/></span>%
%<br%/>%
</xsl:template>%
%
%
<xsl:template%match="arHst">%
%ArHst:%<span%style="color:#00ff00">%%
%<xsl:valueUof%select="."/>%
%</span>%%
%<br%/>%%
</xsl:template>%%
%
</xsl:stylesheet>%%
%
Xpath%%
•  ObjeHvo:%IdenHficar%elementos%%%
•  Tienen%la%forma%%
–  nodo1/nodo2/.../nodoN%%
•  Ejemplo:%persona/apellido/materno%%
•  Describen%un%camino%(path)%%
•  Resultado:%
–  Un%conjunto%de%nodos%
–  String,%número%o%boolean%%
XPath%versus%Sistema%de%archivos%%
Sistema$de$Archivos$
$
Xpath$
Ficheros%y%directorios%%
%
Respecto%a%directorio%actual%%
%
%
*$=%cualquier%cosa%%
%
Un%fichero%por%ruta%%
%
Nodos%dentro%de%nodos%%
%
Respecto%a%nodo%actual%o%%
de%contexto%
%
*$=%cualquier%nodo%%
%
Uno%o%varios%nodos%por%ruta%%
Resumen%de%sintaxis%abreviada%Xpath%%
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
X%–%hijo%elemento%“X”%%
*%U%todos%los%hijos%elemento%%
text()%U%todos%los%hijos%texto%%
@Y%–%atributo%“Y”%%
X[1]%–%primer%hijo%“X”%%
X[last()]%U%úlHmo%hijo%“X”%%
*/X%–%nietos%“X”%%
X//Y%–%descendientes%“Y”%de%hijo%“X”%%
//Y%–%descendientes%“Y”%de%la%RAIZ%%
//Y/X%U%descendientes%“Y”%de%HIJO%“X”%%
..%U%padre%%
//X[1][@Y=”Z”]%U%primeros%hijos%X%con%atributo%Y=”Z”%%
<xsl:valueUof>%%
•  La%eHqueta%<xsl:valueUof>%se%uHliza%para%
seleccionar%el%valor%de%una%eHqueta%XML%y%
agregarlo%al%archivo%de%salida%de%la%
transformación%%
•  El%valor%del%atributo%select$conHene%una%
expresión%XPath.$Esta%trabaja%como%la%navegación%
de%un%sistema%de%ficheros%donde%una%diagonal%
verHcal%delantera%(/)%selecciona%subdirectorios%%
•  Ejemplo:$
<xsl:valueWof$select="catalogo/cd/2tulo"/$>$%
%
Ordenar%nodos:%<xsl:sort>%%
•  Permite%aplicar%un%template&a%un%conjunto%de%
nodos%ordenándolos%alfabéHca%o%numéricamente%%
•  Sintaxis:%%
<xsl:applyWtemplates$select=‘XPATH’>$
$ $<xsl:sort$select=“XPATH”$%
$ $dataWtype=“text|number”$%
$ $order=“ascending|descending”/>$
$<xsl:sort$...$/>$%
</xsl:applyWtemplates>$%
Ejemplo%%
<source>%
<name>Juan</name>%
<name>Jaime</name>%
<name>Carlos</name>%
<name>Alicia</name>%
<name>Marta</name>%
</source>%
<xsl:stylesheet$version%=%'1.0'%%
%xmlns:xsl='hlp://www.w3.org/1999/XSL/Transform'>%
<xsl:template$match="/">%
%<TABLE>%
%
%<xsl:forWeach$select="//name">%
%
%
%<xsl:sort$order="ascending"%select="."/>%
%
%
%
%<TR>%
%
%
%
%
%<TH><xsl:valueWof$select="."/></TH>%
%
%
%
%</TR>%
</xsl:forWeach>%
%
%
</TABLE>%%
%
</xsl:template>%%
</xsl:stylesheet>%%
%
<TABLE>%%
%<TR>%
%
%<TH>Alicia</TH>%
%</TR>%
%<TR>%
%
%<TH>Carlos</TH>%
</TR>
%
%
%<TR>%
%
%<TH>Jaime</TH>%
</TR>
%
%
<TR>%
%
%
%<TH>Juan</TH>%
%</TR>%
%<TR>%
%
%<TH>Marta</TH>%
%</TR>%
</TABLE>%%
Alicia$
Carlos$$
Jaime$$
Juan$$
Marta%
Sentencias%iteraHvas:%<xsl:forUeach>%%
•  La%eHqueta%XSL%<xsl:forWeach>$se%uHliza%para%
seleccionar%todos%los%elementos%XML%del%nodo%
especificado.%%
•  El%valor%del%atributo%select$conHene%una%
expresión%XPath.$Esta%trabaja%como%la%navegación%
de%un%sistema%de%ficheros%donde%una%diagonal%
verHcal%delantera%(/)%selecciona%subdirectorios.%%
•  Sintaxis: $$
<xsl:forWeach$select=“XPATH”>$
$...$%
</xsl:forWeach>$%
Ejemplo%%
<xslTutorial%>%
<list>%<entry%name="A"/>%
%<entry%name="B"/>%
%<entry%name="C"/>%
%<entry%name="D"/>%
</list>%
</xslTutorial>%
<HTML>%
<HEAD>%</HEAD>%
<BODY>%A,%B,%C,%D,%</BODY>%
%</HTML>%
<xsl:stylesheet$$
$xmlns:xsl='hlp://www.w3.org/1999/XSL/Transform'%>%%
<xsl:template$match="list">%
%<xsl:forWeach$select="entry">%%
%
%<xsl:valueWof$select="@name"/>%%
%
%<xsl:text>%,%</xsl:text>%
%</xsl:forWeach>%%
</xsl:template>%
</xsl:stylesheet>%
A,%B,%C,%D,%
Sentencias%selecHvas:%<xsl:if>%%
•  Permite%decidir%si%se%va%a%procesar%o%no%una%
parte%de%la%hoja%XSL%en%función%de%una%
condición.%%
•  Sintaxis:%%
<xsl:if$test=‘condición’>$...$
</xsl:if>$%
•  No%conHene%parte%else.%%
•  Podemos%usar%=,%!=,%>=,>%y%not()%%
Ejemplo%%
<xsl:stylesheet$$
$xmlns:xsl='hlp://www.w3.org/1999/XSL/Transform'%>%
<xsl:template$match="list">%%
%<xsl:forWeach$select="entry">%
% %<xsl:valueWof$select="@name"/>%
% %<xsl:if$test="not(posi2on()=last())">%%
% % %<xsl:text>%,%</xsl:text>%%
% %</xsl:if>%%
%</xsl:forWeach>%%
</xsl:template>%%
</xsl:stylesheet>%%
A,$B,$C,$D$
Sentencias%selecHvas:%<xsl:choose>%%
•  Permite%decidir%qué%parte%de%una%hoja%XSL%se%debe%procesar%en%
función%de%varias%condiciones%%
•  ConHene%elementos%xsl:when%%
–  Atributo:%test%(similar%al%de%xsl:if)%%
–  Son%los%diferentes%“casos”%de%una%sentencia%CASE%%
•  Caso%por%defecto:%xsl:otherwise%(sin%atributos)%
•  Sintaxis:%
<xsl:choose>$
$<xsl:when$test=“condición”>$%
$
$...$
$</xsl:when>$
$<xsl:when$test=“condición”>$
$
$...$
$</xsl:when>$
$<xsl:otherwise>$
$
$...$
$</xsl:otherwise>$%%
</xsl:choose>$%
%
Ejemplo%
<xslTutorial>%
<SECTION>%
%<DATA>I%need%a%pen.%</DATA>%
%<DATA>I%need%some%paper.%</DATA>%
<SUMMARY>%%
%I%need%a%pen%and%some%paper%%
</SUMMARY>%%
</SECTION>%%
<SECTION>%%
<DATA>I%need%bread.</DATA>%%
<DATA>I%need%buler.</DATA>%
</SECTION>%%
</xslTutorial>%%
%
%
<HTML>%<HEAD>%</HEAD>%
<BODY>%
<P>SUMMARY:%
I%need%a%pen%
and%some%paper</P>%
<P>DATA:%I%need%bread.%
</P>%
<P>DATA:%I%need%buler.%
</P>%
</BODY>%</HTML>%
<xsl:stylesheet$xmlns:xsl='hPp://www.w3.org/1999/XSL/Transform'$>$$
$<xsl:template$match="//SECTION">$
$
$<xsl:choose>$
$
$
$<xsl:when$test='SUMMARY'>$
$
$
$<P><xsl:text>SUMMARY:</xsl:text><xsl:valueWof$select="SUMMARY"/></P>$$
$
$
$</xsl:when>$
$
$
$<xsl:otherwise>$
$
$
$
$<xsl:forWeach$select="DATA">$
$
$
$
$
$<P><xsl:text>$DATA:$</xsl:text>$<xsl:valueWof$select="."/></P>$
$$
</xsl:forWeach>$
$
$
$
$
$
$
$</xsl:otherwise>$
$
$</xsl:choose>$
</xsl:template>$
$
</xsl:stylesheet>$
SUMMARY:$I$need$a$pen$$
and$some$paper$
DATA:$I$need$bread.$$
DATA:$I$need$buPer.$
Construcción%de%elementos%en%el%árbol%
resultado%%
•  ¿Cómo%generar%un%elemento%con%cierta%eHqueta%y%“construir”%sus%
atributos?%%
•  A%veces%la%sintaxis%no%nos%lo%permite%directamente%
Ej.%<BODY$BGCOLOR=“<xsl:valueWof$select=“colorWelegido”/>”>$%
•  Se%pueden%uHlizar%los%llamados%AVT$(APribute$Value$Template):$las%
expresiones%entre%llaves%se%evalúan%como%si%hubiera%un%valueUof%%
–  Para%poner%llaves%"de%verdad",%poner%cada%una%dos%veces%
•  Se%pueden%necesitar%instrucciones%para%“construir”%dichos%
elementos%
•  xsl:element:%Construye%un%elemento%en%el%árbol%resultado%%
–  Atributos:%name%
•  xsl:aPribute:%añade%un%atributo%al%elemento%%
–  Atributos:%name%%
–  El%valor%está%encerrado%como%texto%libre%dentro%de%xsl:alribute%%
Ejemplo%%
<BODY%BGCOLOR=“#00FFFF”>%
<P>Esto%es%una%prueba</P>%
</BODY>%
<xsl:element%name=“BODY”>%
%%%%%%%<xsl:alribute%name=“BGCOLOR”>%
%%%%%%% %
%#00FFFF%
%</xsl:alribute>%
%<xsl:element%name=“P”>%
%%%%%%% %
%Esto%es%una%prueba%
%%%%%%% %</xsl:element>%
</xsl:element>%
Definición%de%variables%%
•  Permiten%asignar%valores%a%eHquetas%para%usarlos%
cómodamente%%
•  Sintaxis:%%
$<xsl:variable$name=“nombre”$select=“XPATH”>$%
•  No%existe%el%concepto%de%variable%global.%La%
acumulación%de%valores%debe%hacerse%mediante%
llamadas%recursivas%a%funciones.%%
•  Se%definen%dentro%de%<xsl:template>&y%NO%
conservan%el%valor%de%una%llamada%a%otra%del%
template.%%
Tecnologías XML
tabla.xsl
barra.xsl
arte.xsl
Coordinador: Dr. Oscar Sanjuán Martínez
máster
online en
Dirección e
Ingeniería
de Sitios
Web
Tecnologías XML
ie5.xsl
ie4.xsl
nav3.xsl
nokia.xsl
sony.xsl
edi_x.xsl
sap_y.xsl
flat_z.xsl
máster
online
Direcci
Ingenie
de Sitio
Web
Procesadores%XSLT%%
•  Aplicación%de%una%hoja%de%esHlo%a%una%fuente%
XML%para%producir%una%salida%%
•  MSXML3&SP4&(Internet&Explorer)&
hlp://www.microso.com/enUus/download/
details.aspx?id=23412%
•  Saxon&&
hlp://saxon.sourceforge.net/%
•  Xalan&&
hlp://xalan.apache.org/index.html%
%
Referencias%%
•  W3Schools:%
hlp://www.w3schools.com%
•  ElsiHodeXSLT:%
hlp://www.xslt.com%%
•  Especificación%XSL.%%
hlp://www.w3.org/Style/XSL%%
•  Especificación%XSLT.%
hlp://www.w3.org/TR/xslt%%%
Parsers%XML%%
%
Tecnologías XML
Procesamiento de XML
Procesamiento%de%XML%%
Coordinador: Dr. Oscar Sanjuán Martínez
má
onl
Dir
Ing
de
We
¿Qué%es%un%parser%XML?%%
•  Un%parser$o%procesador$o%analizador$
sintác2co$procesa%el%documento%XML%y%
verifica%que%es%XML%bien%formado%(y/o%válido)%%
•  Es%la%herramienta%principal%de%cualquier%
aplicación%XML.%Podemos%incorporarlos%a%
nuestras%aplicaciones,%de%manera%que%estas%
puedan%manipular%y%trabajar%con%documentos%
XML%%
Parsing
Parsing%%
más
onli
Dire
Inge
de S
Web
Documento
XML
Parser XML
XML DTD
XML Schema
Coordinador: Dr. Oscar Sanjuán Martínez
Aplicación
XML
Tipos%de%parsers%%
•  Sin$validación:%chequea%que%el%documento%
esté%bien$formado$de%acuerdo%a%las%reglas%de%
sintaxis$de%XML%%
•  Con$validación:%además%de%comprobar%que%el%
documento%está%bien%formado,%comprueba%
que%éste%sea%válido%uHlizando%un%DTD$%
En&el&caso&de&uElizar&un&DTD,&es&preferible&uElizar&un&
parser&con&validación%
Parsers%%
•  Los%navegadores%incluyen%sus%propios%parsers.%%
–  Microso%Internet%Explorer%5%(o%superior),%que%
uHliza%el%parser%de%MS%(incluido%en%la%librería%
MSXML.DLL)%%
–  Mozilla,%que%internamente%uHliza%el%parser%EXPAT%
(escrito%en%C)%%
•  DOM%y%SAX%son%parsers%XML%que%comprueban%
que%el%documento%esté%bien%formado%y%válido%%
SAX%y%DOM%%
•  Las%APIs%de%SAX%y%DOM%están%estandarizadas%%y%
existen%un%gran%número%de%implementaciones%
para%disHntos%lenguajes%(C++,%Java,%C#,etc.)%
–  Ej.:%Apache%Soware%FoundaHon%proporciona%Crimson$
(SAX%y%DOM%sólo%para%Java),%Xerces$(SAX%y%DOM)%y%
Xalan$(XSL)%%
–  En%el%caso%de%Java,%familia%de%paquete%org.xml.sax$y%
org.w3c.dom$(básicamente%conHenen%interfaces%y%
clases%abstractas)%%
–  Lo%que%no%está%estandarizado%es%cómo%crear%instancias%
de%los%parsers%%
JAXP%(Java%API%for%XML%Processing)%%
•  Forma%parte%de%J2SE%a%parHr%de%la%versión%1.4%%
•  Define%un%API%para%trabajar%con%parsers%SAX,%DOM%y%
transformaciones%XSL%%
–  Proporciona%factorías%para%crear%instancias%de%parses%y%
transformadores%XSL%de%manera%portable%%
•  Oracle%proporciona%una%implementación%de%JAXP%para%
versiones%anteriores%a%J2SE%1.4%%
–  Incluye%las%APIs%org.xml.sax,%org.w3c.dom$y%
%javax.xml.{parsers,$transform}$%
–  Incluye%Crimson%y%Xalan%como%implementaciones%por%
defecto%%
–  Se%pueden%usar%otras%implementaciones%vía%configuración%%
Lenguajes%derivados%de%XML%%
•  MathML%%
•  XKMS%
•  SVG%
•  XML%Query%%
–  Visualización%de%ecuaciones%
matemáHcas%%
–  Gráficos%vectoriales%%
•  SMIL%
–  Presentaciones%mulHmedia%%
•  P3P%%
–  Descripción%de%caracterísHcas%de%
privacidad%%
•  WML%%
–  Similar%a%HTML%para%teléfonos%
móviles%%
•  VoiceML%
–  Portales%basados%en%voz%%
•  XML%Signature%
–  Firma%de%recursos%Web%%
–  Firmas%y%criptograÖa%%
–  Consultas%de%documentos%
(Bases%de%datos)%%
•  XBRL%
–  Contabilidad%%
•  ebXML%%
–  Negocios%electrónicos%(eU%
business)%%%
•  SyncXML%%
–  Sincronización%de%disposiHvos%%
•  UPnP%
–  Plug%and%Play%universal%%
Tecnología%XML.%Referencias%%
•  •%Libro&recomendado&
%XML&imprescindible.%E.R.%Harold%y%W.S.%Means.%AnayaU%O’Reilly,%
2005.%%
•  hlp://www.w3.org%%
–  Página%web%donde%están%los%estándares%de%Internet%%
–  Oficina%española%%
–  % %www.w3c.es%
%%
•  hlp://www.xml.org%%
–  El%portal%de%XML%para%la%industria%%
%
•  hlp://topxml.com%
–  Aràculos%y%soware%XML%%
Referencias%Generales%%
•  Guías%breves%de%tecnologías%W3C.%%
–  Oficina%Española%W3C%
www.w3c.es%%
•  Programación%de%Aplicaciones%Web%%
–  S.%Rodríguez%de%la%Fuente%et%al.%
Editorial%Thomson,%Madrid,%2003%%
Descargar