名称空间中的URL引用,它们如何工作?

时间:2011-05-06 16:32:15

标签: c# wpf xml xaml xml-namespaces

我理解常规XML命名空间,例如:

 xmlns:myExample="clr-namespace:WindowsApp.MyNamespace;assembly=MyAssembly"

但我经常看到表单的命名空间:

 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

这些网址名称空间的含义是什么?当我在浏览器中输入URL时,URL不起作用;有谁知道这是如何工作的?提前谢谢。

2 个答案:

答案 0 :(得分:3)

请参阅this page on MSDN及相关属性:XmlnsDefinitionAttribute

此属性用于XAML处理器的clr映射,它允许将一个或多个clr-namespace映射到单个xmlns,并且可以在汇编信息中定义。

答案 1 :(得分:1)

正如John Saunders所说,名称空间 的URL。这是一个URL的事实是误导。命名空间由URI标识(其中URL是子集)。 URI被视为字符串。当且仅当字符串相等时,两个名称空间标识符相等,因此所有这三个名称空间标识符代表不同的名称空间:

  • http://www.example.org/~wilbur
  • http://www.example.org/%7ewilbur
  • http://www.example.org/%7Ewilbur

(示例来自规范:http://www.w3.org/TR/xml-names/

命名空间服务(作为命名空间),使相同的名称能够引用不同的东西。因此,您可以像这样编写XML(假设您已声明名称空间前缀legacynewSystem):

<newSystem:Type newSystem:TypeName="Customer" newSystem:TableName="Customers" legacy:TableName="cstmr" />

两个TableName元素引用不同的东西,因为它们的名称空间不同。