新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> DTD, XML Schema(XMLS), RELAX NG
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DTD/XML Schema 』 → 我对XML Schema的一些理解: 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 13105 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: 我对XML Schema的一些理解: 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     flashjean 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:4
      积分:108
      门派:XML.ORG.CN
      注册:2005/12/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flashjean发送一个短消息 把flashjean加入好友 查看flashjean的个人资料 搜索flashjean在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flashjean的博客楼主
    发贴心情 我对XML Schema的一些理解:

    XML Schema其实就是一些XSD的文件。是对XML文件的定义和约束。说到XML Schema就不能不说 XML Bean 。 那么什么是 XML Bean 呢?给大家一个详细的描述。

    XML Bean 其实原来是Bea公司的一个产品,后来被Bea捐献出来给 阿帕奇了,变成了一个开源的项目,不过该项目据lvzz说依然被Bea公司所维护。

    核心概念

    XMLBeans包含三套API,或者说三套用来操纵XML数据的机制:
    1. XML Cursor: XMLBeans实现为底层的XML文档提供了一种类似DOM的简单树状导航API,它甚至在XML Schema (xsd 文件)没被编译的情况下也能使用。
    2. JavaBeans: 通过schema编译器的处理,一组XML Schema (xsd文件),通常被称为XSD类型系统,将会生成一组对应的Java 类和接口,这种对应关系是一对一的--一种XSD类型对应一种Java类型(或接口)。所有的schema 类型都继承自基类XmlObject。值得一提的是XMLBeans 对象是可序列化的,因此它们可以跨越RMI边界进行传输。同Java内置的反射功能类似,XMLBeans 也提供从类反射到XSD Schema类型的功能。目前,测试版的schema编译模型是一个包含在BEA WebLogic Workshop中的宿主型编译器。
    3. XQuery: 借助Apache Xerces2,XMLBeans通过运行基于XQuery的查询,提供了针对特定数据的XML查询功能。

    XMLBeans与其它Java绑定技术,比如JAXB和Castor的不同之处在于:XMLBeans同时支持两种同步XML访问模型(参见图1)--一种针对底层XML内容,另一种针对强类型的Java类。除此之外,XMLBeans的一个主要目标(在它的最后版本中)是为XML Schema的全部特性及功能提供100%的支持(如同W3C Recommendation所阐述的)。


    按此在新窗口浏览图片

    我今天要说的其实主要是XSD, XML Bean 可以理解成一个对象化的 访问XML的小工具。 其实关键还是把 XSD搞懂。 我也不太懂,就凑合的瞎说把。

    先给大家看一个XSD和XML的样子:

    按此在新窗口浏览图片


    上面的图就是 XML Schema (XSD)

    按此在新窗口浏览图片


    上面的图就是 针对 xsd 生成的 xml 文件的样子。

    OK,大家有了初步认识后,就好办了!

    大家看一下,下面三个 XSD有什么区别吗?

    例1:

    按此在新窗口浏览图片

    例2:

    按此在新窗口浏览图片

    例3:

    按此在新窗口浏览图片

    应该是有很大的区别把! 但是,他们却能产生下面同样的 XML文件


    按此在新窗口浏览图片

    这样把,我再把这三个XSD的 Schema/WSDL设计视图展示给大家。

    例1:


    按此在新窗口浏览图片

    例2:

    按此在新窗口浏览图片


    例3:

    按此在新窗口浏览图片


    看到区别了吗?

    通过 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的 ,用法很简单。


       收藏   分享  
    顶(2)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/15 10:04:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DTD/XML Schema 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/29 17:03:33

    本主题贴数5,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  我对XML Schema的一些理解:(5906字) - flashjean,2005年12月15日
        回复:  不错呢,真的不错啊!(20字) - dandanyidian,2007年11月3日
        回复:  不错呵呵(10字) - avaya2008,2007年10月28日
        回复:  看不到图片(10字) - xbbing,2006年5月8日
        回复:  说的好,以后多发一些这样的帖子。顶一下了。(42字) - anchen0617,2005年12月18日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms