У меня есть xsd (назовем его afb), который импортирует другой xsd (назовем его kts).И я ссылаюсь на элемент kts.xsd в afb.xsd вместе с правильными пространствами имен.
Но когда я генерирую классы, используя JAXB, пространство имен для ссылочного элемента неверно.
Я имею в видууказанный элемент должен иметь пространство имен kts, где он имеет пространство имен afb.
Из-за чего проверка моего XML по этому xsd не проходит, и он не может связать данные xml с моделями java.
EX: afb.xsd:
<xs:import namespace="http://www.boschkts.com" schemaLocation="kts.xsd"/>
<xs:element name="vehicle">
<xs:complexType>
<xs:sequence>
<xs:element ref="vType"/>
<xs:element name="RESULTS" type="kts:RESULTS" >
</xs:sequence>
</xs:complexType>
</xs:element>
kts: xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.boschkts.com"
targetNamespace="http://www.boschkts.com" elementFormDefault="qualified">
<xs:complexType name="RESULTS">
<xs:sequence>
<xs:element name="SUMMARY" type="SUMMARY" minOccurs="0" />
</xs:sequence>
</xs:complexType>
Vehicle.java:
public class Vehicle {
@XmlElement(namespace = "http://www.boschafb.com", required = true)
protected String vType;
@XmlElement(name = "RESULTS", namespace = "http://www.boschafb.com", required = true)
protected Results results;
}
Если я наблюдаю Vehicle.java, свойство namespace of results должно быть "http://www.boschkts.com" вместо" http://www.boschafb.com"
. Если я изменю пространство имен вручную, тогда будет работать привязка данных из xml к моделям java.Но все равно проверка по xsd завершается неудачно с ошибкой:
Вызывается: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Обнаружено недопустимое содержимое, начиная с элемента 'kts:РЕЗУЛЬТАТЫ'.Ожидается один из {{* http://www.boschafb.com":RESULTS}'.
Кто-нибудь может указать, что мне может не хватать в xsd? Или это способ, которым генерирует jaxb, и я должен изменить классы вручную?
С уважением,
Сатья