XML / XSLT新问题。我为此道歉。我收到了一大堆代码并要求“看看这个”,我对XSLT并不是特别熟悉:(
我有一个.xsl文件可以转换一大堆故事文本,并使用该行删除第一句话:
<xsl:value-of select="substring-before(story,'.')" />
它工作得很好,主要是。问题是这样的:如果第一句用问号或感叹号结尾,我最后会用两句话。
有没有办法按照以下方式做某事:
<xsl:value-of select="substring-before(story,'.' or '!' or '?')" />
或者有没有办法使用正则表达式,例如
/^(.*?)[.?!]\s/
......只提取第一句话?
或者我非常偏离标准,最好等待常驻XSLT专家回来? :)
答案 0 :(得分:1)
如果用于标点符号的字符集是相对有限的,则可以使用translate函数将其全部映射到单个字符(例如句点),然后使用substring-before。 e.g。
<xsl:value-of select="substring-before(translate(story,'?!','..'),'.')" />
编辑:我应该回答你的实际问题,不 - 你不能将一个布尔表达式作为substring-before中的第二个参数。