理解xml schemalocation

12 浏览
0 Comments

理解xml schemalocation

我想理解下面xml文件中xmlns定义的目的:

   

我不明白schemaLocation在这里指定的含义。例如,为什么我在spring配置文件中使用mvc:xxx_something_xxx时,需要同时添加xmlns:mvc = "http://www.springframework.org/schema/mvc"http://www.springframework.org/schema/mvc到schemaLocation属性中?

我只是想理解每次创建spring-mvc应用程序时所做的事情,而不是只是从谷歌上复制粘贴而不理解。

0
0 Comments

问题解析:Understanding xml schemalocation出现的原因是为了定义XML中的命名空间和验证XML的XSD位置。如果不设置这些属性,可能会使用无效的XML。

解决方法:在XML中使用xmlns属性来定义命名空间,xsi:schemaLocation属性来定义XSD的位置。

xmlns用于定义命名空间。如果想要使用mvc:xxx,需要定义mvc命名空间。

xsi:schemaLocation用于定义XSD的位置,用于XML验证。最新的版本可能不是必需的,但如果不设置它,可能会在不知情的情况下使用无效的XML。

相关链接:

- [What does "xmlns" in XML mean?](https://stackoverflow.com/q/1181888/1140748)

- [what is the use of xsi:schemaLocation?](https://stackoverflow.com/q/5875021/1140748)

以上就是Understanding xml schemalocation问题的原因和解决方法。

0
0 Comments

理解xml schemalocation

在XML中,有两个不同的概念:

1. `xmlns:mvc="http://www.springframework.org/schema/mvc"` 是一个声明,它表示“嘿,当我在XML代码中使用"mvc"前缀时,我要使用这个命名空间中的元素和类型”。所声明的命名空间应该与所需模式中的xmlns属性匹配,以便进行识别。

2. `schemaLocation="http://www.springframework.org/schema/mvc"` 是一个模式位置,类似于Java中的类路径或Linux中的路径。它是XML处理器可以查找XSD模式文件的源列表;您所需的模式应该位于此列表中,以便找到XSD文件。

如果没有声明,您就无法引用与当前模式命名空间(在本例中为`xmlns="http://www.springframework.org/schema/beans"`)不同的命名空间中的元素和类型。

如果没有模式位置,您将收到一个找不到元素或类型的错误。

因此,据我所理解,当我们使用`mvc:xxx_smth_xxx`时,SAXParser会转到`schemaLocation`中指定的URL,以获取XSD模式,并进行验证。但是,即使在我关闭了互联网连接的情况下,它仍然工作,为什么呢?

这是因为它有一个缓存,考虑一下每次您想处理您的applicationContext.xml时,都需要从互联网上读取模式 - 这将非常糟糕。

因此,为了避免每次处理XML时都需要从互联网上读取模式,XML处理器会将模式缓存在本地,以供后续使用。这样,即使在没有互联网连接的情况下,它仍然可以使用缓存中的模式进行验证。

0