最近、私の Fedora 16 は libxml2 を以前のバージョンから最新の rpm libxml2-2.7.8-8.fc16.i686 に自動アップグレードしましたが、突然 dtd 検証が DTD ファイルの宣言の欠落について不平を言い始めました。このアップグレードの前は、すべて正常に機能していました。もちろん、検証を無効にしても問題なく動作しますが、それは考えではありません。libxml2 を直接使用するのではなく、実際には libxml2 のラッパーである libxml++ を使用します。
この問題を引き起こす可能性のある libxml2 のコードのいくつかの変更を検索しようとしましたが、libxml2 サイトの最近の変更とこのパッケージの Fedora サイトの変更には、DTD コードの変更については言及されていません (最近のリリース)。
以下の xml メッセージが突然無効になりました。
<?xml version="1.0"?><!DOCTYPE MYAPP SYSTEM "myapp.dtd"><MYAPP><Command type="Connect"/></MYAPP>
次のエラー メッセージが表示されます。
No declaration for attribute type of element Command
No declaration for element Command
No declaration for element MYAPP
これは、私が使用する myapp.dtd からの (削除された) スニペットです。
<!ELEMENT MYAPP (Command|Result)>
<!ELEMENT Command (Parameters?)>
<!ELEMENT Parameters (..a lot of other types and records..)>
<!ATTLIST Command type (None|
Connect|
Disconnect
) "None">
突然これを引き起こす可能性のあるものについて、誰かがいくつかのポインターを持っていますか、誰かがこのバージョンの変更のポインター/リンクを持っていますか? それは既知のバグですか、手がかりはありますか??
示唆されているように、(最新バージョン) libxml2 を再コンパイルしましたが、変更はありませんでした。最新バージョンの libxml++ (2.35-3) も再コンパイルしました。エラーの行番号と列が適切に出力されるようになりましたが、変更されたのはそれだけです。 . パーサーは、(以前に受け入れられた) xml ファイル/メッセージをまだ受け入れません。