为什么xaml中的命名空间或许多其他xml文件无法访问?

时间:2016-10-27 08:15:01

标签: xml namespaces

当我打开Visual Studio并创建一个新的WPF项目时,会出现一个XAML文档,其中包含以下行。

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">

当我将URI复制到Web浏览器以查看命名空间定义时,它返回404状态。如果我删除命名空间定义,它会抛出第一个错误The standard namespace is not defined.

在许多其他xml文件中,命名空间定义中的大多数给定http URI在指定的地址上都不可用。

这在内部是如何工作的,特别是在XAML中?当名称空间定义不在URI显示的位置时,它们位于何处?

编辑:在发布我的问题后,主题Why do XML Namespaces usually start with http://…?解释了命名空间定义的命名方式。但是在XAML的情况下它们实际来自哪里?

2 个答案:

答案 0 :(得分:0)

命名空间是任意字符串,而不是URL。它们用于标识命名空间,而不是描述可能通过HTTP获取的任何内容。它们看起来像HTTP URL的惯例主要是为了确保唯一性(这个想法是你只使用你控制的域名创建命名空间,所以你不会引入与其他人的冲突)。

答案 1 :(得分:0)

好好搜索了一些新的关键词,带来了更多的信息。

a)就像Quentin已经说过的那样,只是字符串中的URI来唯一地标识命名空间。它们不是强制性的网络地址。

b)有一篇博客文章很好地解释了实际连接的类来自here

的位置

c)<Visual Studio installation directory>\Xml\Schemas下的Visual Studio中有一些.xsd文件。