2014-04-21 9 views
1
에 빈 대상 노드 결과

나는 다음과 같은 간단한 XML 스키마 ...XPATH는 XJB

<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 컴파일러에 암시하고 싶습니다 "유형".

<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를 수정하지 않고 이러한 목표를 달성하는 방법을 도와 드릴까요?

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

을하지만 스키마에서 요소는 복잡한 유형의 일부입니다

+0

내가 바인딩 파일의 동작에 대해 잘 모르겠지만, XPath 식을 실행 :

시도하십시오 ''xmlns : xs = "http://www.w3.org/2001/XMLSchema"') 또는 네임 스페이스없이 그것을 사용하십시오 :'// * [local-name() = 'element'] [@ name = 'ReferenceID' ] * * [local-name() = 'complexType'] // * [local-name() = '속성'] [@ name = '유형' ]' – helderdarocha

답변

1

당신의 XPath는 어딘가에 xs:element 내부의 복잡한 유형을 해결합니다. 따라서 XPath가 올바르지 않습니다. 아마도 추가 (`접두사 : 어딘가에 당신이 (가)`XS의 네임 스페이스를 선언해야 할 것이다,

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