jaxb2 упрощает плагин для xs: выбор, имеющий те же типы
Я пытаюсь использовать основы упрощения jaxb2 для моей схемы в преобразование JAXB. Он отлично работает для сложных типов, как показано ниже. Каждый элемент определяется внутри xs:choice
имеет разные типы (type1
а также type2
).
sample.xsd (сложный тип выбора с другим типом)
<xs:complexType name="doclist">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:appinfo>
<simplify:as-element-property />
</xs:appinfo>
</xs:annotation>
<xs:element name="document1" type="type1" />
<xs:element name="document2" type="type2" />
</xs:choice>
</xs:sequence>
<xs:attribute name="heading" type="xs:string" />
</xs:complexType>
Но если сложный тип содержит более одного элемента с одинаковым типом (xs:string
), как показано ниже, затем maven install выдает ошибку.
sample.xsd (сложный тип выбора с тем же типом)
<xs:complexType name="addressTEST">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:appinfo>
<simplify:as-element-property />
</xs:appinfo>
</xs:annotation>
<xs:element name="street" type="xs:string" />
<xs:element name="city" type="xs:string" />
</xs:choice>
</xs:complexType>
Разве jaxb2 упрощение не будет работать, если у меня есть одинаковые типы для более чем одного элемента?
[ERROR] Error while parsing schema(s).Location [ file:/D:/workspace/trunk/sampmes/src/main/resources/sample.xsd{1099,38}].
com.sun.istack.SAXParseException2: compiler was unable to honor this as-element-property customization. It is attached to a wrong place, or its inconsistent with other bindings.
at com.sun.tools.xjc.ErrorReceiver.error(ErrorReceiver.java:82)
at com.sun.tools.xjc.reader.xmlschema.ErrorReporter.error(ErrorReporter.java:79)
at com.sun.tools.xjc.reader.xmlschema.UnusedCustomizationChecker.check(UnusedCustomizationChecker.java:144)
at com.sun.tools.xjc.reader.xmlschema.UnusedCustomizationChecker.check(UnusedCustomizationChecker.java:122)
at com.sun.tools.xjc.reader.xmlschema.UnusedCustomizationChecker.modelGroup(UnusedCustomizationChecker.java:220)
at com.sun.xml.xsom.impl.ModelGroupImpl.visit(ModelGroupImpl.java:125)
at com.sun.tools.xjc.reader.xmlschema.UnusedCustomizationChecker.particle(UnusedCustomizationChecker.java:241)
at com.sun.xml.xsom.impl.ParticleImpl.visit(ParticleImpl.java:124)
at com.sun.tools.xjc.reader.xmlschema.UnusedCustomizationChecker.complexType(UnusedCustomizationChecker.java:182)
at com.sun.xml.xsom.impl.ComplexTypeImpl.visit(ComplexTypeImpl.java:295)
at com.sun.tools.xjc.reader.xmlschema.UnusedCustomizationChecker.run(UnusedCustomizationChecker.java:108)
at com.sun.tools.xjc.reader.xmlschema.UnusedCustomizationChecker.run(UnusedCustomizationChecker.java:98)
at com.sun.tools.xjc.reader.xmlschema.BGMBuilder._build(BGMBuilder.java:187)
at com.sun.tools.xjc.reader.xmlschema.BGMBuilder.build(BGMBuilder.java:116)
at com.sun.tools.xjc.ModelLoader.annotateXMLSchema(ModelLoader.java:415)
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167)
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113)
at org.jvnet.mjiip.v_2_1.XJC21Mojo.loadModel(XJC21Mojo.java:50)
at org.jvnet.mjiip.v_2_1.XJC21Mojo.doExecute(XJC21Mojo.java:40)
at org.jvnet.mjiip.v_2_1.XJC21Mojo.doExecute(XJC21Mojo.java:28)
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:505)
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:328)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
1 ответ
Это должно работать, но попробуйте настроить один из xs:element
вместо.
В зависимости от типа созданного свойства вам необходимо настроить xs:choice
или один из детей xs:elements
,
Если вы получаете свойство "elements", настройте xs:choice
, Смотрите документацию. Это то, что у вас есть в первом случае.
Если вы получили свойство "элемент ссылки", настройте один из xs:elements
, Смотрите документацию. Это то, что вы имеете во втором случае.