gpt4 book ai didi

xml - 是 xmlns :xsi ="http://www.w3.org/2001/XMLSchema-instance" a special case in XML?

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:40 24 4
gpt4 key购买 nike

当我们使用命名空间时,我们还应该指出其关联的 XSD 所在的位置,如下例所示:

<?xml version="1.0"?>
<Artist BirthYear="1958"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.webucator.com/Artist"
xsi:schemaLocation="http://www.webucator.com/Artist Artist.xsd">
<Name>
<Title>Mr.</Title>
<FirstName>Michael</FirstName>
<LastName>Jackson</LastName>
</Name>
</Artist>

在这里,我们指出 Artist.xsd 应该用于验证 http://www.webucator.com/Artist 命名空间。然而,我们也使用了 http://www.w3.org/2001/XMLSchema-instance 命名空间,但我们没有指定它的 XSD 所在的位置。 XML 解析器如何知道如何处理这个命名空间?

更新(回应第一个评论者)

那么,我们可以不使用:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ehcache="http://www.springmodules.org/schema/ehcache"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springmodules.org/schema/ehcache
http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd">
...
</beans>

使用

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ehcache="http://www.springmodules.org/schema/ehcache">
...
</beans>

?

最佳答案

XML 解析器如何知道如何处理这个命名空间?

他们不会,除非他们会。基本思想是字符串 ' http://www.w3.org/2001/XMLSchema-instance ' 就像一个神奇的 cookies 。处理软件要么已被编程为识别它,并因此根据其含义采取行动,要么没有。

因此,仅仅通过识别这一事实,就可以“了解”它所代表的内容:a "namespace" that defines four attributes ('type'、'nil'、'schemaLocation' 和 'noNamespaceSchemaLocation')具有固定预定义的含义。

换句话说,如果您“知道”字符串 'http://www.w3.org/2001/XMLSchema-instance 是什么' “意味着”,那么你也自动知道是什么 an attribute named xsi:schemaLocation “意味着”:它指向以“W3C XML 模式”形式体系编码的模式文档。

这超出了 XML Namespaces Rec 的范围实际上提供了(这只是一些关于“通用名称”或诸如此类的东西)。这里有一个约定,命名空间的语法(使用殖民名称)已被部署为对语义理解进行硬编码:“在 W3C XML 模式的形式主义中,在哪里可以找到模式,对于这个文档实例。”这一切都取决于事先了解那个神奇的 cookie 字符串。

您的印象可能是命名空间必须有模式,并且机器可处理该模式,并且只能在 W3C XML 模式形式中启动。这些都不一定是真的。存在其他模式形式主义(SGML/XML DTD、Relax-NG,两者与 W3C XML 模式不同,都是 international standards );命名空间定义不必是机器可读的(它可以是散文,事实上它是针对“http://www.w3.org/2001/XMLSchema-instance”命名空间的!);并且命名空间根本不需要正式定义,因为保证命名空间字符串所做的只是用作消歧标记。

关于xml - 是 xmlns :xsi ="http://www.w3.org/2001/XMLSchema-instance" a special case in XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2615892/

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