如何使用Schematron测试测试特殊字符?

时间:2013-01-31 18:55:12

标签: regex schematron

我正在尝试设置一个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> 

那里的任何架构师都知道如何将unicode字符嵌入到正则表达式中吗?

提前致谢...

1 个答案:

答案 0 :(得分: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>

Output in XML ValidatorBuddy