合法名(英語:QNames),又譯限定名,是XML命名空間引入的概念,用來作為URI引用。[1] 其名稱來自於英語:qualified name(意為合法的名字)定義了元素和屬性的合法的標識符。合法名通常在XML文檔中用作特定元素或屬性的引用。

合法名原稱限定名,因與XML命名空間[2]中的表述有衝突,並且qualified譯為合法也是合理的,因此對其進行了編輯。

[3]

動機 編輯

由於URI引用可能會很長並且可能包含XML元素/屬性命名中禁止的字符,因此,需要建立命名空間縮寫到URI之間的映射,這樣可以在XML元素/屬性名中使用命名空間的縮寫,這樣就可以更加方便地書寫XML文檔。這種使用命名空間縮寫的方法來給XML元素/屬性命名的方式,即為「合法名」命名(參見示例)。

形式化定義 編輯

全球資訊網聯盟給出的合法名的形式化定義如下[4]

  QName ::= PrefixedName | UnprefixedName
  
  PrefixedName   ::= Prefix ':' LocalPart
  UnprefixedName ::= LocalPart

其中Prefix(前綴)是名字空間的一個符號,而LocalPart是限定名的本地部分。本地部分可以是屬性名或元素名。

維基百科「XML名字空間」詞條,將合法名具體分為如下兩種[2]: XML文檔中的元素名和屬性名可以使用限定名或非限定名,限定名由命名空間的前綴和局部名組合而成,例如"xhtml:hr"。非限定名只有局部名,沒有前綴。非限定名被認為屬於預設命名空間,如果預設命名空間沒有定義,則屬於無命名空間。 限定名即對應上例中的PrefixedName。非限定名即對應上例中的UnprefixedName。

示例 編輯

  <?xml version='1.0'?>
  <doc xmlns:x="http://example.com/ns/foo">
    <x:p/>
  </doc>

在第二行中,前綴「x」被聲明與URI"http://example.com/ns/foo"相關聯。這個前綴後面可用作名字空間的縮寫。後面的標籤「x:p」是一個限定名,「x」是命名空間引用,「p」是本地部分。而標籤「doc」也是一個非限定名,僅包含本地部分。它們都屬於合法名。[5]

參見 編輯

參考文獻 編輯

  1. ^ Namespaces in XML 1.0 (Second Edition). [2011-03-08]. (原始內容存檔於2011-03-16). 
  2. ^ 2.0 2.1 存档副本. [2014-06-27]. (原始內容存檔於2014-07-02). 
  3. ^ Using Qualified Names (QNames) as Identifiers in XML Content. [2011-03-08]. (原始內容存檔於2011-09-05). 
  4. ^ Namespaces in XML 1.0 (Second Edition). [2011-03-08]. (原始內容存檔於2011-03-16). 
  5. ^ Namespaces in XML 1.0 (Second Edition). [2011-03-08]. (原始內容存檔於2011-03-16).