具有继承的元素的 JAXB SCD 路径

问题描述 投票:0回答:1

我正在尝试从以下架构中对生成的属性进行简单的重命名:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://usermanagement"
           targetNamespace="http://usermanagement">

    <!-- definitions of complexTypes RoleRef and OrganizationRef omitted -->
    <xs:element name="User">
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="core:RawDTO">
                    <xs:sequence>
                        <xs:element name="FirstName" type="xs:string"/>
                        <xs:element name="LastName" type="xs:string" minOccurs="0"/>
                        <xs:element name="UserId" type="xs:string" minOccurs="0"/>
                        <xs:element name="Password" type="xs:string" minOccurs="0"/>
                        <xs:element name="Active" type="xs:boolean" minOccurs="0"/>
                        <xs:element name="Role" minOccurs="0" maxOccurs="unbounded" type="tns:RoleRef"/>
                        <xs:element name="Organization" minOccurs="0" maxOccurs="unbounded" type="tns:OrganizationRef"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
</xs:schema>

使用此绑定:

<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
               xmlns:xs="http://www.w3.org/2001/XMLSchema"
               version="2.1">

    <bindings xmlns:tns="http://usermanagement" scd="x-schema::tns">
        <!-- Testing simple element match:
        <bindings scd="tns:User">
            <class name="Uzer"/>
        </bindings>
        -->
        <!-- other attempts:
        tns:User/type::0/model::sequence/tns:Role
        tns:User/type::0/tns:Role
        -->
        <bindings scd="tns:User/type::0/content::0/extension::0/model::sequence/tns:Role">
            <property name="roles"/>
        </bindings>
        <schemaBindings>
            <package name="com.test.users"/>
        </schemaBindings>
    </bindings>
</bindings>

问题是我无法让该表达式匹配,而且我发现的 SCD 示例非常少,并且与这种类型的结构与 element / complexType / complexContent / extension /equence 不匹配。

我尝试用作灵感的指南只有元素/复杂类型/序列

/schemaElement::my:chapter/type::0

据我所知,JAXB 使用的 XSOM 编译器不喜欢指南中的所有表达式类型,例如

/type::my:articleType/model::sequence/schemaElement::my:appendix

关于如何使用 SCD 进行匹配有任何线索吗?

谢谢你

xml xsd jaxb
1个回答
0
投票

我遇到了类似的问题,并且我也一直在阅读 W3 组件指示符规范

由于 JAX2 Maven 插件中缺乏文档且详细输出有点损坏,我被迫使用格式不正确的 SCD 来运行它,以从插件/XJC 获取“帮助”:

enter image description here

匹配以下模式:

schema

我能够使用以下 SCD 来匹配“类型”属性的枚举:

/type::tns:CategoryType/attribute::Type/type::*

绑定配置如下所示:

JAXB binding config

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.