命名空间中的 URL 引用,它们如何工作?
我了解常规 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 时,这些 URL 不起作用;有谁知道这是如何工作的?提前致谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅 MSDN 上的此页面 和相关属性:
XmlnsDefinitionAttribute
此属性用于 XAML 处理器进行 clr 映射,它允许将一个或多个 clr 命名空间映射到单个
xmlns
可以在程序集信息中定义。See this page on MSDN and the relevant attribute:
XmlnsDefinitionAttribute
This attribute is used for clr-mapping by the XAML processor, it allows mapping one or multiple clr-namespaces to a single
xmlns
and it can be defined in the assembly info.正如 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(假设您已声明命名空间前缀
legacy
和newSystem
):这两个 TableName 元素引用不同的事物,因为它们的命名空间不同。
As John Saunders said, the namespace is the URL. The fact that it's a URL is misleading. The namespace is identified by a URI (of which URL is a subset). The URI is treated as a string. Two namespace identifiers are equal if and only if the strings are equal, so all three of these represent different namespaces:
http://www.example.org/~wilbur
http://www.example.org/%7ewilbur
http://www.example.org/%7Ewilbur
(The example is from the spec: http://www.w3.org/TR/xml-names/)
The namespace serves (as namespaces do) to enable the same name to refer to different things. Thus, you can write XML like this (assuming you have declared namespace prefixes
legacy
andnewSystem
):The two TableName elements refer to different things because their namespaces are different.