2012-04-17 156 views
5

Soy nuevo en XSLT. Quiero crear un hipervínculo usando XSLT. Debería tener este aspecto:¿Cómo crear un hipervínculo usando XSLT?

Lea nuestra política de privacidad .

"política de privacidad" es el enlace y al hacer clic en este, debe redirigir al ejemplo "www.privacy.com"

¿Alguna idea? :)

+0

XSLT no hace hipervínculos. Repensa tu pregunta. –

+2

Cuando piense en cómo lograr algo como esto en XSLT, divida la tarea en dos: (a) decida qué HTML desea generar y (b) decida qué código XSLT necesita para generarlo. La forma en que formuló la pregunta sugiere que no ha captado esta separación de preocupaciones. –

Respuesta

11

Esta transformación:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:template match="/"> 
    <html> 
    <a href="www.privacy.com">Read our <b>privacy policy.</b></a> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

cuando aplicado en cualquier documento XML (no utilizado), produce el resultado deseado:

<html><a href="www.privacy.com">Read our <b>privacy policy.</b></a></html> 

y esto se muestra por el navegador como:

lea nuestra política de privacidad .

Ahora imagina que nada está codificada en la hoja de estilo XSLT - en su lugar los datos están en el documento XML de origen:

<link url="www.privacy.com"> 
Read our <b>privacy policy.</b> 
</link> 

Entonces esta transformación:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="link"> 
    <a href="{@url}"><xsl:apply-templates/></a> 
</xsl:template> 
</xsl:stylesheet> 

cuando se aplica en el documento XML anterior, produce el resultado deseado, correcto:

<a href="www.privacy.com"> 
Read our <b>privacy policy.</b> 
</a> 
-1

Si quiere tener hipervínculos en XSLT, entonces necesita crear un resultado HTML usando XSLT. En HTML se puede crear un hipervínculo como esto

<a href="http://www.yourwebsite.com/" target="_blank">Read our privacy policy.</a> 

En este todo el texto se convierte en un hipervínculo que apunta a www.yourwebsite.com

+0

¡Gracias! ¡Probaré este! – JADE

5

Si desea leer el valor de hipervínculo desde un archivo XML, esto debería funcionar:

Supuesto: href es un atributo de elemento específico de su XML.

<xsl:variable name="hyperlink"><xsl:value-of select="@href" /></xsl:variable> 
<a href="{$hyperlink}"> <xsl:value-of select="@href" /></a> 
+2

La 'xsl: variable' no es necesaria. Solo haz ''. Ver http://www.w3.org/TR/xslt#attribute-value-templates para más información. –

Cuestiones relacionadas