xslt查找并替换regex-lookarounds

时间:2013-07-23 11:03:52

标签: regex xslt xslt-2.0 regex-lookarounds

我遇到XSLT replace()的问题。

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>

问题是<字符!

1 个答案:

答案 0 :(得分:1)

'&lt;'的常用符号文字字符串中的内容是&lt;

然而,这并没有为我的XSLT处理器(Kernow,使用Saxon 9.1.0.3)修复它。看起来,它不需要括号和竖线的所有转义。此外,外观不起作用。我能够使用

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

(为了清楚起见,用'!'替换。)

您的示例中还有一些其他基本错误我必须首先解决:<br>未正确关闭,您不能使用<xsl:value-of ..终止</xsl:variable>