为什么不能将DTD验证定义为独立于解析的过程?

时间:2018-04-09 10:38:57

标签: xml validation dtd xml-dtd

这个问题是关于documentation of Java's SchemaFactory中的评论,但似乎不是特定于Java的。 SchemaFactory类用于根据外部模式验证XML。

但是,该实现仅支持 RELAX NG XML架构,但不支持 XML DTD

它说:

  

请注意,由于XML DTD与解析过程紧密相关并且对解析过程有重大影响,因此无法将DTD验证定义为独立于解析的过程。因此,本规范未定义XML DTD的语义。这并不禁止实现者以他们认为合适的方式实现它,但是警告用户在此接口上实现的任何DTD验证必然偏离XML 1.0中定义的XML DTD语义。

来自Oracle Java 10 Doc

我想知道阻碍实现者支持外部 XML DTD 验证的潜在缺陷是什么?

1 个答案:

答案 0 :(得分:1)

对外部DTD的验证不是问题;问题是将验证与解析分开。最明显的原因是DTD控制实体扩展的方式,但在DTD的详细语义中也存在许多细微的交互 - 我恐怕早就忘记了这些细节。