我有两个模式:
<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中的错误还是我遗漏了什么?您是否会推荐能够处理多个XSD文件的任何(最好是在线)XML验证器?
答案 0 :(得分:0)
我发现这可能是bug in IntelliJ,因为我可以使用xmllint验证这一点(我需要添加mix
)。
也许一个解决方法可以是定义复杂类型foo:bar扩展bar:bar - 这种方式似乎对IntelliJ有效。
答案 1 :(得分:0)
xs:import是必要的。您可以尝试在xs:import上添加schemaLocation属性 - 它是可选的,但是某些XML处理器没有用于将命名空间解析为模式位置的默认实体解析器。