⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0302-0101.htm

📁 xml帮助文档
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0302-0101 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 3.2.1.1 Schema的诞生</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt9 {
	FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt10 {
	FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋体"
}
.TempOutline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.TempOutline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage0 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage1 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage11 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage111 {
	FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>


<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0 
onload=""><!-- 以下为主体内容 -->
<div align="center">
  <center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
  <TBODY>
  <TR vAlign=top>
    <TD width=55 rowSpan=2></TD>
    <TD vAlign=center width=535>
    <p align="center"><IMG height=33 
      src="image/title_learner.gif" width=226></TD>
    <TD width=42 rowSpan=2></TD>
    </TR>
  <TR vAlign=top>
    <TD width="535" ><!-- 正文内容 -->
      <DIV class=pt10><B>3.2.1.1 Schema的诞生</B></DIV>
     &nbsp;&nbsp;&nbsp;
      <DIV></DIV><BR>
      <DIV class=pt9>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" bgColor=#ffffc0 border=0>
        <TBODY>
        <TR>
          <TD align=left width="100%">
            <P 
            align=left>“尽管XML1.0提供了一种机制,即文档类型定义(DTD),来规范XML中置标的使用规则,但是,XML文档处理的自动化却要求有一种更为严格、更为全面的解决方案。关于这方面的需求,包括:如何使一个应用程序的不同模块间能够互相协调,以及对文档结构、属性、数据类型等的约束等等。W3C 
            XML Schema工作组正致力于制定定义XML文档的结构、内容和语义的方法。</P>
            <P align=right>--摘自W3C 
      XML工作进度报告”</P></TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>前面我们花了很大的篇幅讲DTD,并称它是体现XML精髓的武器,但不知细心的读者们注意到没有,现在DTD好象不大见了。怎么回事?DTD到底在XML中是举重若轻还是根本就无足轻重呀?其实,回答这个问题只需要大家想一想是不是Schema现在正频频露面。不错,聪明的读者一定猜到了,Schema和DTD的作用异曲同工,而现在的趋势是:DTD正逐渐被Schema所取代!</P>
      <P>说起来,DTD源于SGML规范,同时也是XML1.0规范的重要组成部分,它可是描述XML文档结构的“正根儿”。但不可否认的是,它也有一些缺点,比如,它采用了非XML的语法规则、不支持多种多样的数据类型、扩展性较差等等。这些缺点最终使它面临四面楚歌的境地,以微软为首的众多公司提出了XML 
      Schema,在保留并扩充了DTD原有的文档结构说明能力的同时,以期解决DTD与生俱来的种种问题。</P>
      <P>事实上,Schema也是XML的一种应用,它是将DTD重新使用XML语言规范来定义。这从某种意义上讲,不正充分体现了我们前面所提到的XML自描述性的优点吗?可别小看了这个利用DTD把DTD改写成的Schema,它可具有许多“青出于蓝而胜于蓝”的优势。 

      <UL>
        <LI><STRONG>一致性</STRONG><BR>学习DTD时,大家一定已经在抱怨DTD的书写结构和XML文件的结构仿佛有着天壤之别,后者清晰直观,前者复杂晦涩。Schema建立在XML之上,它的样子和一般的XML文件完全相同,使得XML达到了从内到外的完美统一。现在,读者不必再为了搞懂DTD而去重新学习,节省了宝贵的时间;另一方面,因为Schema本身也是一种XML,可以被现有的XML编辑制作工具所编辑、被XML语法分析器所解析、被XML应用系统所利用,既有投资得到了最大程度的保护。 

        <LI><STRONG>扩展性</STRONG><BR>如果你只是一个文档编辑人员,平常只进行一些文档的操作或Web页面的设计,那么你可能对数据类型不太敏感。但是,如果你是一位程序员,每天都要和成堆的公式和程序打交道,那么如果有一天领导告诉你,改用一种没有定义数据类型的程序设计语言去开发一套应用系统,我想你很可能会跳起来:什么?没有定义数据类型!这么一来,什么整型、实型、布尔型、日期型统统混为一谈,所有的用户输入数据以及从数据库中取得的数据都要另外编写程序进行类型转换,还有错误检测……。天啊,还有比这更糟的吗?<BR>的确,没有数据类型,无形之中大大增加了程序员的开发难度和工作量。虽然DTD中也定义了一些数据类型,但那都是针对属性类型而定义的,而且类型非常有限。何况现在电子商务应用日趋火爆,交易过程中不可避免地会出现大量的数据转换,整型、实型、布尔型、日期型的数据层出不穷,DTD显然招架不住。好在Schema对DTD进行了扩充,引入了数据类型,很好地解决了这一问题。 

        <LI><STRONG>易用性</STRONG><BR>XML 
        Schema取代DTD的另一个原因要归结于DOM和SAX(关于DOM和SAX的概念将在后面章节中详细论述)。如果你了解DOM和SAX,那你肯定知道,作为一种XML 
        API,DOM和SAX只是对XML实例文档有效,对于DTD则无能为力,你不可能期望通过DOM或SAX来判定一个元素的属性类型或者某个元素的子元素允许出现的次数(当然,这都是XML分析器的本职工作)。但是,一旦有了Schema,这个问题便不复存在,因为此时对于XML文档结构的描述已变成为Schema--一种“形式良好的”XML文档,用DOM和SAX去访问当然不在话下啦。 

        <LI><STRONG>规范性</STRONG><BR>同DTD一样,Schema也提供了一套完整的机制以约束XML文档中置标的使用,但相比之下,后者基于XML,更具有规范性。Schema利用元素的内容和属性来定义XML文档的整体结构,如哪些元素可以出现在文档中、元素间的关系是什么、每个元素有哪些内容和属性、以及元素出现的顺序和次数等等,一目了然。 

        <LI><STRONG>互换性</STRONG><BR>正如每个人都可定义自己的DTD一样,读者也可根据需要设计适合自己应用的Schema,并且可以同其他人交换彼此的Schema。利用Schema,我们能够书写XML文档,验证文档的合法性。另外,通过映射机制,还可以将不同的Schema进行转换,以实现更高层次的数据交换。例如微软的BizTalk 
        Server,对此就有很好的支持。 </LI></UL>
      <P>通过这些优点的罗列,相信你已经对Schema的生命力深信不疑了。下一节里,我们就来回顾一下Schema的发展历程。</P>
      <P> </P></DIV>
      <P></P>
      <P></P></TD></TR></TBODY></TABLE>
  </center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -