2017-12-19 5 views
0

깊게 중첩 된 xsd 요소에서 열거 형을 생성하는 데 문제가 있습니다. 빌드 할 때 코드를 생성 할 때 열거 형은 string입니다. 여기에 예제가 있습니다.깊게 중첩 된 xsd 요소에서 열거 형을 생성하십시오.

<xs:element name="Car"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element name="CarModal"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="Type"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
        <xs:enumeration value="SomeValue"/> 
        <xs:enumeration value="AnotherValue"/> 
        </xs:restriction> 
       </xs:simpleType> 
      </xs:element> 
     </xs:sequence> 
     </xs:completType> 
    </xs:element> 
    </xs:sequence> 
우리가 열거 값 이름 '형식'을 포함 자동차 요소의 내부에 또 다른 20 개 요소를 가질 것입니다 위의 예에서

. jaxb에 'Type'을 바인딩하는 바인딩 파일이 있습니다. typesafeEnumClass하지만 작동하지 않습니다. 여전히 문자열을 열거 형으로 사용하고 있습니다. 내 바인딩의 예제는 다음과 같습니다.

<jaxb:bindings schemaLocation="someLocation"> 
    <jaxb:bindings node="//xs:element[@name='Car']> 
     <jaxb:bindings node="//xs:element[@name='CarModal']"> 
     <jaxb:bindings node="xs:element[@name='Type']/xs:simpleType> 
      <jaxb:typesafeEnumClass name="Type"/> 
     </jaxb:bindings> 
     </jaxb:bindings> 
    </jaxb:bindings> 
</jaxb:bindings> 

어떤 도움 주셔서 감사하고 나는 XSD

답변

0

을 변경할 수 없습니다 나는 당신의 바인딩이 정도로도 정확 같아요. //xs:element[@name='CarModal']을 작성할 때 기본적으로 "내 스키마에있는 요소가 모두 CarModal"이라고 표시됩니다. 다음으로 Type 개의 요소가 많으므로 xs:element[@name='Type']/xs:simpleType은 정확하지 않습니다.

은 바인딩은 잘못된 구문에 대한 일반적인 인상을,

xs:complexType/xs:sequence/xs:element[@name='CarModal']/ 
xs:complexType/xs:sequence/xs:element[@name='Type']/xs:simpleType 

다음과 같이 더 정확한 표현을 사용해보십시오. 예를이를 위해 :

<jaxb:bindings node="xs:element[@name='Type']/xs:simpleType> 

유효하지 않은 XML (xs:simpleType" 누락)입니다. 따라서 바인딩이 전혀 고려되지 않은 경우 일 수 있습니다. 그렇지 않으면 생성 된 코드 대신 오류가 발생해야합니다. 바인딩이 전혀 적용되는지 다시 확인하십시오.

관련 문제