?? 0303-0201.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0303-0201 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學(xué)進階 - 3.3.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=""><!-- 以下為主體內(nèi)容 -->
<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=50 rowSpan=2></TD>
<TD vAlign=center width="605" >
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=52 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="605" ><!-- 正文內(nèi)容 -->
<DIV class=pt10><B>3.3.2.1 前綴標識法</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>命名沖突問題是XML文檔中引入多DTD的老大難問題,那么,命名空間標準又是如何解決這一問題的呢?</P>
<P>一個直接的想法是保證所引用到的DTD沒有重名的元素。可是,你所引用的DTD可能來自世界上各個地方,由不同的人制定,要求這成千上萬的DTD沒有重名現(xiàn)象似乎有些異想天開,且想想你身邊重名的人還有多少呢!再有一個想法就是要求所引用到的DTD改名字,把“聯(lián)系人列表”中的元素“姓名”改為“聯(lián)系人姓名”,“電話”改為“聯(lián)系人電話”;相應(yīng)地,“企業(yè)經(jīng)理”中的“姓名”改為“經(jīng)理姓名”,“電話”改為“經(jīng)理電話”。但是,如果出現(xiàn)了大量重名元素,這個修改的工作量就很大了,如此麻煩,多DTD的優(yōu)勢消失殆盡,還不如自己重新定義一個呢。</P>
<P>命名空間標準提供了一個很聰明的方法,就是所謂前綴標識法,即在元素名和屬性名前面增加一個標識,以唯一區(qū)分當前元素或?qū)傩詠碜阅囊粋€DTD。使用了命名空間后,上節(jié)那個"聯(lián)系人列表"的例子就變成下面的樣子。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><聯(lián)系人:聯(lián)系人列表 xmlns:聯(lián)系人 ="聯(lián)系人列表.dtd" xmlns:企業(yè)經(jīng)理
="企業(yè)經(jīng)理.dtd"><BR> <聯(lián)系人:聯(lián)系人><BR>
<聯(lián)系人:姓名>張三</聯(lián)系人:姓名><BR>
<聯(lián)系人:ID>001</聯(lián)系人:ID><BR>
<聯(lián)系人:公司>A公司</聯(lián)系人:公司><BR>
<聯(lián)系人:EMAIL>zhang@aaa.com</聯(lián)系人:EMAIL><BR>
<聯(lián)系人:電話>(010)62345678</聯(lián)系人:電話><BR>
<聯(lián)系人:地址><BR>
<聯(lián)系人:街道>五街1234號</聯(lián)系人:街道><BR>
<聯(lián)系人:城市>北京市</聯(lián)系人:城市><BR>
<聯(lián)系人:省份>北京</聯(lián)系人:省份><BR>
</聯(lián)系人:地址><BR>
<聯(lián)系人:直接上級><BR>
<企業(yè)經(jīng)理:姓名>王五</企業(yè)經(jīng)理:姓名><BR>
<企業(yè)經(jīng)理:電話><BR>
<企業(yè)經(jīng)理:秘書電話>(010)62345678</企業(yè)經(jīng)理:秘書電話><BR> <企業(yè)經(jīng)理:手機>13601234567</企業(yè)經(jīng)理:手機><BR> </企業(yè)經(jīng)理:電話><BR>
</聯(lián)系人:直接上級><BR>
</聯(lián)系人:聯(lián)系人><BR></聯(lián)系人:聯(lián)系人列表></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>現(xiàn)在,由于在"直接上級"的"姓名"元素前增加了標識——"企業(yè)經(jīng)理",而"聯(lián)系人"的"姓名"元素前增加了標識——"聯(lián)系人",這兩個"姓名"在元素名稱上的沖突被化解了。同樣,語法分析器也會對兩個“電話”元素識得廬山真面目,分別作不同的處理。<BR><BR>要實現(xiàn)元素、屬性的前綴標識命名法,我們需要解決以下幾個問題:
<OL>
<LI>如何聲明命名空間,即如何定義上例中的"聯(lián)系人"、"企業(yè)經(jīng)理"這樣的前綴標識?
<LI>什么是合法名稱,即標記中帶有前綴標識的元素和屬性應(yīng)該是什么樣子?
<LI>怎樣使用合法名稱,即在XML文檔中應(yīng)該如何發(fā)揮命名空間的威力? </LI></OL>
<P>下面的章節(jié)中,我們就來詳細地討論這幾個問題。<BR></P></DIV>
<P></P>
<P></P></TD></TR></TBODY></TABLE>
</center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -