在 XSD 中引用另一个模式时属性无效

Attributes not valid when referencing another schema in the XSD

我有两个模式:

<schema xmlns:foo="urn:x:foo:1.0" xmlns:bar="urn:x:bar:1.0"
        targetNamespace="urn:x:foo:1.0"
        version="1.0"
        xmlns="http://www.w3.org/2001/XMLSchema">
    <element name="bar" type="bar:bar" />
</schema>

<schema xmlns:bar="urn:x:bar:1.0"
        targetNamespace="urn:x:bar:1.0"
        version="1.0"
        xmlns="http://www.w3.org/2001/XMLSchema">
    <complexType name="bar">
        <attribute name="goo" type="string" />
    </complexType>
    <element name="bar" type="bar:bar"/>
</schema>

在 IntelliJ 15 (EAP) 中编辑 XML 时,此 XML 验证良好:

<bar goo="xxx" xmlns="urn:x:bar:1.0" />

但是找不到属性goo(虽然元素栏本身没问题):

<bar goo="xxx" xmlns="urn:x:foo:1.0" />

我尝试将 <import namespace="urn:x:bar:1.0"/> 添加到 foo.xsd 但没有成功。

这是 IntelliJ 中的错误还是我遗漏了什么?你会推荐任何(最好是在线的)XML 能够处理多个 XSD 文件的验证器吗?

我发现这可能是 bug in IntelliJ,因为我可以使用 xmllint 验证它(我需要添加 <import namespace="urn:x:bar:1.0" schemaLocation="bar.xsd"/>)。

也许解决方法是定义扩展 bar:bar 的复杂类型 foo:bar - 这种方式似乎对 IntelliJ 有效。

xs:import 是必须的。您可以尝试在 xs:import 上添加 schemaLocation 属性 - 它是可选的,但某些 XML 处理器没有用于将命名空间解析为架构位置的默认实体解析器。