[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 メーリングリストの案内