命名空間
更多語言
更多操作
命名空間({{#ifeq:|no
|英语 |英语
}}:{{#switch:en
|zh|gan|zh-yue = Namespace |jp|jap = Namespace模板參數錯誤:日語請使用ja |gr = Namespace模板參數錯誤:希臘語請使用el或gre |kr = Namespace模板參數錯誤:朝鮮語請使用ko或kor。kr為卡努里語,如該語言條目已建立,請至Template talk:Lang回報取消此警告。 |kp = Namespace模板參數錯誤:朝鮮語請使用ko或kor |po = Namespace模板參數錯誤:波蘭語請使用pl或pol |sp = Namespace模板參數錯誤:西班牙語請使用es或spa |cz = Namespace模板參數錯誤:捷克語請使用cs或cze |kz = Namespace模板參數錯誤:哈薩克語請使用kk或kaz |dk = Namespace模板參數錯誤:丹麥語請使用da |unicode|ipa = Namespace模板參數錯誤:請檢查更正引用語言代碼 |#default = Namespace}}{{#switch:en |ar|fa|he|ps|ur = |#default = }}{{#if: {{#ifeq: | true | dontcat }}{{#ifeq: | no | dontcat }}{{#switch: ¬ | yes | ¬ = | #default = dontcat }}{{#switch: | no = Template:Basepage subpage | only = Template:Basepage subpage }}
| |
{{#switch:
{{#ifeq: | false
|
| {{#ifeq: | yes
|
| {{#ifeq: | yes
|
| {{#if:x
|
{{#if:{{#titleparts:{{#if:| | 命名空间 }}|0|2}}
|
|
}}
}}
}}
}}
}}
| hide =
| #default =
{{#ifeq: h0#384!5nea+w9 | [[Category:含有{{#switch:en
|ar = 阿拉伯語
|en|eng = 英語
|es = 西班牙語
|de = 德語
|fr = 法語
|ja|jp|jap= 日語
|bg = 保加利亞語
|cs = 捷克語
|da = 丹麥語
|nl = 荷蘭語
|et = 愛沙尼亞語
|fi = 芬蘭語
|el|gre = 希臘語
|hu = 匈牙利語
|ga = 愛爾蘭語
|grc = 古希臘語
|la|lat = 拉丁語
|cy = 威爾斯語
|sl|slv = 斯洛維尼亞語
|zh-yue|yue|zh-hk = 粵語
|zh|zh-hans|zh-hant|zh-cn|zh-tw|zh-sg = 明確引用中文
|#default = {{#ifexist:Category:含有Template:ISO 639 name en的條目
|Template:ISO 639 name en
|非中文內容
}}
}}的條目]]
|
{{#switch:
{{#if:
| {{{demospace}}}
| {{#ifeq:|
| main
| {{#ifeq:|talk
| talk
|
}}
}}
}}
| main = | talk = | user = | wikipedia = | image = | mediawiki = | template = | help = | category = | portal = | other | #default =
}}
|
{{#iferror: {{#expr: 1 + {{#switch:
{{#if:
| {{{demospace}}}
| {{#ifeq:|
| main
| {{#ifeq:|talk
| talk
|
}}
}}
}}
| main = [[Category:含有{{#switch:en
|ar = 阿拉伯語
|en|eng = 英語
|es = 西班牙語
|de = 德語
|fr = 法語
|ja|jp|jap= 日語
|bg = 保加利亞語
|cs = 捷克語
|da = 丹麥語
|nl = 荷蘭語
|et = 愛沙尼亞語
|fi = 芬蘭語
|el|gre = 希臘語
|hu = 匈牙利語
|ga = 愛爾蘭語
|grc = 古希臘語
|la|lat = 拉丁語
|cy = 威爾斯語
|sl|slv = 斯洛維尼亞語
|zh-yue|yue|zh-hk = 粵語
|zh|zh-hans|zh-hant|zh-cn|zh-tw|zh-sg = 明確引用中文
|#default = {{#ifexist:Category:含有Template:ISO 639 name en的條目
|Template:ISO 639 name en
|非中文內容
}}
}}的條目]]
| talk = | user = | wikipedia = | image = | mediawiki = | template = | help = | category = | portal = | other | #default =
}} }} | {{#switch:
{{#if:
| {{{demospace}}}
| {{#ifeq:|
| main
| {{#ifeq:|talk
| talk
|
}}
}}
}}
| main = [[Category:含有{{#switch:en
|ar = 阿拉伯語
|en|eng = 英語
|es = 西班牙語
|de = 德語
|fr = 法語
|ja|jp|jap= 日語
|bg = 保加利亞語
|cs = 捷克語
|da = 丹麥語
|nl = 荷蘭語
|et = 愛沙尼亞語
|fi = 芬蘭語
|el|gre = 希臘語
|hu = 匈牙利語
|ga = 愛爾蘭語
|grc = 古希臘語
|la|lat = 拉丁語
|cy = 威爾斯語
|sl|slv = 斯洛維尼亞語
|zh-yue|yue|zh-hk = 粵語
|zh|zh-hans|zh-hant|zh-cn|zh-tw|zh-sg = 明確引用中文
|#default = {{#ifexist:Category:含有Template:ISO 639 name en的條目
|Template:ISO 639 name en
|非中文內容
}}
}}的條目]]
| talk = | user = | wikipedia = | image = | mediawiki = | template = | help = | category = | portal = | other | #default =
}} | }}
}} }}
}})表示標識符(identifier)的上下文(context)。一個標識符可在多個命名空間中定義,它在不同命名空間中的含義是互不相干的。這樣,在一個新的命名空間中可定義任何標識符,它們不會與任何已有的標識符發生衝突,因為已有的定義都處於其它命名空間中。
例如,設Bill是X公司的員工,工號為123,而John是Y公司的員工,工號也是123。由於兩人在不同的公司工作,可以使用相同的工號來標識而不會造成混亂,這裏每個公司就表示一個獨立的命名空間。如果兩人在同一家公司工作,其工號就不能相同了,否則在支付工資時便會發生混亂。
這一特點是使用命名空間的主要理由。在大型的電腦程式或文檔中,往往會出現數百或數千個標識符。命名空間(或類似的方法,見「命名空間的模擬」一節)提供一隱藏區域標識符的機制。通過將邏輯上相關的標識符組織成相應的命名空間,可使整個系統更加模塊化。
在編程語言中,命名空間是一種特殊的作用域,它包含了處於該作用域內的標識符,且本身也用一個標識符來表示,這樣便將一系列在邏輯上相關的標識符用一個標識符組織了起來。許多現代編程語言都支持命名空間。在一些編程語言(例如C++和Python)中,命名空間本身的標識符也屬於一個外層的命名空間,也即命名空間可以嵌套,構成一個命名空間樹,樹根則是無名的全局名空間。
在常用編程語言中的應用
在C++語言中,命名空間使用namespace來聲明,並使用{ }來界定命名空間的作用域.
例:
<source lang=cpp>
namespace foo {
int bar;
} </source>
在XML中的應用
XML雖然不是一個獨立的編程語言,但是它的出現使得命名空間的使用變得更為廣泛。
在同一個命名空間裏,所有的元素名都必須唯一。
聲明一個命名空間使用XML保留的屬性xmlns,它的值必須是URI(統一資源標誌符 Uniform Resource Identifier而非URL--Universal Resource Locator)指代.比如xmlns="http://www.w3.org/1999/xhtml".注意,事實上URI是不可讀的,但它對XML解析器來說就只是簡單不過的字串.比如,http://www.w3.org/1999/xhtml/ 這個地址本身並不包含任何代碼,它只表示XHTML命名空間.使用URI (比如"http://www.w3.org/1999/xhtml")去標示一個命名空間,而不是用一個簡短的字串 (比如"xhtml"),這樣做是為了減少不同命名空間標示符衝突的可能性.
在維基百科中的應用
|{{#if:|、|和}}[[{{{2}}}{{#if:||{{{l2}}}}}]]{{#if: |{{#if:|、|和}}[[{{{3}}}{{#if:||{{{l3}}}}}]]{{#if: |{{#if:|、|和}}[[{{{4}}}{{#if:||{{{l4}}}}}]]{{#if: |{{#if:|、|和}}[[{{{5}}}{{#if:||{{{l5}}}}}]]{{#if: |{{#if:|、|和}}[[{{{6}}}{{#if:||{{{l6}}}}}]]{{#if: |{{#if:|、|和}}[[{{{7}}}{{#if:||{{{l7}}}}}]]{{#if: |{{#if:|、|和}}[[{{{8}}}{{#if:||{{{l8}}}}}]]{{#if: |{{#if:|、|和}}[[{{{9}}}{{#if:||{{{l9}}}}}]]{{#if:
|和[[{{{10}}}{{#if:||{{{l10}}}}}]]}}}}}}}}}}}}}}}}}}{{#if:|
(在模板{{[[{{#switch:|#default = Main
| =
{{#ifeq: |
| Template:main
| Main
}}
}}|main]]{{#if:||{{{arg}}}}}}}中使用了太多的參數)}}