0

我正在尝试设置一个 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 字符嵌入到正则表达式中吗?

提前致谢...

4

1 回答 1

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>

XML ValidatorBuddy 中的输出

于 2013-02-03T14:10:18.107 回答