一个XML文档没有声明DTD(DTD在一个固定的地方),那么如何用特定的DTD去验证这个XML文档?

07-03-16 234aini
如题:

比如我在本地有一个DTD语法文档A.dtd,现在有一系列的xml文档o.xml,p.xml,q.xml,(这些xml都没有DOCTYPE声明,因为我们都知道需要用a.dtd来验证这些xml文档),请问如何验证?

用的是xerces的解析器。

DevelopWorks上有一篇文章是讲Xerces的语法缓存机制的,但是他只讲了如何缓存,却没有提及如何用缓存的语法在解析器解析XML文档的时候发生作用!

pool = new XMLGrammarPoolImpl();

XMLGrammarPreparser preparser = new XMLGrammarPreparser();

preparser.registerPreparser(XMLGrammarDescription.XML_DTD, null);

preparser.setProperty("http://apache.org/xml/properties/internal/grammar-pool",pool);

preparser.setFeature("http://xml.org/sax/features/namespaces", true);

preparser.setFeature("http://xml.org/sax/features/validation", true);

preparser.preparseGrammar(XMLGrammarDescription.XML_DTD,new XMLInputSource(null,"e:\\liusu\\cosmact\\VoiceXml2.0.dtd", null));

pool.lockPool();
<p>

上面的代码把DTD文档解析到语法池中来,然后怎么提取出来然后在解析XML文档的时候使用呢?

猜你喜欢