2

次の問題があります: いくつかの名前空間を持つ XML ドキュメントがあります。開始タグは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<REQ-IF 
   xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd"
   xmlns:doors="http://www.ibm.com/rdm/doors/REQIF/xmlns/1.0"
   xmlns:reqif="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd"
   xmlns:reqif-common="http://www.prostep.org/reqif"
   xmlns:reqif-xhtml="http://www.w3.org/1999/xhtml"
   xmlns:rm="http://www.ibm.com/rm"
   xmlns:rm-reqif="http://www.ibm.com/rm/reqif"
   xmlns:xhtml="http://www.w3.org/1999/xhtml"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

ご覧のとおり、多くの名前空間があります。パーサーとして Xerces を使用します。問題は、パーサーが認識していない名前空間から URI にアクセスしようとすることです。解析が遅くなるため、これは悪いことです。たとえば、「http://www.prostep.org/reqif」は Web ページに解決されます。コンテンツは問題なく解析されます (もちろん、ネームスペース URI は単なる名前であるため)、URI を取得するときにパーサーが長時間ハングするため、時間がかかります。

だから、2つの質問:

  1. Xerces が名前空間 URI を「実際の」コンテンツを含む URI のように扱おうとするのはなぜですか?
  2. これを無効にするにはどうすればよいですか?

記録として、URI はスキーマまたは DTD の場所ではありません。外部 DTD の読み込みを無効にしようとしましたが、もちろん何もしませんでした:

parser.setProperty("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

何かご意見は?

4

0 に答える 0