我创建了一个 schematron 规则,以不区分大小写的方式搜索由变量给出的特定文本(由“i”标志提供):
<sch:report test="matches(.,concat('(^|\W)',$phrase,'(\W|$)'),'i')" role="error"
sqf:fix="replaceWithKey">...</sch:report>
哪里 $phrase = '(phrase)'
我希望用户能够使用快速修复并替换文本,但我不知道如何在快速修复中提供不区分大小写的解决方案。我的初始版本如下所示:
<sqf:fix id="replaceWithKey">
<sqf:stringReplace regex="{$phrase}">
...
</sqf:stringReplace>
只有当文本部分的大小写与 $phrase 完全相同时,快速修复才有效,尽管在每种情况下都会识别出违反规则的情况。有没有办法利用正则表达式属性中的“i”标志功能?
最佳答案
我没有使用过 SQF,但我认为您最后一个问题的答案是“否”。根据reference docs , <sqf:stringReplace>
不允许 flags
属性,如 <xsl:analyze-string>
在 XSLT 中执行。
还有 regex syntax不提供在正则表达式本身内传递这些标志的方法。
可能最简单的方法是修改 SQF 以添加 flags
属性为 <sqf:stringReplace>
,或要求 SQF 作者进行更改。
关于xml - Schematrion 不区分大小写 sqf :stringReplace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38268457/