关于xml上的名称空间的一些问题?

时间:2016-01-05 20:13:38

标签: xml xsd w3c

  1. 名称空间只是一个标记,表示此元素表现为“如此”的模式验证程序,只要用此名称空间标记,它就会表现“相同”

  2. 什么是默认名称空间

  3. 在像belove这样的情况下,

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified">

  4. xmlns:xs表示http://www.w3.org/2001/XMLSchema 名称空间是否会显示xs和未标记为xs的元素来自名称空间http://www.w3schools.com

1 个答案:

答案 0 :(得分:2)

  

namespace只是一个标记,表示此元素的行为验证方式&#34;所以&#34;并且表现得相同&#34;相同&#34;只要用这个命名空间标记它?

不,XML命名空间根本不是标记。它很像任何编程语言中的命名空间:一个很大程度上抽象的上下文,其中存在某些名称并且是唯一的。由于给定的名称可能存在并且在不同的名称空间中具有不同的含义,因此对任何非限定名称的正确解释取决于知道或猜测其正确的名称空间(包括它是否没有名称空间)。

XML命名空间由特征URI 标识,但最好将它们视为具体句柄,而不是命名空间本身。这类似于你和你自己之间的区别。不同的名称空间URI标识不同的名称空间。

在技术领域内外都有大量的类比。例如,在美国,人们几乎不能依赖于同一州的两个城市具有相同的名称,但不同州的不同城市可以并且确实具有相同的名称。这些州在很大程度上用作城市名称的名称空间。因此,如果我要求你去斯普林菲尔德,你可以猜测我是指密苏里州的那个,伊利诺伊州的那个,马萨诸塞州的那个,还是其中一个,但除非我不知何故告诉你哪一个,你不能确定。

  

什么是默认namespaces

使用限定名称表达所有XML元素是单调乏味且有点难看。 XML文档可以改为声明默认命名空间,在这种情况下,非限定元素名称将相对于该命名空间进行解释,而不是被解释为没有命名空间。 (属性名称不会受默认命名空间的直接影响。)

如果我们是伊利诺伊州一家小型公司的一部分,那么默认情况下,我们总是将城市名称解释为伊利诺伊州的城市名称。 然后如果我要求你去斯普林菲尔德而不说哪一个,你就有理由将我解释为伊利诺伊州的斯普林菲尔德。如果我想让你去密苏里州的斯普林菲尔德,那么我就有义务这样说。

  

xmlns:xs是否意味着[...]?

以上所述都是理论上的。您现在要问的是基本上这些理论概念是如何用XML表达的。

XML使用名称空间前缀将本地名称与名称空间相关联。结果是prefix:local形式的限定名称。例如,问题中显示的开始标记是针对具有限定名称xs:schema的元素;这个元素有本地名称&#34; schema&#34;和名称空间前缀&#34; xs&#34;。这有点像美国邮局分配&#34; MO&#34;作为&#34; Missouri&#34;的缩写,以便我们可以将邮件发送到&#34; Springfield,MO&#34;他们知道我们的意思。

当然,这引发了名称空间前缀如何与特定名称空间相关联的问题。

首先,有两个预定义的名称空间前缀,&#34; xml&#34;和&#34; xmlns&#34;,它们总是分别绑定到由http://www.w3.org/XML/1998/namespacehttp://www.w3.org/2000/xmlns/标识的名称空间。其他前缀不能绑定到这些名称空间,这些名称空间可能不会被指定为默认名称空间,并且不能删除这些绑定,因此XML处理器可以仅通过前缀识别这些名称空间中的名称,而无需执行任何其他名称空间处理。 / p>

其次,具有名称空间前缀&#34; xmlns&#34;的属性名称;定义为描述它们出现的元素及其后代的名称空间前缀和名称空间之间的关联(在这些后代中被覆盖)。这种属性名称的本地部分是绑定的名称空间前缀,以及属性的值作为与前缀关联的名称空间的名称空间URI。

XML还提供默认命名空间。属性名称xmlns被定义为声明它出现的元素及其后代的默认命名空间(在这些后代中被覆盖)。该属性的值是默认命名空间的名称空间URI。如果此类默认名称空间声明在范围内,则非限定元素名称将被解释为属于默认名称空间。

因此,以您的示例开始标记:

<xs:schema

该元素具有本地名称&#34; schema&#34;并且绑定到前缀&#34; xs&#34;的尚未指定的命名空间。

xmlns:xs="http://www.w3.org/2001/XMLSchema"

命名空间前缀&#34; xs&#34;绑定到此元素及其后代中URI http://www.w3.org/2001/XMLSchema标识的命名空间,包括此元素自己的名称。

targetNamespace="http://www.w3schools.com"

元素的属性targetNamespace被声明为具有值&#34; http://www.w3schools.com&#34;。其重要性特定于元素类型(在这种情况下,它声明了由该元素表示的模式定义的元素和属性的名称空间URI)。

xmlns="http://www.w3schools.com"

元素及其后代的默认命名空间是由URI http://www.w3schools.com标识的命名空间。

elementFormDefault="qualified"

特定于元素类型的另一个属性。

>