JAXB Binding Неподдерживаемое связывание пространства имен "http://www.w3.org/2001/XMLSchema"
У меня есть следующий XSD, из которого я генерирую привязки JAXB из... (только оставил соответствующие части для этого вопроса):
<?xml version="1.0"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
jaxb:extensionBindingPrefixes="simplify">...
<xsd:element name="trace">
<xsd:annotation>
<xsd:documentation>
containing screen navigation data
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:choice minOccurs ="0" maxOccurs ="unbounded">
<xsd:element ref="time" />
<xsd:element ref="event" />
<xsd:element ref="location" />
<xsd:element minOccurs="0" ref="index" ></xsd:element>
<xsd:element minOccurs="0" ref="caseId"/>
<xsd:element minOccurs="0" ref="contactAttId" />
<xsd:element minOccurs="0" ref="action" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
У меня есть следующий JAXB Binding:
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc simplify" jaxb:version="2.1">
<jaxb:bindings schemaLocation="compass_input_spec_12122014.xsd" node="/xsd:schema">
<jaxb:schemaBindings>
<jaxb:package name="org.jvnet.jaxb2_commons.plugin.simplify.tests01" />
</jaxb:schemaBindings>
<jaxb:bindings node="//xsd:element[@name='trace']/xsd:complexType">
<xsd:annotation>
<xsd:appinfo>
<simplify:property name="timeOrEventOrLocation">
<simplify:as-element-property />
</simplify:property>
</xsd:appinfo>
</xsd:annotation>
</jaxb:bindings>
</jaxb:bindings>
Когда я выполняю XJC (через плагин org.jvnet.jaxb2.maven2), я получаю следующую ошибку:
Parsing input schema(s)...
Error while parsing schema(s).Location [ file:/C:/work/MOJO/MOJO/MOJOInterfaces/src/main/resources/compass_input_spec_12122014.xsd{6,56}].
org.xml.sax.SAXParseException; systemId: file:/C:/work/MOJO/MOJO/MOJOInterfaces/src/main/resources/compass_input_spec_12122014.xsd; lineNumber: 6; columnNumber: 56; Unsupported binding namespace "http://www.w3.org/2001/XMLSchema". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?
at com.sun.tools.xjc.reader.AbstractExtensionBindingChecker.error(AbstractExtensionBindingChecker.java:213)
at com.sun.tools.xjc.reader.AbstractExtensionBindingChecker.checkAndEnable(AbstractExtensionBindingChecker.java:115)
at com.sun.tools.xjc.reader.ExtensionBindingChecker.startElement(ExtensionBindingChecker.java:133)
at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:551)
at com.sun.tools.xjc.reader.xmlschema.parser.IncorrectNamespaceURIChecker.startElement(IncorrectNamespaceURIChecker.java:128)
Кто-нибудь знает проблему?
Спасибо
2 ответа
Я исправил эту замену
<xsd:annotation>
<xsd:appinfo>
<simplify:property name="timeOrEventOrLocation">
<simplify:as-element-property />
</simplify:property>
</xsd:appinfo>
</xsd:annotation>
в моем файле привязок с:
<simplify:property name="timeOrEventOrLocation">
<simplify:as-element-property />
</simplify:property>
Вы можете использовать ниже схему
<xsd:simpleType name="LayerRate_T">
<xsd:annotation>
<xsd:appinfo>
<xjc:javaType name="org.acme.foo.LayerRate" adapter="org.acme.foo.LayerRateAdapter" />
</xsd:appinfo>
</xsd:annotation>
</xsd:simpleType>
когда включаете конфигурацию привязки в ваш XSD, вместо этого, когда вы используете внешнюю привязку, это другое.
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc simplify" jaxb:version="2.1">
<jaxb:bindings schemaLocation="compass_input_spec_12122014.xsd" node="/xsd:schema">
<jaxb:bindings node="//xsd:element[@name='trace']/xsd:complexType">
<simplify:property name="timeOrEventOrLocation">
<simplify:as-element-property />
</simplify:property>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>