3

我想相当简单的一个,我只是找不到任何确定的东西(除了缺乏确定的东西之外

有没有办法将处理指令节点的要求合并到文档中的某个位置,也可能验证处理指令目标?

例如:

<node>
    <?my-instruction data ?>
</node>

将验证,而:

<node></node>

不会?

而且,更好的是:

<node>
    <?my-other-instruction data ?>
</node>

也不会(假设我可以提供所需的目标my-instruction

如前所述,我找不到关于该主题的任何确定性(根本没有),所以我只能假设这是不支持的。其他人提到 PI 旨在用于“带外”数据和处理指令,因此在验证中不需要包含它们似乎是明智的。不过会很好。

4

3 回答 3

4

XSD 完全忽略实例文档中的处理指令。

我不确定你为什么很难找到这个。在规范中搜索“处理指令”会得到一击,即 3.1.4 中的句子“上述定义意味着注释和处理指令,即使在文本中,出于所有·验证·目的都将被忽略。”

事实上,在 XSD 1.1 中,我们就评论和处理指令是否应该对断言可见进行了一些争论。最后的决定是默认情况下它们是不可见的,但是处理器可以提供一个开关来使它们可见。在 Saxon 9.4 中,您可以在命令行上使用 --assertionsCanSeeComments:on 设置此开关。使用此开关集,您可以在模式中编写断言来测试是否存在处理指令 - 但您不能将它们合并到复杂类型的语法中,这使得精确限制它们必须出现的位置变得很棘手。

于 2012-01-03T15:08:23.460 回答
2

我可以在XML Schema 1.1规范中找到的对处理指令的唯一参考是在第 3.1.4 节中:

上面的定义意味着注释和处理指令,即使是在文本中间,出于所有·验证·目的都将被忽略。

这似乎意味着处理指令不能在 XML 模式中表示。

于 2012-01-03T15:02:54.230 回答
1

XML Schema 仅用于验证元素和属性,并在非常有限的范围内验证它们的内容(枚举或数据类型)。

没有规定检查其他节点类型,例如评论或处理指令。

有用于验证的 XML Schema 的替代方法。例如,Schematron可让您检查内容。

于 2012-01-03T15:06:36.027 回答