2010-10-07 18 views
1

當您創建新的silverlight頁面時,您會在用戶控件標籤中自動創建一些xml名稱空間。 EG -Silverlight XAML - XMLNS實際上是外部的嗎?

<UserControl x:Class="QuickStart.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

我知道的xmlns擁有核心Silverlight的標籤,:x具有XAML語言元素,:d具有Expression Blend的東西等我的問題是 - 沒有Silverlight的實際撥打電話給定義的模式用戶界面在設計還是運行時?我無法想象它每次呈現頁面時都會發送到schemas.microsoft.com。但是,如果沒有,那麼URI是否只是常量?

回答

4

XML名稱空間是URL,但在大多數情況下,它們不對應於實際的網站或文檔或任何內容。它們基本上是爲XML元素提供唯一標識符,只要每個人都合作使用他們擁有的域名作爲URL的一部分。在早期,任何想出使用xmlns URL的人可能都打算讓人們在URL上發佈文檔,但沒有人真的這樣做。

XML解析器在任何時候都不訪問這些URL,它們基本上只是標識符。

+0

它通常被認爲是禮貌的把*在namespaceURI中對人類有用的東西,許多都是這樣做的,但不是微軟。 (出於某種原因,他們的openxmlformats.org域名讓我出現在MSN Entertainment的XBoxes廣告中,西班牙語,Handy。) – bobince 2010-10-08 00:21:15

1

不,它不會出去microsoft.com(這些文件夾甚至不存在),是的,這使得這些基本上是常量。

1

您的問題已經回答,但沒有人提及爲什麼使用

未提及的是,您也可以通過程序集引用來指定名稱空間,但這意味着每個程序集都需要一個名稱空間。 Silverlight庫分佈在多個程序集上(不僅僅是上面示例中的xmls條目示例)。

使用「常量」爲你正確地稱他們爲命名空間意味着多個組件可以用單個被引用的共享命名空間

這節省了大量的獨立的xmlns條目,但它引入搞清楚什麼組件一個namspace指的問題,如果你只有頁面的源代碼:)