我的问题是: 我必须从头开始实现Web要素服务服务器,我想从XSD精确地获得:
ħ**号码://schemas.opengis.net/wfs/1.1.0/wfs.xsd
我运行命令:
xjc h**p://schemas.opengis.net/wfs/1.1.0/wfs.xsd
[ERROR] Property "Title" is already defined. Use <jaxb:property> to resolve this conflict.
line 232 of h**p://www.w3.org/1999/xlink.xsd
[ERROR] The following location is relevant to the above error
line 219 of h**p://www.w3.org/1999/xlink.xsd
[ERROR] Property "Title" is already defined. Use <jaxb:property> to resolve this conflict.
line 261 of h**p://www.w3.org/1999/xlink.xsd
[ERROR] The following location is relevant to the above error
line 246 of h**p://www.w3.org/1999/xlink.xsd
Failed to parse a schema.
然而,当我跑:
xjc h**p://schemas.opengis.net/ows/1.1.0/owsGetCapabilities.xsd
该过程100%成功。
hw p://www.w3.org/1999/xlink.xsd的片段部分是:
<xs:attributeGroup name="locatorAttrs">
<xs:attribute ref="xlink:type" fixed="locator" use="required"/>
<xs:attribute ref="xlink:href" use="required"/>
<xs:attribute ref="xlink:role"/>
<xs:attribute ref="xlink:title"/>
<xs:attribute ref="xlink:label">
<xs:annotation>
<xs:documentation>
label is not required, but locators have no particular
XLink function if they are not labeled.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="locatorModel">
<xs:sequence>
<xs:element ref="xlink:title" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:group>
<xs:complexType name="locatorType">
<xs:group ref="xlink:locatorModel"/>
<xs:attributeGroup ref="xlink:locatorAttrs"/>
</xs:complexType>
<xs:element name="arc" type="xlink:arcType" abstract="true"/>
<xs:attributeGroup name="arcAttrs">
<xs:attribute ref="xlink:type" fixed="arc" use="required"/>
<xs:attribute ref="xlink:arcrole"/>
<xs:attribute ref="xlink:title"/>
<xs:attribute ref="xlink:show"/>
<xs:attribute ref="xlink:actuate"/>
<xs:attribute ref="xlink:from"/>
<xs:attribute ref="xlink:to">
<xs:annotation>
<xs:documentation>
from and to have default behavior when values are missing
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="arcModel">
<xs:sequence>
<xs:element ref="xlink:title" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:group>
怎么了?
答案 0 :(得分:5)
问题在于xmlns:xlink =“http://www.w3.org/1999/xlink”
解决方案: 创建并使用binding.xjb:
<jxb:bindings version="2.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<jxb:bindings schemaLocation="http://www.w3.org/1999/xlink.xsd" node="/xs:schema">
<jxb:bindings node="//xs:attributeGroup[@name='locatorAttrs']">
<jxb:bindings node=".//xs:attribute[@ref='xlink:title']">
<jxb:property name="title1"/>
</jxb:bindings>
</jxb:bindings>
<jxb:bindings node="//xs:attributeGroup[@name='arcAttrs']">
<jxb:bindings node=".//xs:attribute[@ref='xlink:title']">
<jxb:property name="title2"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
working ant任务(build.xml和binding.xjb在同一个文件夹中):
<xjc schema="${src.folder.xsd}\${src.file.xsd}" package="${src.package}" destdir="${src.folder}" binding="binding.xjb">
<produces dir="${src.folder}\${src.package}" includes="**/*.java" />
</xjc>