[Seasar-user:781] DTDが効いてない件について

s.chinen s_chinen
2005年 4月 6日 (水) 01:08:15 JST


こんばんわ、知念です。

以前「[Seasar-user:565] DTDの件」で話されていた
コンポーネント定義XMLパース時にDTDが効いていない現象についてですが、
org.seasar.framework.xml.SaxHandlerクラスにて、
以下のメソッドがオーバーライドされていないのが原因のようです。

org.xml.sax.ErrorHandler#error(SAXParseException)
org.xml.sax.ErrorHandler#fatalError(SAXParseException) <= これは不要かも
org.xml.sax.ErrorHandler#warning(SAXParseException)

org.xml.sax.helpers.DefaultHandlerのソースを確認した限りでは、
javax.xml.parsers.SAXParser#setValidate(boolean)でtrueをセットしても、
org.xml.sax.helpers.DefaultHandlerではerror,warningは無視している
(fatalErrorだけはハンドリングした例外をそのままスローする)ため、
サブクラスで適切にエラーを処理するようにオーバーライドしてやらないと
何も通知されてこないようです。

DTDの検証エラーについては、errorメソッドでハンドリングできました

*********************************************************************

知念 智
mail:s_chinen @ pc.club.ne.jp

*********************************************************************





Seasar-user メーリングリストの案内