1
当文档的XSD模式可用时,可以忽略用于验证的内部DTD吗?如果模式可用,java忽略用于验证的DTD
如果没有在源文档中指定架构,应使用DTD进行验证。
下面是我如何配置解析器。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);
factory.setFeature("http://apache.org/xml/features/validation/dynamic", true);
factory.setSchema(schemaFactory.newSchema());
builder.setErrorHandler(errorHandler);
我用的是“动态”功能,使解析器执行DTD验证仅当DTD是指定 。
我根本无法摆脱DTD验证,只有源XML文档具有XSD架构时,我才需要忽略它。
有时,DTD声明仅用于声明DTD实体,并且模式引用用于根据W3C XML模式进行验证。
问题是DTD验证只能在解析时执行,并且在此之前我不知道文档是否具有DTD或XSD的内部引用。
DTD和模式重叠,但如您所示,DTD另外提供实体。您可以编写自己的EntityHandler,并保留所有(递归包含的)DTD本地。提高速度性能。 – 2013-04-08 06:53:29
是的,但我需要以某种方式查看文档是否具有XSD。如果不是,则应使用DTD进行验证。 – RabbitObject 2013-04-08 07:00:36