Home of: [工房 "藤車"] > [SourceForge.net における SASAX]

SASAX とは何か - (2/3)

値の検証

属性の検証

前節で述べたように、 SASAX においては、 解析対象の(期待される)文書構造は、 (1)Java オブジェクトの構造として表現され、 (2)そのオブジェクトを用いて検証されます。

そして、 "属性の検証" に示すようなコードにより、 要素の開始タグに記述した属性を検証することができます。

// 以下の XML 文書を解析するコード
// <int attr="属性値">
//   123456
// </int>

IntElement element =
    new IntElement(null, "", "int"){
        protected void examine(ParseContext context,
                               Attributes attrs)
            throws SAXException //
        {
            String value = attrs.getValue("", "attr");
            // attr 属性値の検証
        }
    };

属性値の検証

もちろん "composite" 要素の属性も同様の方法で検証可能です。 詳細は API ドキュメントを参照してください。

値の検証

SASAX は、 XML 文書の検証手続きをカスタマイズするための、 拡張可能な検証機構を提供しています。

"値の検証" に示すようなコードにより、 要素それ自身の値を検証することが出来ます。

IntElement element =
    new IntElement(null, "", "int");

element.addValidation(new Validation(){
    public Object validate(ParseContext context,
                           Object value)
        throws SAXException //
    {
        Integer integer = (Integer)(value);
        switch(integer.intValue()){
          case 128:
          case 512:
          case 4096:
            return value;

          default:
            throw new SAXNotRecognizedException("invalid");
        }
    }
});
値の検証

IntElement はまず始めに、 (文字列として)XML 文書中に記述された値が、 整数の文字列表現形式として受理可能なものか否かを検証します。 次に、java.lang.Integer としてデシリアライズしたものを、 あなたの作成した固有の Validation へと渡します。

ですので、 上記例における Validation を実装する内部クラスは、 XML 文書に記述された "値" を "Integer" として検証することが可能です。

複数の Validation の組み合わせにより、 検証手続きをカスタマイズすることも可能ですし、 自身の固有 Validation を再利用することも可能です。


>> 次ページへ(3/3) (ページ先頭/末尾のナビゲーションバーからも移動できます)