📄 0102-0300.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0102-0300 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 1.2.3 XML的第二大优势——超越于格式之上</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 rowSpan=2> </TD>
<TD vAlign=center width=221><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD rowSpan=2> </TD>
</TR>
<TR vAlign=top>
<TD ><!-- 正文内容 -->
<DIV class=pt10><B>1.2.3 XML的第二大优势——超越于格式之上</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9 >
<P>XML的最大能量来源于它不仅允许你定义自己的一套标记,而且这些标记不必仅限于对于显示格式的描述。XML允许你根据各种不同的规则来制定标记,比如根据商业规则,根据数据描述甚至根据数据关系来制定标记。<BR>可能你还没有觉得这有什么好处。那好,还记得前面两节中那个关于F公司的客户列表的例子吗?现在,我们再来一起对两个不同的文件进行一个详细的比较。<BR><BR>当这个文件使用HTML语言写时,文件的样子如下:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%"><UL><BR><LI>张三</LI><BR><UL><BR><LI>用户ID:
001</LI><BR><LI>公司: A公司</LI><BR><LI>EMAIL:
zhang@aaa.com</LI><BR><LI>电话:
(010)62345678</LI><BR><LI>地址:
五街1234号</LI><BR><LI>城市: 北京市</LI><BR><LI>省份:
北京</LI><BR><LI>ZIP:
100001</LI><BR></UL><BR><BR><LI>李四</LI><BR><UL><BR><LI>ID:
002</LI><BR><LI>公司: B公司</LI><BR><LI>EMAIL:
li@bbb.org</LI><BR><LI>电话:
(021)87654321</LI><BR><LI>地址:
南京路9876号</LI><BR><LI>城市: 上海市</LI><BR><LI>省份:
上海</LI><BR><LI>ZIP:
200002</LI><BR></UL><BR></UL></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><BR>尽管这也是一个存储、显示数据的可行的方法,它的效率和能力却非常有限。不知你是否已有同感,使用偏重于表现的HTML来置标你的数据有很多潜在的问题。我们至少可以看到以下三个严重的问题:
<OL>
<LI>显示方式内嵌于数据之中<BR>可以看到,现在这些数据是用列表的形式来表示的。如果突然有一天,你的老板要求你用表格来表示这些数据,那么你不得不重新编码所有这样的HTML文件!天啊,这可能意味着几十页几百页要推翻重来啊!
<LI>在这些数据中寻找信息非常困难<BR>如果有一天,你需要从这个网页中找到所有北京市客户的信息,你该怎么办?显然,如果你不打算手工寻找的话,你要编一个脚本程序,譬如JavaScript,VBScript。那么,你怎么编写这个程序呢?唯一可行的办法可能就是逐字寻找“北京”这个字符串。即便你找到了所有这些字段,恐怕你也还没有解决所有麻烦。这个“北京”是指城市还是指省份呢?(别忘了北京地区的周边郊县哦。)
<LI>数据自身的逻辑不得不屈服于HTML语言规范的逻辑<BR>如果你想用Java
Applet来处理你的数据,你又遇到了另一个麻烦。你的Java
Applet将不得不遍历整个HTML文件,把所有的HTML标记剔除掉,再把剥离出来的有用的数据重新组织。同样,任何一个不是单纯为了显示HTML文件的应用程序,在处理一个HTML文件中的数据时,都不得不做大量额外的工作。
</LI></OL>
<P>当使用XML时,以上的问题迎刃而解。此时,这段信息的表示是这样的:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><联系人列表><BR>
<联系人><BR>
<姓名>张三</姓名><BR>
<ID>001</ID><BR>
<公司>A公司</公司><BR>
<EMAIL>zhang@aaa.com</EMAIL><BR>
<电话>(010)62345678</电话><BR>
<地址><BR>
<街道>五街1234号</街道><BR>
<城市>北京市</城市><BR>
<省份>北京</省份><BR>
<ZIP>100001</ZIP><BR>
</地址><BR>
</联系人><BR><BR>
<联系人><BR>
<姓名>李四</姓名><BR>
<ID>002</ID><BR>
<公司>B公司</公司><BR>
<EMAIL>li@bbb.org</EMAIL><BR>
<电话>(021)87654321</电话><BR>
<地址><BR>
<街道>南京路9876号</街道><BR>
<城市>上海</城市><BR>
<省份>上海</省份><BR>
<ZIP>200002</ZIP><BR>
</地址><BR>
</联系人><BR></联系人列表></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>可以看出,现在标记为要表现的数据赋予了一定的含义。用这种形式存储时,数据非常地简单明晰,因为它所携带的信息不是显示上的描述,而是信息的语意。就象我们后面将要看到的那样,信息的显示方式已经从信息本身中抽取出来,放在了“样式单”中。</P>
<P>好,我们现在逐条看一下上面所说的XML的三个问题是如何被一一解决的。
<OL>
<LI>在XML中,显示样式从数据信息中抽取出来,放在样式单文件中。这样,如果需要改动信息的表现方式,无须改动信息本身,只要改动样式单文件就够了。如果这时候老板又让你把列表的数据改用表格显示,你无须再去修改那几十几百个数据信息文件,因为它们和同一个样式单文件相关联,只要改动这个样式单文件就足够了。
<LI>在XML中数据搜索可以简单高效地进行。搜索引擎没必要再去遍访整个XML文件,它只须去找一找相关标记下的内容就够了。也就是说,要想找“北京”,只要看看<城市〉这个标记下的字符串数据是不是匹配就行了。毫不夸张地说,XML的标记为搜索引擎赋予了智慧!
<LI>XML是自我描述语言。即便对于一个预先对我们的FCLML一无所知的人,这个文件也是清晰可读的。显然,<ID>002</ID>代表了一个客户的客户身份标识,可是如果面对一个<LI>002,他可能就丈二和尚——摸不着头脑了。再有,看看上面文件中严格的层次结构,你就会发现,信息之间的某些复杂关系,比如树状结构、继承关系,在这里也都得到了绝好的体现。这样一来,那些XML的应用处理程序也会感到轻松多了。
</LI></OL>
<P>看到这里,你可能已经对XML心悦诚服了。不过,XML的优点还远不止这些哦。</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 + -