JAXB를 사용하여 처리되는 두 개의 스키마가 있습니다. 첫 번째 스키마는 사전 처리되며이 정보는 에피소드 파일 (http://www.java.net/blog/2006/09/05/separate-compilation-jaxb-ri-21 다음)을 사용하여 사용됩니다. 두 번째 스키마가 첫 번째 스키마를 가져오고 jaxb를 사용하여 다시 처리됩니다. 이것은 모두 예상대로 작동합니다.요소 참조가있는 JAXB 다중 스키마
하지만 이제는 참조를 사용하여 두 번째 스키마에서 사용되는 첫 번째 스키마에 요소가 있습니다.
스키마 A :
<schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Test/">
<element name="type" type="test:MyType"></element>
스키마 B : 처리 아무것도 동안
<schema elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:second="http://www.example.org/Second/"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Second/">
<import namespace="http://www.example.org/Test/" />
<complexType name="SomeType">
<sequence>
<element ref="test:type" minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
잘못이지만, 두 스키마에 대해 생성 된 코드와 동일한 방법 제공
public JAXBElement<EventType> createType(TypeType value)
을
런타임시이 결과는 다음과 같은 오류가 발생합니다.
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of
IllegalAnnotationExceptions
The element name {http://www.example.org/Type/}type has more than one mapping.
어떻게 JAXB가 중복 createType 메소드를 만들지 못하게 할 수 있습니까?
미리 감사드립니다.
업데이트 : 나는 JAXB 메일 링리스트에서 이와 동일한 질문을 던졌고, 그 목록에 나는 또한 실제 예제를 게시했다. 스레드와 예제는 다음에서 찾을 수 있습니다. http://java.net/projects/jaxb/lists/users/archive/2011-03/message/18
이 목록에서 해결 방법을 제안했지만 지금은 내가 좋아하는 방식으로 스키마를 사용할 수 있습니다. 그러나 JAXB는 이미 에피소드 파일에 있어야하기 때문에 추가 "작성"메소드를 작성하지 않아야한다고 생각합니다.
무엇 xjc에 대한 귀하의 주장입니까? – justkt
두 번째 스키마의 경우 ant에서 XJC를 사용하고 에피소드 파일은 jar 파일에 있으며 인수로 제공됩니다. 또한 첫 번째 스키마에 매핑 할 수있는 카탈로그가 있습니다. 이것은 에피소드 파일로 항아리를 사용하지 않으면 두 번째 스키마가 모든 유형을 생성하는 데 사용됩니다. 예제에서는 createType (TypeType ..) 메서드 만 복제됩니다. – Alexander
전체 스키마를 제시하십시오. 어떤 정의가 "test : MyType"입니까? –