IntelliJ IDEA验证错误的XSD

时间:2013-06-04 09:07:38

标签: java spring intellij-idea

我已经定义了以下事务管理器:

    <tx:annotation-driven transaction-manager="txManager" mode="aspectj" />

并具有以下根元素:

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

一切正常,但IntelliJ给我一个错误标记     模式= “切面” 说这是不允许的。我已经跟随它获取xsd的位置,它链接到tx 2.0 xsd - 这解释了错误消息,因为我需要2.5来使用模式注释。

是否有可能以某种方式向IntelliJ提示我应该向2.5而​​不是2.0进行验证?

2 个答案:

答案 0 :(得分:8)

如果打开jar文件,schemaLocation应根据此屏幕截图指向xsd:

enter image description here

然后你会看到IntelliJ有一堆不同版本的Spring的xsd文件:

enter image description here

这意味着您确实拥有所需的所有模式。

如果您的bean定义文件有问题,那么您的schemaLocation必须指向Spring jar文件中的错误版本:

enter image description here

检查Settings | Schemas and DTDs并确认您没有意外手动将其设置为指向错误的xsd文件:

enter image description here enter image description here

如果错了,那么你必须使用减号删除该行。这将导致IntelliJ返回其默认值:

enter image description here

之后你应该看到与第一个屏幕截图相同的东西。

答案 1 :(得分:1)

我在尝试在同一个xml配置中使用spring安全性和bean时遇到了类似的问题。 IntelliJ坚持使用安全xsd版本2.0进行验证,尽管一切都告诉它使用版本3.1。

我能够让IntelliJ通过更改安全性和bean之间的默认命名空间来解决这个问题。

我最初有:

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

所以我把它换成了:

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

之后,IntelliJ使用正确的xsd进行验证。我不确定这是IntelliJ的错误还是我做错了什么,但它现在有效。

希望这有助于将来。