游客:
注册
|
登录
|
帮助
网友俱乐部
»
网络编程
»
XML教程
» 3.1.2.2 定义元素及其子元素
网友生活网
|
网友学堂
如何获得金币?
诚招斑竹
IP归属地查询 PR查询 收录查询 whois查询
免费超短2级域名,your.jpy.cc
传世私服
|
传奇世界私服
注册亚洲交友中心,找个人来同居吧!
免费存储空间,免费网络硬盘
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 3.1.2.2 定义元素及其子元素
hinet
荣誉会员
UID 46695
精华 0
积分 2412
帖子 1189
威望 0
金币 1158
热心 26
阅读权限 50
注册 2007-2-25
状态 离线
#1
使用道具
发表于 2007-2-25 17:32
资料
个人空间
短消息
加为好友
3.1.2.2 定义元素及其子元素
3.1.2.2 定义元素及其子元素
在上节的例子中,我们定义了一个名为“联系人”的元素,并且解释过,它可以包含一个单独的子元素“姓名”,而这个“姓名”元素中则包含了字符数据。具体的例子为:
<DOCTYPE 联系人列表[ <ELEMENT 联系人(姓名)>
<ELEMENT 姓名(#PCDATA)>
]>
<联系人列表>
<联系人>
<姓名>张三
事实上,前面对这个DTD的解释并不是十分准确的,更准确的说法是,元素“联系人”必须包含一个,且只能包含一个子元素“姓名”。这就描述了一个“说一不二”的规则,联系人不能没有名字,也不能有好几个名字。可如果子元素是“EMAIL地址”怎么办?联系人可能根本没有自己的EMAIL邮箱,也可能“狡兔三窟”,有好几个EMAIL帐号。
DTD尽管要求严格,但也有它的灵活性。使用正则表达式,我们就可以解决上述问题,描述父元素与子元素之间非常复杂的关系。例如,你可以对一个元素作如下任何一种类型的定义:它有一个子元素,有一个或多个子元素,有零个或多个子元素,至少有一个子元素。你还可以定义复合关系,比如“元素X是有效的,如果它含有一个或多个子元素Y,或一个子元素Z”。听着有些绕嘴,举个例子就明白了:“联系方式”中必须包含一个或多个“EMAIL地址”,如果没有EMAIL地址,包含一个“电话号码”也是可以的。
元素定义是由它们的元素内容模型(ECM)来描述的,也就是说,是由紧跟元素后面的括号中的内容来定义的。因此,正如我们前面见到的,元素“联系人”的ECM被描述为子元素“姓名”:
<ELEMENT 联系人(姓名)>
ECM中的内容采取一组正则表达式的形式,和UNIX用到的正则表达式差不多。可能你不大熟悉UNIX,那没关系,正则表达式非常简单,它的核心思想就是采取“匹配”的逻辑。在下表中,我们列出了正则表达式中可能出现的元字符:
元 字 符 含 义
+ 出现一次或多次
* 出现零次或多次
? 可选,不出现或出现一次
() 一组要共同匹配的表达式
| OR,或
, AND,要求严格遵从顺序要求
元素A
元素B
元素C 元素列表,无须遵从顺序要求
下面几节中,我们将通过一些例子具体讲解这些元字符的用法,对使用正则表达式来定义ECM的方法获得一些感性认识。
[广告]
免费域名(Free Subdomain)
免费空间(Free hosting)
PR查询(Google Pagerank)
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-10-8 07:11
信产部ICP备案:
京ICP备05066424号
北京市公安局网监备案:1101050648号
Powered by
Discuz!
5.5.0
TOP
清除 Cookies
-
联系我们
-
网友俱乐部
-
Archiver
-
WAP