XML模式位置最佳实践

时间:2011-01-25 17:49:51

标签: java xsd uri

在看到一些更加神秘的错误消息之后,我意识到它们可能是由于此处存在伪造的URI:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:cxf="http://activemq.apache.org/camel/schema/cxfEndpoint"    
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://activemq.apache.org/camel/schema/spring
        http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
        http://activemq.apache.org/camel/schema/cxfEndpoint
        http://activemq.apache.org/camel/schema/cxf/cxfEndpoint.xsd
        http://cxf.apache.org/jaxws 
        http://cxf.apache.org/schemas/jaxws.xsd
        ">

参考在线模式是一种好习惯吗?

从上面来看,例如:

http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

工作得很好,当你没有互联网问题和springframework.org等等时,这很可爱,但是从上面开始,还有:

http://activemq.apache.org/camel/schema/cxf/cxfEndpoint.xsd

给出:

"Oops! This link appears to be broken"
确实糟糕。

关于引用项目中架构的URI的最佳做法是什么?

奖金问题:为什么Eclipse不会实时抱怨损坏的链接? (IntelliJ IDEA做对了!?)

2 个答案:

答案 0 :(得分:3)

Spring在启动容器时不会通过网络加载模式 - 有一种嵌入schemas within the jar files of Spring的机制,Spring使用这些内置模式来验证xml。这也适用于所有自定义命名空间。

Eclipse可能会抱怨,因为Eclipse会根据模式URI下载模式,模式URI可能不会通过网络托管,就像您的情况一样,有一种方法可以在Eclipse首选项中缓存自定义模式。

答案 1 :(得分:1)