Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 为什么不可能将DTD验证定义为独立于解析的过程?_Xml_Validation_Dtd - Fatal编程技术网

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

Xml 为什么不可能将DTD验证定义为独立于解析的过程?,xml,validation,dtd,Xml,Validation,Dtd,这个问题是关于中的一个注释,但似乎不是特定于Java的。SchemaFactory类用于根据外部模式验证XML 但是,该实现仅支持RELAXNG和XMLSchema,而不支持XMLDTD 它说: 请注意,由于XML DTD与解析过程紧密相关,并且对解析过程有重大影响,因此不可能将DTD验证定义为独立于解析的过程。因此,本规范没有定义XML DTD的语义。这并不禁止实现者以他们认为合适的方式实现它,但用户会被警告,在此接口上实现的任何DTD验证都必然偏离XML 1.0中定义的XML DTD语义 从

这个问题是关于中的一个注释,但似乎不是特定于Java的。
SchemaFactory
类用于根据外部模式验证XML

但是,该实现仅支持RELAXNGXMLSchema,而不支持XMLDTD

它说:

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


我想知道阻碍实现人员支持针对外部XML DTD的验证的潜在陷阱是什么?

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