我认为合理简单,我找不到任何明确的东西(除了缺乏明确的之外的事实)
是否有任何方法可以合并到模式中,处理指令节点在文档中的某个位置的要求,也可能验证处理指令目标?
例如:
<node>
<?my-instruction data ?>
</node>
将验证,而:
<node></node>
不会吗?
而且,更好的是:
<node>
<?my-other-instruction data ?>
</node>
也不会(因为我可以提供my-instruction
所需的目标)
如上所述,我无法在主题上找到任何明确的(或根本不存在),所以我不得不假设这是不受支持的。其他人已经提到PI用于“带外”数据和处理指令,因此在验证中不需要包含它们是合理的。会很好。
答案 0 :(得分:4)
XSD完全忽略实例文档中的处理指令。
我不确定为什么你很难找到这个。搜索“处理指令”的规范给出了一个命中,即3.1.4中的句子“上述定义意味着注释和处理指令,即使在文本中,也会被忽略所有·验证·目的。”
事实上,在XSD 1.1中,我们对于断言是否可以看到注释和处理指令存在争议。最后的决定是默认情况下它们不可见,但处理器可以提供一个开关来使它们可见。在Saxon 9.4中,您可以在命令行上使用--assertionsCanSeeComments:on来设置此开关。使用此开关集,您可以在模式中编写断言来测试是否存在处理指令 - 但是您不能将它们合并到复杂类型的语法中,这使得限制它们必须出现的确切位置变得棘手。
答案 1 :(得分:2)
我在XML Schema 1.1规范中找到的对处理指令的唯一引用见3.1.4节:
上述定义意味着评论和处理说明, 即使在文本中,也会被忽略所有·验证·目的。
这似乎意味着处理指令无法在XML Schema中表示。
答案 2 :(得分:1)
XML Schema仅用于验证元素和属性,并且在非常有限的范围内验证其内容(枚举或数据类型)。
没有规定检查其他节点类型,例如注释或处理指令。
还有XML Schema的替代方法可用于验证。例如,Schematron可让您查看内容。