我正在尝试从以下架构中对生成的属性进行简单的重命名:
<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 进行匹配有任何线索吗?
谢谢你
我遇到了类似的问题,并且我也一直在阅读 W3 组件指示符规范。
由于 JAX2 Maven 插件中缺乏文档且详细输出有点损坏,我被迫使用格式不正确的 SCD 来运行它,以从插件/XJC 获取“帮助”:
匹配以下模式:
我能够使用以下 SCD 来匹配“类型”属性的枚举:
/type::tns:CategoryType/attribute::Type/type::*
绑定配置如下所示:
希望有帮助。