【问题标题】:Qualified name in namespace declaration命名空间声明中的限定名称
【发布时间】:2012-06-13 07:17:02
【问题描述】:

看了MSDN-XAML NamespacesMSDN-Understanding XAML Namespaces后,我还是不明白有一个Qualified Name (QName)的目的。

以如下命名空间声明为例:

xmlns:x='http://www.w3.org/1999/XSL/Transform'

x 是完整 URI(在本例中为 URL)的前缀缩写:http://www.w3.org/1999/XSL/Transform。然后有一个名为xmlns 的QName。 mdsn 中 QName 的定义是:

这个包含前缀的完整名称是 a 的词法形式 限定名称(QName):

这应该是什么意思,为什么它存在,因为 t 语句已经有一个定位器和一个前缀来标识要使用的命名空间及其名称?

【问题讨论】:

    标签: wpf xml xaml qualified-name


    【解决方案1】:

    我认为这不仅仅是一个 XAML 问题,它只是一个 XML 命名空间问题。

    xmlns 属性(一个特殊的属性)只是在 XML 中用来定义命名空间的属性。它说“这里有一个命名空间声明”。如果您不添加前缀,那么您是在告诉它将作为属性值的名称空间设置为页面的默认名称空间。如果您完全省略默认命名空间,则假定它是属性的值(在 = 之后和引号之间)。

    XAML 是 XML,并选择使用 XML 机制来声明命名空间。我猜他们可能已经创建了自己的机制来执行此操作,但是由于他们没有,如果您按照问题中的提示添加了命名空间,而没有 xmlns:,则应用程序处理 XML(在这种情况下为 .NET 框架,解析 XAML 文件)不会知道您正在尝试定义命名空间;它会认为您正在向定义它的元素添加一个名为“x”的属性(这很可能不是为该元素定义的属性)。

    有关 XML 命名空间的更多信息

    http://www.w3.org/TR/REC-xml/

    http://www.w3schools.com/XML/xml_namespaces.asp

    http://en.wikipedia.org/wiki/XML_namespace

    【讨论】:

    • 你能在 XAML 的上下文中解释一下吗?
    • 抱歉,我昨天做了很多 XHTML,所以我脑子里有 XHTML。我改变了答案,只谈论 XML(和 XAML 在某种程度上)
    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 2011-01-31
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多