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

📄 0302-0201.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-0201 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 3.2.2.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=39 rowSpan=2></TD>
    <TD vAlign=center width=542>
    <p align="center"><IMG height=33 
      src="image/title_learner.gif" width=226></TD>
    <TD width=33 rowSpan=2></TD>
    </TR>
  <TR vAlign=top>
    <TD width="542" ><!-- 正文内容 -->
      <DIV class=pt10><B>3.2.2.1 Schema 的简单实例</B></DIV>
    &nbsp;&nbsp;&nbsp;
      <DIV></DIV><BR>
      <DIV class=pt9>
      <P>好了,上一节讲了很多Schema的优点和发展历程,除了要为Schema歌功颂德以外,就是要在大家脑海里建立一个基本概念:Schema是用XML规范改写的DTD,同时增加了一些扩充功能,使它具有DTD无以比拟的优势。不知道是不是有些读者正在后悔,前面花了这么多时间去学DTD,原来是在学一个可能要被淘汰的东东。其实,就象上一节里所讲的,DTD和Schema是一脉相承的,了解DTD可以帮助你更快更透彻地学习Schema。后面对于Schema语法的讲述也正是通过二者的对比来进行的,你可以从这种比较中慢慢体会Schema的优势所在。</P>
      <P>下面,就让我们言归正传,看一看Schema长得什么样吧!不过先别忙,首先我们来看一个简单的例子。还记得我们的“联系人列表”文件吗?现在我们就把它作一个小小的改动,为“联系人列表”这个元素加一个“公司”属性,指明该列表所属的公司,修改后的XML文件如下:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version = "1.0" encoding="GB2312" 
            standalone = "no"?&gt;<BR>&lt;!DOCTYPE 联系人列表&nbsp; SYSTEM 
            "fclml.dtd"&gt;<BR><BR>&lt;联系人列表 公司=“大地公司”&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;联系人&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;姓名&gt;张三&lt;/姓名&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;ID&gt;001&lt;/ID&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;公司&gt;A公司&lt;/公司&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;EMAIL&gt;zhang@aaa.com&lt;/EMAIL&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;电话&gt;(010)62345678&lt;/电话&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;地址&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;街道&gt;五街1234号&lt;/街道&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;城市&gt;北京市&lt;/城市&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;省份&gt;北京&lt;/省份&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;ZIP&gt;100001&lt;/ZIP&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;/地址&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;/联系人&gt;<BR><BR>&nbsp;&nbsp;&nbsp; 
            &lt;联系人&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;姓名&gt;李四&lt;/姓名&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;ID&gt;002&lt;/ID&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;公司&gt;B公司&lt;/公司&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;EMAIL&gt;li@bbb.org&lt;/EMAIL&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;电话&gt;(021)87654321&lt;/电话&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;地址&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;街道&gt;南京路9876号&lt;/街道&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;城市&gt;上海&lt;/城市&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;省份&gt;上海&lt;/省份&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;ZIP&gt;200002&lt;/ZIP&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;/地址&gt;<BR>&nbsp;&nbsp;&nbsp; 
        &lt;/联系人&gt;<BR>&lt;/联系人列表&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>相应的,它的DTD文件fclml.dtd也要作一点改动:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version="1.0" 
            encoding="GB2312"?&gt;<BR><BR>&lt;!ELEMENT 联系人列表 
            (联系人)*&gt;<BR>&lt;!ELEMENT 联系人 
            (姓名,ID,公司,EMAIL,电话,地址)&gt;<BR>&lt;!ELEMENT 地址 
            (街道,城市,省份)&gt;<BR>&lt;!ELEMENT 姓名 (#PCDATA)&gt;<BR>&lt;!ELEMENT ID 
            (#PCDATA)&gt;<BR>&lt;!ELEMENT 公司 (#PCDATA)&gt;<BR>&lt;!ELEMENT EMAIL 
            (#PCDATA)&gt;<BR>&lt;!ELEMENT 电话 (#PCDATA)&gt;<BR>&lt;!ELEMENT 街道 
            (#PCDATA)&gt;<BR>&lt;!ELEMENT 城市 (#PCDATA)&gt;<BR>&lt;!ELEMENT 省份 
            (#PCDATA)&gt;<BR>&lt;!ATTLIST 联系人列表 <BR>&nbsp;&nbsp;&nbsp; 公司 CDATA 
            #REQUIRED<BR>&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>同样的文档结构要用Schema来描述的话,可写做下面的样子。我们给这个文件取名fclmlschema.xml。也许你要问:"为什么以.xml作为扩展名,而不象DTD那样有个特殊的名字?"答案很明确,因为Schema本身就是XML文档实例,以.xml作为扩展名正是为了强调这一点。不过,这并不是说,就只能以.xml作为扩展名。如果你愿意,你完全可以给它取一个全新的名字,比如:.aaa、.schema、...,只要你的文件系统支持就行。</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">[1]&lt;?xml version="1.0" encoding="GB2312" 
            ?&gt;<BR>[2]&lt;Schema xmlns="urn:schemas-microsoft-com:xml-data" 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            xmlns:dt="urn:schemas-microsoft-com:datatypes"&gt;<BR>[3]&nbsp;&nbsp;&nbsp; 
            &lt;AttributeType name="公司"/&gt;<BR>[4]&nbsp;&nbsp;&nbsp; 
            &lt;ElementType name= "姓名"/&gt;<BR>[5]&nbsp;&nbsp;&nbsp; 
            &lt;ElementType name= "ID"/&gt;<BR>[6]&nbsp;&nbsp;&nbsp; 
            &lt;ElementType name= "公司"/&gt; 
            <BR>[7]&nbsp;&nbsp;&nbsp;&nbsp;&lt;ElementType name= 
            "EMAIL"/&gt;<BR>[8]&nbsp;&nbsp;&nbsp; &lt;ElementType name= "电话" 
            dt:type="fixed.14.4"/&gt;<BR>[9]&nbsp;&nbsp;&nbsp; &lt;ElementType 
            name= "街道"/&gt; <BR>[10]&nbsp;&nbsp;&lt;ElementType name= 
            "城市"/&gt;<BR>[11]&nbsp;&nbsp;&lt;ElementType name= 
            "省份"/&gt;<BR>[12]&nbsp;&nbsp;&lt;ElementType name= "地址" 
            content="eltOnly"&gt; <BR>[13]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;element type= "街道" /&gt; 
            <BR>[14]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element type= "省份" 
            /&gt; <BR>[15]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element type= 
            "城市" 
            /&gt;<BR>[16]&nbsp;&nbsp;&lt;/ElementType&gt;<BR>[17]&nbsp;&nbsp;&lt;ElementType 
            name= "联系人" 
            content="eltOnly"&gt;<BR>[18]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;element type= "姓名" 
            /&gt;<BR>[19]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element type= 
            "ID" /&gt;<BR>[20]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element 
            type= "公司" /&gt;<BR>[21]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;element type= "EMAIL" 
            /&gt;<BR>[22]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element type= 
            "电话" /&gt;<BR>[23]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element 
            type= "地址" 
            /&gt;<BR>[24]&nbsp;&nbsp;&lt;/ElementType&gt;<BR>[25]&nbsp;&nbsp;&lt;ElementType 
            name= "联系人列表" 
            content="eltOnly"&gt;<BR>[26]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            &lt;element type= "联系人" 
            /&gt;<BR>[27]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute 
            type="公司"/&gt;<BR>[28]&nbsp;&nbsp;&lt;/ElementType&gt;<BR>[29]&lt;/Schema&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>此外,为了告诉语法分析器现在是在用fclmlschema.xml给XML文件client.xml规定的文件结构,需要把client.xml文件中的第二行改成:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;学生花名册 
        xmlns="x-schema:rosterschema.xml"&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>下面我们就来逐字逐句地分析一下这个fclmlschema.xml: 
      <DL>
        <DD><FONT 
        color=#0000ff>[1]</FONT>是XML类型声明语句,指明该文档是一个XML文档,并且符合版本1.0规范。另外,该文档采用GB2312编码。 

        <DD><FONT 
        color=#0000ff>[2]</FONT>是Schema声明语句,它包含了Schema命名空间的声明。本例中用到了两个命名空间:一是xmlns="urn:schemas-microsoft-com:xml-data",它指定本文档是一个XML 
        Schema文档;另一个是xmlns:dt="urn:schemas-microsoft-com:datatypes",它定义了在本文档中可允褂玫氖

⌨️ 快捷键说明

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