XML/XSLT 新手问题。我为此道歉。我收到了一大块代码,并被要求“看看这个”,但我对 XSLT 不是特别熟悉 :(
我有一个 .xsl 文件,它可以转换一大块故事文本,并使用以下行提取第一句话:
<xsl:value-of select="substring-before(story,'.')" />
大部分情况下,它工作正常。问题是这样的:如果第一个句子以问号或感叹号结尾,我将以两个句子结尾。
是否有任何方法可以按照以下方式做某事:
<xsl:value-of select="substring-before(story,'.' or '!' or '?')" />
或者有没有一种使用正则表达式的方法,例如
/^(.*?)[.?!]\s/
...只提取第一句话?
或者我是否完全偏离了目标,最好等待常驻 XSLT 专家回来? :)
最佳答案
如果您的标点符号字符集相对有限,您可以使用翻译功能将其全部映射到单个字符(例如句点),然后使用 substring-before。例如
<xsl:value-of select="substring-before(translate(story,'?!','..'),'.')" />
编辑:我应该回答你的实际问题,不 - 你不能将 bool 表达式作为 substring-before 中的第二个参数。
关于xml - XML/XSLT substring-before 能否将多个匹配字符串作为第二个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571210/