命名空間(naming space)
xml 命名空間提供了一種避免元素命名衝突的方法。
命名衝突
因為xml文件中使用的元素不是固定的,那麼兩個不同的xml文件使用同乙個名字來描述不同型別的元素的情況就可能發生。而這種情況又往往會導致命名衝突。請看下面兩個例子
這個 xml 文件在table元素中攜帶了水果的資訊:
<
table
>
<
tr>
<
td>
td>
<
td>
bananas
td> tr
>
table
>
這個 xml 文件在table元素中攜帶了桌子的資訊(家具,不能吃的哦):
<
table
>
<
name
>
african coffee table
name
>
<
width
>
80width
>
<
length
>
120length
>
table
>
如果上面兩個xml文件片斷碰巧在一起使用的話,那麼將會出現命名衝突的情況。因為這兩個片斷都包含了元素,而這兩個table元素的定義與所包含的內容又各不相同。
使用字首解決命名衝突問題
下面的xml文件在table元素中攜帶了資訊:
<
h:table
>
<
h:tr
>
<
h:td
>
h:td
>
<
h:td
>
bananas
h:td
>
h:tr
>
h:table
>
下面的xml文件攜帶了家具table的資訊:
<
f:table
>
<
f:name
>
african coffee table
f:name
>
<
f:width
>
80f:width
>
<
f:length
>
120f:length
>
f:table
>
現在已經沒有元素命名衝突的問題了,因為這兩個文件對各自的table元素使用了不同的字首,table元素在兩個文件中分別是(和)。
通過使用字首,我們建立了兩個不同的table元素。
使用命名空間
下面的xml文件在table元素中攜帶了資訊:
<
h:table
xmlns:h
="">
<
h:tr
>
<
h:td
>
h:td
>
<
h:td
>
bananas
h:td
>
h:tr
>
h:table
>
下面的xml文件攜帶了家具table的資訊:
<
f:table
xmlns:f
="">
<
f:name
>
african coffee table
f:name
>
<
f:width
>
80f:width
>
<
f:length
>
120f:length
>
f:table
>
在上面兩個例子中除了使用字首外,兩個table元素都使用了xmlns屬性,使元素和不同的命名空間關聯到一起。
命名空間屬性
命名空間屬性一般放置在元素的開始標記處,其使用語法如下所示:
xmlns:namespace-prefix="namespace"
xmlns:f=""
w3c 命名規範宣告命名空間本身就是乙個統一資源標示符,uniform resource identifier (uri)。
當我們在元素的開始標記處使用命名空間時,該元素所有的子元素都將通過乙個字首與同乙個命名空間相互關聯。
注意:用來標識命名空間的網路位址並不被xml解析器呼叫,xml解析器不需要從這個網路位址中查詢資訊,該網路位址的作用僅僅是給命名空間乙個唯一的名字,因此這個網路位址也可以是虛擬的,然而又很多公司經常把這個網路位址值象乙個真實的web頁面,這個位址包含了關於當前命名空間更詳細的資訊。
可以訪問.
統一資源識別符號
通用資源識別符號(a uniform resource identifier (uri))是乙個標識網路資源的字串。最普通的uri應該是統一資源定位符uniform resource locator (url)。url用於標識網路主機的位址。另一方面,另乙個不常用的uri是通用資源名字universal resource name (urn)。在我們的例子中,一般使用的是urls。
既然前面的例子使用的url位址來標識命名空間,我們可以確信這個命名空間是唯一的。
預設的命名空間
定義乙個預設的xml命名空間使得我們在子元素的開始標記中不需要使用字首。他的語法如下所示:
下面的xml文件在table元素中包含了水果的資訊:
<
table
xmlns
="">
<
tr>
<
td>
td>
<
td>
bananas
td> tr
>
table
>
下面的xml文件包含了家具table的資訊:
<
table
xmlns
="">
<
name
>
african coffee table
name
>
<
width
>
80width
>
<
length
>
120length
>
table
>
使用命名空間
文件開始使用xsl的時候,就會發現命名空間使用的是如此頻繁。xsl樣式單主要用於將xml文件轉換成類似於html檔案的格式。
如果看一下下面的xsl文件,就會發現有很多標記都是html標記。那些標記並不是html標記,是加了字首的xsl,這個xsl字首由命名空間""所標識:
<?xml
version
="1.0"
encoding
="iso-8859-1"
?>
<
xsl:stylesheet
xmlns:xsl
="">
<
xsl:template
match
="/"
>
<
html
>
<
body
>
<
table
border
="2"
bgcolor
="yellow"
>
<
tr>
<
th>
title
th>
<
th>
artist
th> tr
>
<
xsl:for-each
select
="catalog/cd"
>
<
tr>
<
td>
<
xsl:value-of
select
="title"
/> td
>
<
td>
<
xsl:value-of
select
="artist"
/> td
> tr
>
xsl:for-each
>
table
>
body
>
html
>
xsl:template
>
xsl:stylesheet
>
C 命名空間 預設命名空間與匿名命名空間
2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...
spring p命名空間 c命名空間
p命名空間 1.需要引入命名空間p 並不真實存在 是在spring內部中實現的 xmlns p 2.如果是引用注入需要加 ref字尾 p和c命名空間 並不適用於集合引數 c命名空間 1.需要引入命名空間c 並不真實存在 是在spring內部中實現的 xmlns c 2.可以使用c 引數名 或c 引數...
C 命名空間,也有叫命名空間
在c 中,名稱 name 可以是符號常量 變數 巨集 函式 結構 列舉 類和物件等等。為了避免在大規模程式設計中,以及在程式設計師使用各種各樣的c 庫時,這些識別符號的命名發生衝突,標準c 引入了關鍵字namespace 命名空間 名字空間 命名空間 名域 可以更好地控制識別符號的作用域。std是c...