理解xml schemalocation

时间:2014-12-31 11:56:45

标签: java xml spring spring-mvc

我试图意识到以下xml文件的xmlns定义:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">   
</beans>

我没有得到这里指定的schemaLocation。例如,为什么我应该在xmlns:mvc = "http://www.springframework.org/schema/mvc"属性中添加http://www.springframework.org/schema/mvcschemaLocation以在我的spring配置文件中使用mvc:xxx_something_xxx

我只想了解每次开始创建spring-mvc应用程序时的所作所为,而不仅仅是在不理解的情况下从谷歌进行复制粘贴。

2 个答案:

答案 0 :(得分:2)

xmlns定义了一个名称空间。如果要使用mvc:xxx,则必须定义mvc命名空间。

xsi:schemaLocation定义了XSD(用于XML验证)的位置。

如果我没有弄错,最新的不是强制性的,但是如果你没有设置它,那么你可能会使用无效的XML而不会注意到它。

相关:

答案 1 :(得分:2)

这是两件不同的事情:

  • xmlns:mvc="http://www.springframework.org/schema/mvc" 是一个声明,在这里你说&#34;嘿,当我要使用&#34; mvc&#34;我的XML代码中的前缀我将使用此命名空间中的元素和类型&#34 ;;声明的命名空间应与所需模式中的 xmlns 属性匹配,以便识别它
  • schemaLocation="http://www.springframework.org/schema/mvc" 是架构位置,就像java中的类路径或linux中的路径一样,它是XML处理器可以找到XSD架构文件的源列表;您希望的架构应位于此列表中,以便可以找到XSD文件

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

对于架构位置,您将收到无法找到元素或类型的错误。