2013-07-23 182 views
1

我遇到了XSLT replace()問題。xslt查找並替換正則表達式

XML

<root> 
<title>I am title</title> 
<body> 
the new formula is:<br/> 
the speed test 234 km/h<br> 
the weight is 49 kg<br/> 
in the 1492 Lorenzo de Medici die. 
etc. 
<dida>the mass is 56 kn</dida> 
</body> 
</root> 

我必須更換測量系統的數量畢竟空間。

PHP,我發現這個正則表達式:

((?<=\d)\s(?=km|kg|kn)) 

XSLT我:

<xsl:template match="//*/text()"> 
<xsl:value-of select="replace(., '\(\(?\<=\\d\)\\s\(?=km\|kg\|kn\)\)', '&nbsp;')"></xsl:variable> 
</xsl:template> 

問題是<性格!

+0

通常,XPath正則表達式語法是PHP和Perl允許的一個子集,並且您不能認爲您可以以這種方式重複使用PHP正則表達式。通常有另一種實現你想要的方式,通常更簡單。 –

回答

1

爲「<」一個字符串內的通用符號是&lt;

然而,這並沒有解決它爲我的XSLT處理器(Kernow,使用撒克遜9.1.0.3)。看起來,它並不需要括號和垂直條的所有逃脫。另外,這些變換不起作用。我能夠解決這個問題使用

<xsl:value-of select="replace(., '(\d)\s(km|kg|kn)', '$1!$2')"></xsl:value-of> 

(爲了清楚起見用'!'代替)。

有在你的榜樣其他一些基本的錯誤,我不得不首先解決:<br>沒有正確關閉,你不能用</xsl:variable>終止<xsl:value-of ..

+0

非常感謝! xml只是一個例子,並且從xslt複製和粘貼我犯了錯誤 – steguozzo