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

Some questions about name spaces on xml?

  1. 是一个 命名空间 只是一个标签,它表示此元素的行为 "so" 并将作为 "same" 的模式验证器只要它标有此 namespace?

  2. 默认的命名空间是什么?

  3. 在这样的情况下,亲爱的,

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

xmlns:xs是否意味着http://www.w3.org/2001/XMLSchema namespace will be presented with xs and elements, which are not tagged with xs, are coming from the namespace http://www.w3schools.com

Is a namespace just a tag, which says schema-validator that this element behaves "so" and will behave "same" as long as it is tagged with this namespace?

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

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

技术领域内外都有大量的类比。例如,在美国,人们几乎可以相信同一州内没有两个城市具有相同的名称,但 不同 州的不同城市可以并且确实具有相同的名称。这些州在一小部分中用作城市名称的命名空间。因此,如果我让你去斯普林菲尔德,你可能会 猜测 我指的是密苏里州、伊利诺伊州、马萨诸塞州还是其他地方, 但除非我以某种方式告诉你是哪一个,否则你不能确定。

What are default namespaces?

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

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

Does xmlns:xs mean [...]?

以上都是理论性的。你现在问的基本上是这些理论概念在XML.

中是如何表达的

XML 使用名称空间前缀将本地名称与名称空间相关联。结果是 prefix:local 形式的限定名称。例如,问题中出现的开始标记是针对具有限定名称 xs:schema 的元素;此元素具有本地名称 "schema" 和名称空间前缀 "xs"。有点像U.S。 Post Office 将 "MO" 分配为 "Missouri" 的缩写,以便我们可以将邮件地址发送至 "Springfield, MO",他们知道我们的意思。

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

首先,有两个 pre-defined 命名空间前缀,"xml" 和 "xmlns",它们始终绑定到由 http://www.w3.org/XML/1998/namespace 和 [=21= 标识的命名空间], 分别。其他前缀不得绑定到这些命名空间,这些命名空间不得指定为默认命名空间,并且不得删除这些绑定,因此 XML 处理器可以仅通过前缀识别这些命名空间中的名称,而无需执行任何其他操作命名空间处理。

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

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

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

<xs:schema

该元素具有本地名称 "schema" 并与绑定到前缀 "xs" 的 yet-to-be-specified 命名空间相关联。

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

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

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

元素的属性 targetNamespace 被声明为具有值“http://www.w3schools.com”。其意义特定于元素类型(在本例中,它声明元素的名称空间 URI 和由该元素表示的模式定义的属性)。

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

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

elementFormDefault="qualified"

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

>