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

📄 0301-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=0301-0201 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 3.1.2.1 元素类型声明</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=45 rowSpan=2></TD>
    <TD vAlign=center width=502><IMG height=33 
      src="image/title_learner.gif" width=226></TD>
    <TD width=39 rowSpan=2></TD>
    </TR>
  <TR vAlign=top>
    <TD width="502" ><!-- 正文内容 -->
      <DIV class=pt10><B>3.1.2.1 元素类型声明</B></DIV>
     &nbsp;&nbsp;&nbsp;
      <DIV></DIV><BR>
      <DIV class=pt9>
      <P>前面我们讲了很多关于DTD的分类,以及如何使用不同类型DTD的方法。但是,如何最大限度地发挥DTD的作用,主要取决于如何合理地定义DTD。从这一节开始,我们就来详细地讲述这个问题。</P>
      <P>一个DTD不仅要告诉语法分析器它所关联的XML文件的根元素是什么,而且还要告诉语法分析器文件的内容和结构,说清文件结构中的每一个细节。为了定义这些细节,我们必须展开DTD中元素说明部分,使用元素类型声明(ETD)来声明所有有效的文件元素。</P>
      <P>ETD不但说明了每个文件中可能存在的元素,给出了元素的名字,而且给出了元素的具体类型。一个XML元素可以为空,也可以是一段纯文本,还可以有若干个子元素,而这些子元素同时又可以有它们的子元素。DTD正是通过元素之间的父子关系,描述了整个文件的结构关系。</P>
      <P>ETD应该采用如下的结构:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;!ELEMENT 元素名 
      元素内容描述&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>因此,在前面的例子里,可以在文件序言中通过如下方式定义“联系人列表”这个元素:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version = "1.0" encoding="GB2312" 
            standalone = "yes"?&gt;<BR>&lt;!DOCTYPE 联系人列表[<BR>&nbsp;&nbsp;&nbsp; 
            &lt;!ELEMENT 联系人列表 <STRONG><FONT 
            color=#ff0000>ANY</FONT></STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp; 
            ]&gt;<BR><BR>&lt;联系人列表&gt;<BR>...<BR>&lt;/联系人列表&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>这个DTD定义了一个XML文件,它只有一个根元素,名为“联系人列表”,这个元素可以有任何类型的子元素,也可以是纯文本,还可以为空。</P>
      <P>但是需要注意,尽管元素“联系人列表”被定义为“可以”包含其它元素,但实际上这个DTD除了“联系人列表”元素本身外没有定义任何其它元素,所以也就没有其它元素可以用作“联系人列表”的子元素。“有效的”XML文件规定文件中所使用的任何元素都必须在DTD中给出定义。因此,下面的XML文件,尽管是“形式良好的”,但并不是“有效的”,仍不能被语法解析器所接受。</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version = "1.0" encoding="GB2312" 
            standalone = "yes"?&gt;<BR>&lt;!DOCTYPE 联系人列表[<BR>&nbsp;&nbsp;&nbsp; 
            &lt;!ELEMENT 联系人列表 <STRONG><FONT 
            color=#ff0000>ANY</FONT></STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp; 
            ]&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; 
            &lt;/联系人&gt;<BR>&lt;/联系人列表&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P><BR>不过需要区分的是,在“<STRONG><FONT 
      color=#ff0000>ANY</FONT></STRONG>”定义下使用任何纯文本都是无须另加说明的,这一点与元素不同。故而,在相同的DTD定义下,下面一段XML文件则是合法的:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version = "1.0" encoding="GB2312" 
            standalone = "yes"?&gt;<BR>&lt;!DOCTYPE 联系人列表[<BR>&nbsp;&nbsp;&nbsp; 
            &lt;!ELEMENT 联系人列表 <STRONG><FONT 
            color=#ff0000>ANY</FONT></STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp; 
            ]&gt;<BR><BR>&lt;联系人列表&gt;<BR>纯文本信息说明联系人信息<BR>&lt;/联系人列表&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P><BR>为了使元素“联系人列表”中还可以包含其它元素,从而使前面的那个文件是“有效的”,我们还需要定义元素“联系人”和“姓名”。</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TD width="100%">&lt;?xml version = "1.0" encoding="GB2312" 
            standalone = "yes"?&gt;<BR>&lt;!DOCTYPE 联系人列表[<BR>&nbsp;&nbsp;&nbsp; 
            &lt;!ELEMENT 联系人列表 <STRONG><FONT 
            color=#ff0000>ANY</FONT></STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp; 
            &lt;!ELEMENT 联系人(姓名)&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
            姓名(#PCDATA)&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; 
            ]&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; 
            &lt;/联系人&gt;<BR>&lt;/联系人列表&gt;</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>好了,现在我们已经定义了一个XML文件,它的根元素名为“联系人列表”。“联系人列表”中可以包含任何纯文本数据,也可以含有子元素(这即是ANY的含义)。根据后面的定义,我们知道,“联系人列表”中可以包含子元素“联系人”,也可以直接包含子元素“姓名”;“联系人”元素又可以包含自己的子元素,名为“姓名”;而“姓名”则只能包含纯文本数据(即(#PCDATA))。</P>
      <P><STRONG>注意:</STRONG> 
      <OL>
        <LI>除了根元素外,在定义其它元素时使用关键字ANY都是不好的习惯。一般来说,在写一个XML文件时需要严格遵循DTD的规则,这时,一个定义明确的DTD,虽然表面上似乎充满了条条框框,但实际上会使你在书写XML文件时有规可循,反而方便了你的工作和语法分析器的工作。相反,一个在元素定义中充满了ANY的DTD,反而可能会搞得你不知所措,一头雾水。 

        <LI>在定义元素时,ETD的顺序是无关紧要的。因此<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        姓名(#PCDATA)&gt;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        联系人列表 ANY&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        联系人(姓名)&gt;<BR>和<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 联系人列表 
        ANY&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        联系人(姓名)&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        姓名(#PCDATA)&gt;&nbsp;&nbsp;&nbsp; <BR>所定义的文件结构是完全相同的。 
        <LI>还有一点要注意,不能对不同的元素使用相同的元素名,即便这些元素的内容、包含的子元素不同也不行,因为它只会引起文件各个元素的混淆,使文件的可读性大打折扣。例如:<BR>&nbsp;&nbsp;&nbsp; 
        &lt;!ELEMENT 联系人列表 ANY&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        联系人(姓名)&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        联系人(EMAIL)&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        姓名(#PCDATA)&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT 
        EMAIL(#PCDATA)&gt;<BR>在这个例子中,对“联系人”的重复定义,会引起错误。 
        <LI>最后再次强调一下元素的命名。元素名的第一个字母必须是字母、或下划线(_)、或冒号(:),后跟字母、数字、句号(.)、冒号、下划线、连结号(-)的组合,并且不能包含空白符,不能以“xml”开头。另外,尽管元素的第一个字母使用冒号是合法的,但最好避免这样做,因为它会引起混淆。再有需要注意的是,尽管XML1.0标准允许使用任何长度的文件名,但是实际的XML处理器常常会限制标记名的长度。 
        </LI></OL>
      <P>在这一节里,我们用到了两个关键字,ANY和#PCDATA,它们的含义都很直接。同样,把“姓名”定义为“联系人”的子元素也很好理解。但实际上,正如我们前面讲到的,DTD允许你灵活地定义非常复杂的元素,所以ETD的定义还是有很多花样的。下面我们就来学习一些复杂的元素定义方式。<BR><BR>&nbsp;&nbsp;&nbsp; 
      <BR><BR></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 + -