2013-11-04 73 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”'也不起作用。谢谢! –