gpt4 book ai didi

xml - 为什么 xmlns :xsi, 而不仅仅是 XML 文档中的 xsi?

转载 作者:数据小太阳 更新时间:2023-10-29 02:33:55 28 4
gpt4 key购买 nike

据我所知,按照惯例,默认命名空间在 XML 文档的根元素中命名为 xmlns 属性。其他 namespace 被命名为其他名称。现在,我想知道为什么 XML 方案实例命名空间总是命名为 xmlns:xsi 而不是简单地命名为 xsixsi 是否与 xmlns:xsi 相同?如果是,为什么是?如果没有,为什么没有?

不是来自默认命名空间的元素和属性名称总是以命名空间的名称开头。 xmlns:xsi 告诉我 xsi 是命名空间 xmlns 中定义的属性,这是冲突的,因为默认命名空间中的属性名称应该' 前面是命名空间。

最佳答案

默认命名空间未命名xmlns .

xmlns是声明命名空间前缀(即短名称、句柄)的方法。语法是 xmlns[:prefix]="namepace-uri" .

每个 XML 元素只能有一个命名空间声明,您可以在其中省略前缀 (xmlns="namespace-uri"),如果以这种方式声明,则称为默认命名空间

它被称为default,因为所有没有显式覆盖它的后代元素都会继承它——这里<element> , <child>第一个<grandchild>都是 some_namespace 的一部分:

<element xmlns="some_namespace">
<child>
<grandchild />
<grandchild xmlns="something_else" />
<yan:grandchild xmlns:yan="yet_another_namespace" />
</child>
</element>

这种自动继承不会发生在前缀上——这里只有 <sn:element>some_namespace ,因此与 <element> 相同上面,而<child>第一个<grandchild>不在命名空间中:

<sn:element xmlns:sn="some_namespace">
<child>
<grandchild />
<grandchild xmlns="something_else" />
<yan:grandchild xmlns:yan="yet_another_namespace" />
</child>
</sn:element>

重要的部分只是命名空间 URI,而不是前缀:

  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"声明 URI http://www.w3.org/2001/XMLSchema-instance应称为 xsi在此元素内。

  • 你可以自由选择任何你喜欢的前缀,你可以声明xmlns:bob="http://www.w3.org/2001/XMLSchema-instance"这意味着 URI http://www.w3.org/2001/XMLSchema-instance应称为 bob在此元素内。

按照惯例,许多广泛使用的 XML namespace URI 在任何地方都具有相同的前缀,但这在技术上不是必需的。

关于xml - 为什么 xmlns :xsi, 而不仅仅是 XML 文档中的 xsi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38940892/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com