You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Eclipse自动识别同级模块中的Schema文件?

问题描述

我们正在开发一个多模块项目,Schema文件结构如下:

* module1
| +-- schema1.xsd
| +... more stuff here
* module2
| +-- schema2.xsd
| +... more stuff here
* module3
| +-- schema3.xsd
| +... more stuff here

其中module1是基础模块,它的schema文件会被其他模块引用。用IntelliJ的同事在schema2.xsd和schema3.xsd里是这么引用的:

<xs:import namespace="https://foo.bar/module1/schema1.xsd" />

但把项目导入Eclipse后,所有来自module1的类型引用都会被标红报错,因为Eclipse找不到对应的.xsd文件。只有加上显式的schemaLocation才能通过验证:

<xs:import namespace="https://foo.bar/module1/schema1.xsd" schemaLocation="../module1/schema1.xsd" />

我们纠结点在于:显式路径虽然清晰,但模块位置变动时要手动改路径,而且运行时所有Schema会放在同一资源目录,相对路径会失效。现在想知道能不能配置Eclipse,让它像IntelliJ那样,不用写schemaLocation也能自动在同级模块里找到对应的Schema文件?

解决方案:通过XML Catalog配置实现自动定位

可以用Eclipse自带的XML Catalog功能实现类似IntelliJ的自动映射,具体步骤如下:

  • 打开Eclipse偏好设置:Window > Preferences(Mac系统为Eclipse > Settings)
  • 展开菜单XML > XML Catalog
  • 点击右侧Add按钮,在弹出窗口中配置:
    • Location选择Workspace,然后定位到module1下的schema1.xsd文件
    • Namespace URI填入xs:import中使用的命名空间:https://foo.bar/module1/schema1.xsd
    • Key type选择Namespace name
  • 点击OK保存配置

完成配置后,Eclipse会将该命名空间与指定的本地Schema文件绑定,无需写schemaLocation也能自动识别验证,后续模块位置变动时,只需在XML Catalog中更新对应文件路径即可,不用修改每个Schema里的引用语句。

内容的提问来源于stack exchange,提问作者mmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:53:22