我有以下简单的XML模式...

<xs:complexType name="OrderReferenceType">
        <xs:sequence>
            <xs:element name="ReferenceID" type="xs:string"/>
        </xs:sequence>
        <xs:attribute name="Type">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="SalesOrder"/>
                    <xs:enumeration value="CustomerPO"/>
                    <xs:enumeration value="WorkOrder"/>
                    <xs:enumeration value="Misc"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>

并且我想向XJC JAXB编译器提示,以便它应该为“ Type”生成类型安全的枚举类。

<jaxb:bindings schemaLocation="file:./WorkOrder.xsd">
<jaxb:bindings node="//xs:element[@name='ReferenceID']//xs:complexType//xs:attribute[@name='Type']//xs:simpleType">
    <jaxb:typesafeEnumClass name="TypeEnum" />
</jaxb:bindings>

但是当我运行命令时

xjc -d src workOrder.xsd -b CustomizedBindings.xjb

我收到以下错误。

parsing a schema...
[ERROR] XPath evaluation of   "//xs:element[@name='ReferenceID']//xs:complexType//xs:attribute[@name='Type']//xs:simpleType" results in empty target node
line 69 of file:/C:/jaxB_workspace/jaxbExp/resources/mybindings.xjb

Failed to parse a schema.

有人可以在不修改原始XSD的情况下帮助实现该目标吗?

===============>>#1 票数:1

您的XPath解决了xs:element内部某处的复杂类型:

//xs:element[@name='ReferenceID']//xs:complexType//xs:attribute[@name='Type']//xs:simpleType
                                 ^^

但是在您的模式中,元素是复杂类型的一部分。 因此,XPath是不正确的。

请试试:

//xs:complexType[@name='OrderReferenceType']/xs:attribute[@name='Type']/xs:simpleType

  ask by user3555138 translate from so

未解决问题?本站智能推荐: