XML 命名空間會將 XML 檔案中的專案和屬性名稱與自定義和預先定義的 URI 產生關聯。 若要建立這些關聯,您可以定義命名空間 URI 的前置詞,並使用這些前置詞來限定 XML 數據中的元素和屬性名稱。 命名空間會防止元素和屬性名稱衝突,並讓相同名稱的元素和屬性以不同的方式處理和驗證。
宣告命名空間
若要在專案上宣告命名空間,您可以使用 xmlns: 屬性:
xmlns:<name>=<"uri">
其中 <name> 是命名空間前置詞,而 <"uri"> 是識別命名空間的 URI。 宣告前置詞之後,您可以使用它來限定 XML 檔中的元素和屬性,並將其與命名空間 URI 產生關聯。 因為命名空間前置詞是在整個檔中使用,所以長度應該很短。
此範例會定義兩 BOOK 個元素。 第一個元素是由前置詞限定,mybook而第二個元素則以前置詞限定。 bb 每個前置詞都與不同的命名空間 URI 相關聯:
<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">
<bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>
若要表示專案是特定命名空間的一部分,請將命名空間前置詞加入其中。 例如,如果 Author 項目屬於 mybook 命名空間,則會宣告為 <mybook:Author>。
宣告範圍
命名空間從宣告點開始生效,直到它宣告的元素結尾為止。 在這個範例中,BOOK 元素中定義的命名空間不會套用至 BOOK 元素外部的其他元素,例如 Publisher 元素:
<Author>Joe Smith</Author>
<BOOK xmlns:book="http://www.contoso.com">
<title>My Wonderful Day</title>
<price>$3.95</price>
</BOOK>
<Publisher>
<Name>MSPress</Name>
</Publisher>
命名空間必須先宣告,才能使用它,但不需要出現在 XML 檔頂端。
當您在 XML 檔中使用多個命名空間時,您可以將一個命名空間定義為預設命名空間,以建立更簡潔的檔。 默認命名空間會在根元素中宣告,並套用至檔中所有不合格的專案。 默認命名空間僅適用於元素,不適用於屬性。
若要使用預設命名空間,請省略 元素上宣告的前置詞和冒號:
<BOOK xmlns="http://www.contoso.com/books.dtd">
...
</BOOK>
管理命名空間
類別 XmlNamespaceManager 會儲存命名空間 URI 及其前置詞的集合,並可讓您查閱、新增和移除此集合中的命名空間。 在某些內容中,需要這個類別才能提升 XML 處理效能。 例如,XsltContext 類別會使用 XmlNamespaceManager 來支援 XPath。
命名空間管理員不會對命名空間執行任何驗證,但假設前置詞和命名空間已經驗證並符合 W3C 命名空間 規格。
備註
C# 和 Visual Basic 中的 LINQ TO XML 不會用來XmlNamespaceManager管理命名空間。 如需使用 LINQ to XML 時管理命名空間的相關資訊,請參閱 LINQ 文件中的 使用 XML 命名空間 (C#) 和 使用 XML 命名空間 (Visual Basic)。
以下是一些您可以使用 XmlNamespaceManager 類別執行的管理和查閱工作。 如需詳細資訊和範例,請遵循每個方法或屬性的參考頁面連結。
| 發往 | 使用 |
|---|---|
| 新增命名空間 | AddNamespace 方法 |
| 拿掉命名空間 | RemoveNamespace 方法 |
| 尋找預設命名空間的 URI | DefaultNamespace 屬性 |
| 尋找命名空間前置詞的 URI | LookupNamespace 方法 |
| 尋找命名空間 URI 的前置詞 | LookupPrefix 方法 |
| 取得目前節點中的命名空間清單 | GetNamespacesInScope 方法 |
| 界定命名空間的範圍 | PushScope 和 PopScope 方法 |
| 檢查目前範圍中是否已定義前置詞 | HasNamespace 方法 |
| 取得用來查閱前置詞和 URI 的名稱數據表 | NameTable 屬性 |