希望有人可以提供帮助...一直在试图找出如何搜索未包含在特定元素中的特定文本。
案文"图"可以出现在XML文档中的任何位置。单词Figure也可拼写为" Figure" ...
这是我到目前为止所做的......但它没有接受文字文字"图" ...
<rule context="text()">
<assert test= "(.,'FIGURE')[not(/GRPHCREF)]" role="error" id="error_grphcref_figure"
>Figure reference not wrapped in GRPHCREF.</assert>
</rule>
非常感谢任何建议......
答案 0 :(得分:1)
如果您要测试text()
节点是否包含单词“Figure”,请使用contains()
功能。要比较不区分大小写,请使用upper-case()
函数,或者使用两个文字字符串“Figure”和“Figure”测试contains()
。
以下规则断言如果text()
节点包含单词“Figure”(不区分大小写),则它必须具有GRPHREC
元素祖先。
<rule context="text()[contains(upper-case(.), 'FIGURE')]">
<assert test= "ancestor::GRPHCREF" role="error" id="error_grphcref_figure"
>Figure reference not wrapped in GRPHCREF.</sch:assert>
</rule>
虽然我认为将上下文评估和断言测试的值测试分开会更清晰,正如我上面所做的那样。但是,下面演示了如何在所有text()
节点上保持更一般的匹配,并应用断言测试中的所有条件:
<rule context="text()">
<assert test= "contains(upper-case(.), 'FIGURE') and ancestor::GRPHCREF" role="error" id="error_grphcref_figure"
>Figure reference not wrapped in GRPHCREF.</sch:assert>
</rule>