我已经创建了一个schematron规则,它以不区分大小写的方式(由"i“标志提供)搜索由变量给定的特定文本:
<sch:report test="matches(.,concat('(^|\W)',$phrase,'(\W|$)'),'i')" role="error"
sqf:fix="replaceWithKey">...</sch:report>where $phrase =‘(短语)’
我希望用户能够使用快速修复并替换文本,但我不知道如何在快速修复中提供不区分大小写的解决方案。我的初始版本如下所示:
<sqf:fix id="replaceWithKey">
<sqf:stringReplace regex="{$phrase}">
...
</sqf:stringReplace>快速修复仅在文本部分的大小写与$phrase完全相同时有效,尽管在所有情况下都会识别违反规则的情况。有没有办法利用regex属性中的"i“标志功能?
发布于 2016-07-08 23:16:11
我没有使用SQF,但我认为您最后一个问题的答案是“不”。根据reference docs的说法,<sqf:stringReplace>不允许flags属性,就像<xsl:analyze-string>在XSLT中所允许的那样。
并且regex syntax不提供在正则表达式本身内传递这些标志的方法。
最简单的方法可能是修改SQF以向<sqf:stringReplace>添加flags属性,或者请SQF作者进行更改。
发布于 2016-07-14 01:00:24
关于此主题的两个更新:
sqf:stringReplace中的flags的支持。解决方法是将sqf:replace函数与xsl:analyze-string结合使用,如下所示:... -string>
https://stackoverflow.com/questions/38268457
复制相似问题