[Seasar-user:786] Re: DTD が効いてない件について
Yasuo Higa
higa
2005年 4月 6日 (水) 01:08:16 JST
<20040526000917.6466.S_CHINEN @ pc.club.ne.jp> の、
"[Seasar-user:781] DTDが効いてない件について" において、
""s.chinen" <s_chinen @ pc.club.ne.jp>"さんは書きました:
ひがです。
> こんばんわ、知念です。
>
> 以前「[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メソッドでハンドリングできました
>
thx.
errorはそのまま例外をthrow。
warningはSystem.errに出力するように修正しておきます。
---
Yasuo Higa <higa @ isid.co.jp>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.
Seasar-user メーリングリストの案内