2012-07-23 4 views
8

Ho un foglio di stile in cui preferisco inserire la variabile stringa predefinita nell'elemento di testo xsl, ma non riesco a trovare alcun puntatore durante la ricerca sul web.Come fare riferimento a una variabile in xsl: elemento di testo?

Ad esempio:

<xsl:variable name="var" select="node()/ref/text()"/> 
... 
<xsl:text>Some text where I want to append $var variable desperately</xsl:text> 
... 

ho provato con $ var, ($ var), {$ var} ...

risposta

11
Some text where I want to include the value of <xsl:value-of select='$var'/>. 

noti che <xsl:text> è necessario solo per controllare il comportamento su spazi bianchi. La maggior parte delle volte, puoi semplicemente digitare del testo e includere solo questo elemento quando il risultato non è quello che ti aspettavi - immagino che conoscere le regole per quando usare <xsl:text> non guasta, comunque. :) (E non è complicato: se usi il numero <xsl:text>, i tuoi nodi di testo avranno solo spazi bianchi o includeranno spazi bianchi aggiuntivi da evitare alle due estremità.)

MODIFICA: nota che lo spazio bianco nelle variabili non lo fa t bisogno xsl:text per la protezione quando utilizzato, che è solo per la fase di analisi XSL:

<xsl:variable name="newline"><!-- can be global --> 
<xsl:text> 
</xsl:text> 
</xsl:variable> 

<xsl:when test="starts-with(., $newline)"> 
    ... 
</xsl:when> 

Here's some text<xsl:value-of select='$newline' />with formatting. 
+0

Sì Io lo uso per bianco spazio (LF) e in realtà variabile che volevo inserire è anche lo spazio di formattazione predefinito: D Quindi la soluzione può essere fatta con '' ma non all'interno di '' elemento in quanto non è consentito. Aspetterò per vedere se effettivamente non è possibile con altri mezzi, e quindi contrassegnerò la tua risposta come corretta. Grazie. – theta

+0

@theta: stai dicendo che '' non è consentito all'interno di un elemento '' '? Wow hai ragione. Ho dimenticato. – LarsH

4

xsl:text viene utilizzato solo per testo uscita fissa, e non possono contenere istruzioni nidificate. L'istruzione per l'output di un testo variabile è xsl:value-of.

6

Ecco un altro modo:

<xsl:value-of select="concat(
    'Some text where I want to append ', 
    $var, 
    ' variable desperately')" /> 

Anche se è un po 'brutto, questo ti dà il pieno controllo dello spazio vuoto tra il testo e il testo della variabile.

+0

Questa è la vera risposta. – Andrew

0

ho fatto qualcosa di simile per creare una variabile con lo spago e un'altra variabile su di esso

<xsl:variable name="imgsrc">http://mirrors.creativecommons.org/presskit/buttons/<xsl:value-of select='$iconSize' />/<xsl:value-of select="substring-before($licenceTypeAndText, '|')" /></xsl:variable> 

e questo produrrà una variabile con un valore come questo

http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by.png 
Problemi correlati