2013-11-04 5 views
9

ho una stringa come questasostituire stringa in XSLT 2.0 con funzione di sostituire

"My string" 

Ora voglio sostituire my con best in modo che l'uscita sarà come best string. ho provato qualche cosa come questa

<xsl:value-of select="replace('my string',my,best)"/> 

ma probabilmente la sua una sintassi sbagliata

Googled un sacco ma trovato nothing..every in cui il meccanismo per fare questo XSLT 1.0 è explained.Can uno qualsiasi mi dica come farlo in XSLT 2.0, Il modo più semplice rispetto al 1,0

risposta

18

Dato:

<xsl:variable name="s1" select="'My string'"/> 

utilizzare semplicemente:

<xsl:value-of select="replace($s1, 'My', 'best')"/> 
+0

sua gettando un errore replace() è una funzione sconosciuta – Athul

+1

@AKS: Sei sicuro che si sta utilizzando 'XSLT 2.0'? Se è così forse dovresti dichiarare lo spazio dei nomi 'xmlns: fn =" http://www.w3.org/2005/xpath-functions "' nel tuo XSLT e usare la funzione come 'fn: replace ($ s1, 'My') , 'migliore') '. Vedere: http://www.w3schools.com/xpath/xpath_functions.asp –

+2

@AKS, sarà necessario utilizzare un processore XSLT 2.0 come Saxon 9 o AltovaXML o XMLPrime se si desidera utilizzare XSLT 2.0. –

3

Primo controllo, se il tuo processore xslt (saxxon) è l'ultima versione. Quindi devi impostare <xsl:stylesheet version="2.0" nella testa del tuo xslt-stylesheet. Questo è tutto. Il codice andava bene, oltre hai dimenticato i apostrophs:

<xsl:value-of select="replace('my string',my,best)"/> 

deve essere

<xsl:value-of select="replace('my string','my','best')"/> 
+0

Come si può scoprire quale processore xslt sta usando? Sto cercando di utilizzare la funzione 'replace' all'interno di un modulo xsl per essere elaborata da Apache FOP 2.2 e la modifica della versione' xsl: stylesheet' a 2.0 non è stata sufficiente per risolvere il mio problema. L'aggiunta di 'xmlns: fn =" http://www.w3.org/2005/xpath-functions "' non ha funzionato neanche. Grazie! –