【问题标题】:How do I test for special characters using Schematron tests?如何使用 Schematron 测试来测试特殊字符?
【发布时间】:2013-01-31 18:55:11
【问题描述】:

我正在尝试设置一个 schematron 测试来验证 XML 中的特殊字符...

更具体地说,我想在出现版权符号 (Unicode U+00A9) 时发出警告。

当使用以下任何一种表示法表示规则时,似乎无法解析 schematron xml 文件...

<iso:rule context="myelement>
   <iso:report test="matches(., '\u00A9')">{ES1037} Copyright Symbol Detected</iso:report>
</iso:rule> 

<iso:rule context="myelement>
   <iso:report test="matches(., '\u{00A9}')">{ES1037} Copyright Symbol Detected</iso:report>
</iso:rule> 

<iso:rule context="myelement>
   <iso:report test="matches(., '\u{A9}')">{ES1037} Copyright Symbol Detected</iso:report>
</iso:rule> 

<iso:rule context="myelement>
   <iso:report test="matches(., '\x{00A9}')">{ES1037} Copyright Symbol Detected</iso:report>
</iso:rule> 

是否有任何 schematron 专家知道如何将 unicode 字符嵌入到正则表达式中?

提前谢谢...

【问题讨论】:

    标签: regex schematron


    【解决方案1】:

    您需要将代码编写为字符实体,就像它用于 XML Schema 标准:

    <?xml version="1.0" encoding="UTF-8"?>
    <iso:schema xmlns:iso="http://purl.oclc.org/dsdl/schematron">
        <iso:pattern id="unicode in regex">
            <iso:rule context="a">
                <iso:report test="matches(., '&#xa9;')">
                    Copyright found
                </iso:report>
            </iso:rule>
        </iso:pattern>
    </iso:schema>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-25
      • 2011-07-30
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多