以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 DTD/XML Schema 』 (http://bbs.xml.org.cn/list.asp?boardid=23) ---- 我对XML Schema的一些理解: (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=25475) |
-- 作者:flashjean -- 发布时间:12/15/2005 10:04:00 AM -- 我对XML Schema的一些理解: XML Schema其实就是一些XSD的文件。是对XML文件的定义和约束。说到XML Schema就不能不说 XML Bean 。 那么什么是 XML Bean 呢?给大家一个详细的描述。 XML Bean 其实原来是Bea公司的一个产品,后来被Bea捐献出来给 阿帕奇了,变成了一个开源的项目,不过该项目据lvzz说依然被Bea公司所维护。
核心概念 XMLBeans包含三套API,或者说三套用来操纵XML数据的机制: XMLBeans与其它Java绑定技术,比如JAXB和Castor的不同之处在于:XMLBeans同时支持两种同步XML访问模型(参见图1)--一种针对底层XML内容,另一种针对强类型的Java类。除此之外,XMLBeans的一个主要目标(在它的最后版本中)是为XML Schema的全部特性及功能提供100%的支持(如同W3C Recommendation所阐述的)。 我今天要说的其实主要是XSD, XML Bean 可以理解成一个对象化的 访问XML的小工具。 其实关键还是把 XSD搞懂。 我也不太懂,就凑合的瞎说把。
先给大家看一个XSD和XML的样子: 上面的图就是 针对 xsd 生成的 xml 文件的样子。
OK,大家有了初步认识后,就好办了! 大家看一下,下面三个 XSD有什么区别吗? 例1: 例2: 例3: 应该是有很大的区别把! 但是,他们却能产生下面同样的 XML文件 这样把,我再把这三个XSD的 Schema/WSDL设计视图展示给大家。 例1: 例2: 通过 Schema/WSDL设计视图我们可以看出,例1的图上多了一个类似 快捷方式的小箭头,这说明什么呢?我们再回头看例1的XSD的发现,带箭头的元素名称header是一个和 root element 也就是 transcall ,并列的 element。 这种element是 Global的 elements 。哈哈 ,就是全局的,全局的意思,就是你在xml的任何地方都可以reffer 的。 和Global 相对的是 anonymous nested 也就是内部的匿名的。这种内部匿名是不能被其外部所应用的,不知道我说的大家是否清楚。有点类似java的内部匿名类的东东。 ―――――――――――――――――――――――――――――――――――――― 接下来,我们看Schema/WSDL设计视图的例2, 大家发现这个图描述 element header 时候多了一个type的描述。而且该type是 transcall:header . 并且 后面的 用黄色方框给包起来了。 需要再回头结合例2的XSD看,你会发现 黄色方框包起来的部分正好是一个 complexType的定义。(需要解释什么是 complexType 吗?,他是XSD中的一种元素类型定义,一般有simpleType的 ,比如 xs:string,xs:int 的,还有就是complexType,他可以是一些复杂类型,包括自定义类型),该例子中就是用了一个自定义的 complexType,并且名称是 header 。需要说明的是,这个叫做 header 的complexType,也是一个 Global的。正因为他是 Global的。所以 header这个 element 在设置他的 type 时候才能够调用他。另外 元素 header在调用名称是header的complexType时候,需要使用他的命名前缀,transcall,这是因为在schema的定义时候,我们加了这个transcall的 prefix 。 ――――――――――――――――――――――――――――――――――――――――― 最后,看看 Schema/WSDL设计视图 的例3,这个是最普通也是最传统的,我是这么理解的! 他和我们原先理解的xml 很象就是一颗树下来。这个不用解释了把! ――――――――――――――――――――――――――――――――――――――― 最后,我要说,为什么要把element或者complexType定义成 Global 的呢?我觉得原因还是一个:就是 OO的思想。 OO强调模块化,可复用,采用 Global 定义的东西正好实现了这个目的。到目前为止,我还没有找到其他的更好的理由,非要采用例1和例2的xsd设计。
不过殊途同归,实现需求才是软件开发的目标。
后记:对于我提到的 xml bean 大家进可以去 阿帕奇网站下载,阿帕奇的网址 [URL=http://www.apache.org]http://www.apache.org[/URL] 。最新版本是 2.1的 ,用法很简单。
|
-- 作者:anchen0617 -- 发布时间:12/18/2005 10:53:00 AM -- 说的好,以后多发一些这样的帖子。顶一下了。 |
-- 作者:xbbing -- 发布时间:5/8/2006 11:46:00 PM -- 看不到图片 |
-- 作者:avaya2008 -- 发布时间:10/28/2007 9:06:00 PM -- 不错呵呵 |
-- 作者:dandanyidian -- 发布时间:11/3/2007 3:07:00 PM -- 不错呢,真的不错啊! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
1,816.406ms |