2012-04-17 24 views
5

Sono nuovo su XSLT. Voglio creare un collegamento ipertestuale usando XSLT. dovrebbe apparire così:Come creare un collegamento ipertestuale usando XSLT?

Leggi la nostra politica di privacy .

"privacy policy" è il link e su clic su questo, dovrebbe reindirizzare esempio "www.privacy.com"

Tutte le idee? :)

+0

XSLT non esegue collegamenti ipertestuali. Ripensa la tua domanda. –

+2

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. –

risposta

11

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> 
-1

Se si desidera avere collegamenti ipertestuali in XSLT, è necessario creare output HTML utilizzando XSLT. In HTML è possibile creare un collegamento ipertestuale come questo

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

In questo tutto il testo diventa un collegamento ipertestuale che punta al www.yourwebsite.com

+0

Grazie! Ci proverò questo! – JADE

5

Se si desidera leggere il valore collegamento ipertestuale da un file XML, questo dovrebbe funzionare:

Assunzione: href è un attributo specifico elemento del vostro XML.

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

'xsl: variable' non è necessario. Basta fare ''. Vedi http://www.w3.org/TR/xslt#attribute-value-templates per maggiori informazioni. –

Problemi correlati