最近在公司问了一下,知道schema的人很少,能够运用的更是凤毛麟角.
schema是用来定义xml的,就象定义数据库中库中要定义表结构,没有schma的xml是一盘散沙.
在很多产品中,都能看到schema的身影,比如.net中的dataset,Office中的infopath,WebService中的wsdl...
schema的一些特点:
定义简单和复杂的数据结构
用NameSpace来区别,相互引用
语言无关
可以加入描述等附加信息...
先看看schema的简单功能:


















手写xml是个很痛苦的事情,手写schema更痛苦.即使用xmlspy,还是有些东西写不出来,比如复杂的数据限制.
xmlbeans是bea捐赠给apache的根据schema生成Java Bean的工具.上面的schema通过编译:
scomp -src src test.xsd
生成如下类:(注意package是xsd的targetNamespace,可以通过配置文件调整)
其中Gender的枚举类型被自动生成嵌套枚举类,是不是很方便呢?







测试一下:












运行结果:
<xml-fragment>
0467
</xml-fragment>
验证结果:true
<xml-fragment>
女
</xml-fragment>
验证结果:true
<xml-fragment>
李
</xml-fragment>
验证结果:false
注意:
ChineseName的验证结果为false,因为长度不符合.
因为schemaType只描述数据,<xml-fragment>只是匿名容器
除了上面的newInstance()和validate()方法,还有一些其它实用方法:
















