xml - Schematrion 不区分大小写 sqf :stringReplace

标签 xml xslt schematron

我创建了一个 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/

相关文章:

python - 元素树 : Can't build root tree when getting XML from webpage

xml - XSLT 1.0 使用基于父属性的键进行分组

xml - 如何使用 XSLT 连接大量 XML 文件?

python - 在 Python 中使用 lxml 根据 Schematron 验证带有命名空间的 XML

c# - 如何更改 XML 父标签

ruby - 使用 XPath 选择根和子匹配表达式

java - Android studio 处理多个用户。如何修改布局的可点击参数?

xml - XSLT 不工作...对于属性

xml - Schematron-基于其位置的元素验证

xml - 如何检查属性是否驻留在元素内?