Jaxb XJB中的XPATH结果为空目标节点
我得到了以下简单的XML模式Jaxb XJB中的XPATH结果为空目标节点,jaxb,xsd,xjb,Jaxb,Xsd,Xjb,我得到了以下简单的XML模式 <xs:complexType name="OrderReferenceType"> <xs:sequence> <xs:element name="ReferenceID" type="xs:string"/> </xs:sequence> <xs:attribute name="Type"> <xs:s
<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>
有人能帮助您在不修改原始XSD的情况下实现这一目标吗?您的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
我不确定绑定文件的工作方式,但要运行xpath表达式,您必须在某个地方声明
xs:
前缀的名称空间(可能需要添加xmlns:xs=”http://www.w3.org/2001/XMLSchema“
)或在没有名称空间的情况下使用它:/*[local-name()='element'][@name='ReferenceID']//*[local-name()='complexType']/*[local-name()='attribute'][@name='Type']/*[local-name()='simpleType']
//xs:element[@name='ReferenceID']//xs:complexType//xs:attribute[@name='Type']//xs:simpleType
^^
//xs:complexType[@name='OrderReferenceType']/xs:attribute[@name='Type']/xs:simpleType