在 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 处理器没有用于将命名空间解析为架构位置的默认实体解析器。
我有两个模式:
<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 处理器没有用于将命名空间解析为架构位置的默认实体解析器。