我正在使用 JIBX 将我的 XML 数据映射到 Java 对象。这在 XML 仅包含一个目标名称空间时非常有效。不幸的是,需求发生了变化,现在我得到了包含两个不同名称空间的 XML 数据。
例子:
<a:foo>
<b:bar>Simple Example</b:bar>
</a:foo>
我的问题是,如何编写一个产生两个不同目标命名空间的 xsd?
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="namespace_of_a"
xmlns:a="namespace_of_a"
xmlns:b="namespace_of_b"
elementFormDefault="qualified">
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<!-- this won't work, because b is part of a different namespace -->
<xs:attribute type="xs:string" use="required" name="bar"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我已经尝试过:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="namespace_of_a"
xmlns:a="namespace_of_a"
xmlns:b="namespace_of_b"
elementFormDefault="qualified">
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<!-- this won't work, because jibx is reporting that targetNamespace is an unknown attribute -->
<xs:attribute targetNamespace="namespace_of_b" type="xs:string" use="required" name="bar"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
请帮忙。我不确定这通常是否可行?提前致谢!