命名空間(Naming Space)

2021-06-05 06:26:30 字數 4426 閱讀 6038

命名空間(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...