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

📄 0301-0202.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-0202 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 3.1.2.2 定义元素及其子元素</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=523><IMG height=33 
      src="image/title_learner.gif" width=226></TD>
    <TD width=24 rowSpan=2></TD>
    </TR>
  <TR vAlign=top>
    <TD width="523" ><!-- 正文内容 -->
      <DIV class=pt10><B>3.1.2.2 定义元素及其子元素</B></DIV>
     &nbsp;&nbsp;&nbsp;
      <DIV></DIV><BR>
      <DIV class=pt9>
      <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 联系人列表 ANY&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>事实上,前面对这个DTD的解释并不是十分准确的,更准确的说法是,元素“联系人”必须包含一个,且只能包含一个子元素“姓名”。这就描述了一个“说一不二”的规则,联系人不能没有名字,也不能有好几个名字。可如果子元素是“EMAIL地址”怎么办?联系人可能根本没有自己的EMAIL邮箱,也可能“狡兔三窟”,有好几个EMAIL帐号。</P>
      <P>DTD尽管要求严格,但也有它的灵活性。使用正则表达式,我们就可以解决上述问题,描述父元素与子元素之间非常复杂的关系。例如,你可以对一个元素作如下任何一种类型的定义:它有一个子元素,有一个或多个子元素,有零个或多个子元素,至少有一个子元素。你还可以定义复合关系,比如“元素X是有效的,如果它含有一个或多个子元素Y,或一个子元素Z”。听着有些绕嘴,举个例子就明白了:“联系方式”中必须包含一个或多个“EMAIL地址”,如果没有EMAIL地址,包含一个“电话号码”也是可以的。</P>
      <P>元素定义是由它们的元素内容模型(ECM)来描述的,也就是说,是由紧跟元素后面的括号中的内容来定义的。因此,正如我们前面见到的,元素“联系人”的ECM被描述为子元素“姓名”:</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>ECM中的内容采取一组正则表达式的形式,和UNIX用到的正则表达式差不多。可能你不大熟悉UNIX,那没关系,正则表达式非常简单,它的核心思想就是采取“匹配”的逻辑。在下表中,我们列出了正则表达式中可能出现的元字符:</P>
      <DIV align=center>
      <CENTER>
      <TABLE width="80%" border=1>
        <TBODY>
        <TR>
          <TH align=middle width="30%">元 字 符</TH>
          <TH width="50%">含&nbsp;&nbsp;&nbsp; 义</TH></TR>
        <TR>
          <TD align=middle width="30%">+</TD>
          <TD width="50%">出现一次或多次</TD></TR>
        <TR>
          <TD align=middle width="30%">*</TD>
          <TD width="50%">出现零次或多次</TD></TR>
        <TR>
          <TD align=middle width="30%">?</TD>
          <TD width="50%">可选,不出现或出现一次</TD></TR>
        <TR>
          <TD align=middle width="30%">()</TD>
          <TD width="50%">一组要共同匹配的表达式</TD></TR>
        <TR>
          <TD align=middle width="30%">|</TD>
          <TD width="50%">OR,或</TD></TR>
        <TR>
          <TD align=middle width="30%">,</TD>
          <TD width="50%">AND,要求严格遵从顺序要求</TD></TR>
        <TR>
          <TD align=middle width="30%">元素A<BR>元素B<BR>元素C</TD>
          <TD width="50%">元素列表,无须遵从顺序要求</TD></TR></TBODY></TABLE></CENTER></DIV>
      <P>下面几节中,我们将通过一些例子具体讲解这些元字符的用法,对使用正则表达式来定义ECM的方法获得一些感性认识。</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 + -