Foros del Web » Programación para mayores de 30 ;) » Programación General »

XSLT para que usar xsl:element ?

Estas en el tema de XSLT para que usar xsl:element ? en el foro de Programación General en Foros del Web. Una pregunta más bien teórica...cual es la diferencia entre estos 2 códigos ? porque en la práctica hacen lo mismo...hay algún fundamento teórico o contra ...
  #1 (permalink)  
Antiguo 24/10/2008, 10:42
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
XSLT para que usar xsl:element ?

Una pregunta más bien teórica...cual es la diferencia entre estos 2 códigos ? porque en la práctica hacen lo mismo...hay algún fundamento teórico o contra de usar alguno de ellos ?

<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="link"/>
</xsl:attribute>
<xsl:value-of select="title"/>
</xsl:element>

o

<a href="{link}"><xsl:value-of select="title"/></a>

y gracias por leerlo...
__________________
Esteban Quintana
  #2 (permalink)  
Antiguo 29/10/2008, 22:28
Avatar de Ek-Balam  
Fecha de Ingreso: octubre-2008
Mensajes: 21
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: XSLT para que usar xsl:element ?

Saludos, Monoswim.

En XSL, podemos usar ambos métodos para crear enlaces, pero la diferencia radica en:

1) Si usamos directamente la etiqueta <a> de enlace <a href="">...</a>, esta sólo se usa en el template root, o template raiz; y los enlaces son generados manualmente.

2) Si usamos la tag <xsl:element>, esta debe ser aplicada dentro de un template secundario y creará enlaces elaborados dinámicamente a partir de los url que aparezcan en nuestro archivo XML.

Ejemplo de un XML para obtener los enlaces. Copia y guarda como "
vinculos.xml":

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="conv.xsl"?>
<ir>
<favoritos>
<pag dire="http://foros.forosmexico.com">Foros México</pag>
<pag dire="http://www.comunidaddehurones.com">Comunidad de Hurones</pag>
<pag dire="http://www.lawebdelprogramador.com">La Web del Programador</pag>
<pag dire="http://www.hotmail.com">Correo de Hotmail</pag>
<pag dire="http://www.mygnet.com">La Comunidad de Programación</pag>
</favoritos>
</ir>


Como verás, en los atributos "
dire" capturamos la url a la que enlazaremos de manera dinámica o recursiva en nuestro archivo XSL (el cuál generará una página web mediante xml/xsl). De hecho, cuando abramos nuestro archivo xml, se mostrará como una página web mediante el uso del xsl (supongo que tú ya lo sabes, pero hago referencia para los que no conozcan el uso de los xpath dentro de xsl).
Ahora te pongo el archivo xsl, desde el cuál generaremos los enlaces dinámicos y uno manual. Copia y guarda como "
conv.xsl":

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ir">

<html>
<head><title>Vínculos</title></head>
<body>
<table border="2" bordercolor="blue" cellspacing="5" cellpadding="5">
<tr>
<xsl:apply-templates select="favoritos" />
</tr>
</table>
<table border="2" bordercolor="red">
<tr>
<td><a href="http://www.google.com">Google</a></td>
</tr>
</table>

</body>
</html>

</xsl:template>

<xsl:template match="favoritos">
<xsl:for-each select="pag">
<td bgcolor="yellow">
<xsl:variable name="test">a</xsl:variable>
<xsl:element name="{$test}">
<xsl:attribute name="href"><xsl:value-of select="@dire" /></xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</td>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>


Como leerás en este archivo, únicamente hemos colocado de manera manual el enlace a Google, usando la tag <a>...</a>, y lo visualizaremos en una table con borde color rojo, mientras que los enlaces generados dinámicamente, obtenidos desde el xml, se verán en una table con borde azul.
Concluyendo, aunque ambos códigos trabajan igual tienen rangos de acción distinto.
El primer código que pusiste genera enlaces dinámicos obtenidos de un archivo xml. El segundo código es más lento, porque debemos capturar manualmente cada enlace que deseemos.
Buen día.
=0)
  #3 (permalink)  
Antiguo 30/10/2008, 05:32
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Respuesta: XSLT para que usar xsl:element ?

Ek-Balam ! en tu primer mensaje te haces una respuesta EXCELENTE como esta !!!

Primero que nada bienvenido a los foros !

En segundo lugar GRACIAS ! tu respuesta fué muy clara !

Esperemos que te sigamos viendo por aquí

__________________
Esteban Quintana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:21.