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>
XSLT no hace hipervínculos. Repensa tu pregunta. –
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. –