Questa trasformazione:
<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>
quando applicato su qualsiasi documento XML (non utilizzato), produce il risultato desiderato:
<html><a href="www.privacy.com">Read our <b>privacy policy.</b></a></html>
e questo viene visualizzato dal browser come:
Leggere le politica sulla privacy.
Ora immaginate che nulla è hardcoded nel foglio di stile XSLT - invece i dati sono nella fonte documento XML:
<link url="www.privacy.com">
Read our <b>privacy policy.</b>
</link>
Poi questa trasformazione:
<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>
quando viene applicato sul documento XML sopra riportato, produce il risultato desiderato e corretto:
<a href="www.privacy.com">
Read our <b>privacy policy.</b>
</a>
fonte
2012-04-17 04:02:44
XSLT non esegue collegamenti ipertestuali. Ripensa la tua domanda. –
Quando si pensa a come ottenere qualcosa di simile in XSLT, dividere l'attività in due: (a) decidere quale HTML si desidera generare e (b) decidere quale codice XSLT è necessario per generarlo. Il modo in cui hai formulato la domanda suggerisce che non hai colto questa separazione di preoccupazioni. –