У меня есть набор файлов XSD от клиента. Мне нужно сгенерировать java классов из них. Один из XSD импортирует другой без пространства имен. Это не сработает mvn generate-sources с ошибкой: sr c -resolve: Невозможно разрешить имя 'faultstring' в (n) компоненте "объявление элемента". . Орг xml .sax.SAXParseException; systemId: file: /src/main/resources/Common/SOAP_Fault_v4_0_0.xsd
Я использую openjdk 11 с версией 3.3.0 cxf-xj c -plugin для генерации классов. В приложении находится проект.
Я попытался сгенерировать дочерний XSD (SOAP_Fault_v4_0_0) отдельно и использовал файл привязок для ссылки на сгенерированный класс из parent (Envelope). Не работает Я также попытался использовать другой плагин jaxb2-maven-plugin (v2.5.0), но он заканчивается с той же ошибкой.
Когда я даю пространство имен дочернему XSD SOAP_FaultElements_v4_0_0.xsd и ссылаюсь на SOAP_Fault_v4_0_0.xsd используя префикс, он генерирует классы нормально, но затем он не совпадает с ответом клиента. Я не могу изменить клиентские XSD, поскольку это выходит за рамки моей компетенции. Однако, если модификация не изменяет пространства имен и структуру, я могу попробовать.
Ниже приведены XSD для справки:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.xmlsoap.org/soap/envelope/"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="Common/SOAP_Fault_v4_0_0.xsd"/>
<xs:element name="Envelope">
<xs:complexType>
<xs:sequence>
<xs:element name="Body">
<xs:complexType>
<xs:choice>
<xs:element name="request">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="36"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="env:Fault"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.xmlsoap.org/soap/envelope/"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="4.0.0">
<xs:import schemaLocation="SOAP_FaultElements_v4_0_0.xsd"/>
<xs:element name="Fault">
<xs:complexType>
<xs:sequence>
<xs:element ref="faultstring"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="4.0.0">
<xs:element name="faultstring">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
Поиск предложений по решению проблемы.