2013-11-04 109 views
9

替換字符串中的XSLT 2.0我有這樣與替換功能

"My string" 

字符串現在我想用best更換my使輸出會像best string。 我已經試過這樣

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

,但可能它是一個錯誤的語法

我用Google搜索了很多,但發現nothing..every其中的機制來做到這一點XSLT 1.0的一些事情是explained.Can任何一個告訴我怎麼做,在XSLT 2.0,最簡單的辦法相比,1.0

回答

18

考慮:

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

只需使用:

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

它拋出一個錯誤替換()是一個功能未知 – Athul

+1

@AKS:你確定你正在使用'XSLT 2.0'?如果是這樣,也許你應該在你的XSLT中聲明命名空間'xmlns:fn =「http://www.w3.org/2005/xpath-functions」'並使用函數作爲'fn:replace($ s1,'My' ,'最好')'。請參閱:http://www.w3schools.com/xpath/xpath_functions.asp –

+2

@AKS,如果您想使用XSLT 2.0,則需要使用XSLT 2.0處理器,如Saxon 9或AltovaXML或XMLPrime。 –

3

首先檢查一下,如果您的xslt處理器(saxxon)是最新版本。然後你必須在你的xslt-stylesheet的頭部設置 <xsl:stylesheet version="2.0"。而已。 您的代碼是很好,除了你忘了apostrophs:

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

必須

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

如何找出他正在使用哪個xslt處理器?我試圖使用xsl表單中的'replace'函數來處理Apache FOP 2.2,並將'xsl:stylesheet'版本更改爲2.0不足以解決我的問題。添加'xmlns:fn =「http://www.w3.org/2005/xpath-functions」'也不起作用。謝謝! –