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

B pc.club.ne.jp s.chinen s_chinen
2004年 5月 26日 (水) 01:10:34 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:[E-MAIL ADDRESS DELETED]

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





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