新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国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入门 (1) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 154895 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 趣味XML Schema入门 (1) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     98900969r 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      等级:大四寒假(收到MIT的Offer啦)
      文章:235
      积分:1555
      门派:XML.ORG.CN
      注册:2005/11/2

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

    (这是一种尝试,不喜欢的朋友请多包涵,

    XML schema 是什么?
    一个XML schema,或者叫XML模式,是对一个(或一组)XML文件的结构的说明,它也可以对其内容进行一些约束性和语义上的说明。

    熟悉数据库的人可以把XML schema看成是数据库中数据模式在XML技术中的对应物。

    为什么要给XML文件加个schema?
    给一个(或一组)XML文件关联一个schema有不少好处,甚至可以说是必须的。没有哪个程序或者人,可以以一种有意义的方式处理任意的XML文件。每个程序都要假定它所要处理的XML文件具有特定的结构和内容,当给它处理的文件不是这种结构或内容时,它就处理不了。例如,把一个svg文件给没有安装svg插件的浏览器,浏览器无法呈现这个svg所表示那幅图画。

    反过来说,当我们想使用以XML文件形式接收输入的某个程序时,那我们就得按照这个程序所能接受的格式来准备XML文件。我们不想把这个程序的源代码拿来看,来分析它究竟要接受什么样的格式,我们希望这个程序提供一个简洁而严格的关于它所接受的输入格式的说明书。这个说明书可以写成电视机的使用说明书那样,告诉我们怎么用电视机。只有一点不好,万一我们看了说明书之后,还是出了点什么错把电视机搞坏了,没有人赔。假设我们是一家给别人准备数据的公司,如果我们看了客户提供的数据格式说明,还是出了错,那就要么会挨骂,要么失去一个客户,说不定还得付出赔偿。所以问题在于,我们需要的不仅仅是数据格式的说明,还希望能在我们把数据呈交给客户或者某个程序去处理之前就看看数据到底符合不符合这个格式。这说明,这个格式不能象电视机说明书那样只能给人读一读,它得能被计算机处理,被计算机拿去检验数据的格式是不是有错。

    这样一种能被计算机处理的关于XML文件结构和内容的说明,就是一个XML schema。所以,它的用处就在于提供一个可以被计算机付诸检验的数据格式说明。而拿XML schema去检验XML文件的程序叫做schema处理程序。所以,需要记住,不是一个schema自己去验证XML文件,它只是规定XML文件的格式,然后被拿去验证XML文件。

    你可能要说,又不是schema可以检验数据,那为什么不直接写个程序去验证数据,还搞个schema出来,这不是多此一举吗!得记住,我们是一家数据公司,我们有很多客户,每个客户的数据格式都不一样。我们呢,只有5个人,而且只有一个mm会写程序,如果要她为每个客户的数据格式都写验证程序,那她不睡觉也写不完,而我们没钱再多请几个程序员,因为程序员对薪水的要求一般都很高。而其他四个人呢,常常没事做,帮不上,正好偷懒。老板很精明,他让这个mm程序员写一个通用的数据验证器,这个验证器针对不同客户的数据格式要求去检验他们各自的数据。mm说可以,但是得把每个客户的数据格式告诉这个程序。程序终于写出来了。这个时候其他四个人就帮得上忙了,就不能偷懒了。他们不用写程序,他们只要写数据格式说明就行了。

    好了,我们不只五个人,我们有几个mm程序员,她们愿意加班加点的写程序,就是不想写个通用的验证器。她们很聪明,知道那样的话等于是自掘坟墓。问题是这个世界上又牛又傻的程序员做出来了那样的通用程序。我们不用不行,不用我们的公司就会倒闭,因为我们验证数据的成本比别人高得多。我们得用才能保住饭碗。倒也好,mm们现在不用加班加点了,轻轻松松写schema。

    XML schema是怎样规定数据格式的
    一个XML schema把XML 中的数据项列出来,指明哪个在外面,哪个在里面;哪个在前面,哪个在后面;哪些是一定得有的,哪些是可以没有的;哪个有的时候,另外某一个就一定得有,或者一定没有;哪个得是正数,哪个不能大于1000,等等,等等,这样的事。

    我决定用schema了,怎么写啊?--- DTD与W3C XML Schema
    那些傻牛人已经发明了几种用来说明XML文件格式的办法,其中听得比较多的是DTD和(W3C)XML Schema。W3C是World Wide Web Consortium 的缩写,因为有3个W开头,就成了W3。这和“披头四”有点象,Beatles乐队的音译,而他们是四个人,也译作“披头士”。

    DTD是Document Type Definition的缩写,即文档类型定义。它出现在(W3C)XML Schema之前。之所以有这么个奇怪的名字,是因为它本来就不是用来说明XML数据文件格式的,它是用来说明XML文档格式的。搞什么怪啊,XML数据文件不就是XML文档吗?不骗你,真的很有些不一样!

    如果我们写一篇文章,敲到计算机里面去,存下来,得到一个文档,如果这个文档是XML格式的,那就是XML文档。你要说,别唬人了,有谁用XML做文档啊,地球人都用word。非也!有很多人用XML做文档,XML的前身就是专门用来做文档的,而DTD实际上是给那个前身用的,后来也给XML用。那个前身我们就不多说了,省得跑题。另外一个例子,我们有很多人做网页,网页是什么?文档,而且可以说是XML文档,因为HTML是XML的那个前身的一个文档类型(或者说格式)而已。而XTHML就更是XML文档了,真真正正的XML文档。

    有DTD就好了,干么要弄几个办法来写格式说明,这不是添乱嘛!当然不是。刚刚说了DTD不是用来说明数据格式的。如果把DTD拿来做数据格式说明并非完全不行,但是它有两个不足的地方。它只能说明“哪个在外面,哪个在里面;哪个在前面,哪个在后面;哪些是一定得有的,哪些是可以没有的;哪个有的时候,另外某一个就一定得有,或者一定没有;”这样结构方面的事情,不能说明“这个不能是负数,那个不能大于100,这个的名字得是英文的,那个的名字得是中文的”这些事情。用计算机术语来说,DTD没有提供数据类型,或者说它只提供了一种数据类型,文本。所以它很自觉地把自己叫做文档类型定义,而不敢自称为数据模式定义。另外一个问题是数据类型问题的引申。我们现在都用面向对象的东西了,我们希望数据格式也是面向对象的。而DTD有点老派,它被发明的时候,面向对象还在实验室里。

    XML把自己定位在通用数据交换技术这样一个地位,却没办法准确定义数据格式,这很尴尬。所以W3C急忙忙要推出XML Schema。XML从一出世就被大家追捧,而它那时其实还不象大家说的那么好(可能现在也不是,但是它的确是个好东东,可以更好)。不能让大家失望啊,赶紧弥补先天不足。就有了XML Schema(和其他等等XML技术)。XML Schema 解决了上面说的那两个问题。对第一个问题,它解决得很漂亮。而对第二个问题,还有争议。争议归争议,大家已经迫不及待地用开了。

    [此贴子已经被作者于2005-12-23 7:07:52编辑过]

       收藏   分享  
    顶(1)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/23 5:07:00
     
     vampire_shirley 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:41
      积分:233
      门派:W3CHINA.ORG
      注册:2005/12/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给vampire_shirley发送一个短消息 把vampire_shirley加入好友 查看vampire_shirley的个人资料 搜索vampire_shirley在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看vampire_shirley的博客2
    发贴心情 
    呵呵,有意思
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/23 16:19:00
     
     fengzhiyi 帅哥哟,离线,有人找我吗?巨蟹座1979-7-6
      
      
      威望:4
      等级:大一(高数修炼中)
      文章:104
      积分:771
      门派:XML.ORG.CN
      注册:2005/2/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给fengzhiyi发送一个短消息 把fengzhiyi加入好友 查看fengzhiyi的个人资料 搜索fengzhiyi在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看fengzhiyi的博客3
    发贴心情 
    好文章、推荐,呵呵,那个前身好像是sgml,不用调大家胃口了。

    ----------------------------------------------
    Don't walk in front of me, I won't follow you.
    Don't walk behind me,I won't guide you.
    Just walk beside me,then we can hand in hand together.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/29 16:23:00
     
     jimgreen2002 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:56
      门派:XML.ORG.CN
      注册:2004/11/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jimgreen2002发送一个短消息 把jimgreen2002加入好友 查看jimgreen2002的个人资料 搜索jimgreen2002在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jimgreen2002的博客4
    发贴心情 
    不知所云
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/4 11:40:00
     
     victorwish 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:89
      门派:XML.ORG.CN
      注册:2005/11/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给victorwish发送一个短消息 把victorwish加入好友 查看victorwish的个人资料 搜索victorwish在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看victorwish的博客5
    发贴心情 
    很好的文章,幽默好懂。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/5 11:15:00
     
     gyz2 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:92
      门派:XML.ORG.CN
      注册:2005/2/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gyz2发送一个短消息 把gyz2加入好友 查看gyz2的个人资料 搜索gyz2在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gyz2的博客6
    发贴心情 
    写的不错啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/11 18:46:00
     
     半粒沙 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:100
      门派:XML.ORG.CN
      注册:2005/8/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给半粒沙发送一个短消息 把半粒沙加入好友 查看半粒沙的个人资料 搜索半粒沙在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看半粒沙的博客7
    发贴心情 
    可以说,XML目前还不像HTML这样的流行,在中国可以说就更少了,我们都是“先行者”啊,一起努力吧~!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/16 9:55:00
     
     Afanty 帅哥哟,离线,有人找我吗?白羊座1982-4-1
      
      
      等级:大二(研究汇编)
      文章:45
      积分:253
      门派:XML.ORG.CN
      注册:2006/3/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Afanty发送一个短消息 把Afanty加入好友 查看Afanty的个人资料 搜索Afanty在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Afanty的博客8
    发贴心情 
    说的很清晰,看来对XML Schema理解的相当透彻了!

    ----------------------------------------------
    雅俗共赏,宁缺勿滥!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/19 11:57:00
     
     nkdanfer 帅哥哟,离线,有人找我吗?魔羯座1982-1-2
      
      
      等级:大一新生
      文章:2
      积分:68
      门派:XML.ORG.CN
      注册:2005/1/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给nkdanfer发送一个短消息 把nkdanfer加入好友 查看nkdanfer的个人资料 搜索nkdanfer在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看nkdanfer的博客9
    发贴心情 
    不错不错。读起来轻松幽默直白
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/22 15:28:00
     
     ba_yni 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:76
      门派:XML.ORG.CN
      注册:2006/4/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ba_yni发送一个短消息 把ba_yni加入好友 查看ba_yni的个人资料 搜索ba_yni在『 DTD/XML Schema 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ba_yni的博客10
    发贴心情 
    一个XML Schema 入门者给你致敬了!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/5/3 17:01:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DTD/XML Schema 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/3/28 12:05:18

    本主题贴数55,分页: [1] [2] [3] [4]... [6]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms