| MAP | SASAX ドキュメント > SASAX とは何か - (2/3) [ <| 1| 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 を再利用することも可能です。
| MAP | SASAX ドキュメント > SASAX とは何か - (2/3) [ <| 1| 2| 3| > ] |