XML / XSLT substring-before可以将多个匹配字符串作为第二个参数吗?

时间:2011-09-27 14:54:50

标签: xml xslt

XML / XSLT新问题。我为此道歉。我收到了一大堆代码并要求“看看这个”,我对XSLT并不是特别熟悉:(

我有一个.xsl文件可以转换一大堆故事文本,并使用该行删除第一句话:

<xsl:value-of select="substring-before(story,'.')" />

它工作得很好,主要是。问题是这样的:如果第一句用问号或感叹号结尾,我最后会用两句话。

有没有办法按照以下方式做某事:

<xsl:value-of select="substring-before(story,'.' or '!' or '?')" />

或者有没有办法使用正则表达式,例如

/^(.*?)[.?!]\s/

......只提取第一句话?

或者我非常偏离标准,最好等待常驻XSLT专家回来? :)

1 个答案:

答案 0 :(得分:1)

如果用于标点符号的字符集是相对有限的,则可以使用translate函数将其全部映射到单个字符(例如句点),然后使用substring-before。 e.g。

<xsl:value-of select="substring-before(translate(story,'?!','..'),'.')" />

编辑:我应该回答你的实际问题,不 - 你不能将一个布尔表达式作为substring-before中的第二个参数。