Xsd extensions
Unportable types
Cycle
1. xsd 扩展
Xsd可以通过扩展来实现对数据的约束,例如:
<simpleType name="Code">
<restriction base="string">
<pattern value="[A-Z][A-Z][A-Z]"/>
</restriction>
</simpleType>
通过一个正则表达式来约定Code的类型是3个大写字母,如果把这个field转换为java 的String这个约束就失去作用了。
2. 不通用的数据类型
这点很好理解,ws之所以流行最核心的特点就是跨平台的互操作性。但有些xml的数据类型是有平台约束的,以前遇到过JAVA程序访问.Net平台的WS时,传送的数据总是有问题
后来发现日期类型的定义是不同的。不能简单的传一个date 对象,而需要对数据进行截位处理。
3. 循环定义
这个在java中经常会碰到,比如teacher和course的定义,teacher中可能需要包含几个course
而course中也可能包含几个teacher定义.所以Teacher和Course类相互引用。
如果把它们转换到xml就很难定义,虽然可以采用reference的方法来做,但是就不能对xml结构进行验证了。
此外如果使用reference就需要采用SOAP (RPC/encoded),而非document/literal编码
[1]http://static.springframework.org/spring-ws/site/reference/html/why-contract-first.html