2012-11-19 2 views
4

xsd에 자식 XSD이 포함되어 있습니다 ("xsd : include"사용). (각 xsd는과 동일한 에 속합니다.) 나는 하나의 패키지 대신 개의 하위 패키지 (각 하위 XSD 당 하나의 하위 패키지)에 jaxb 클래스를 생성하도록 요청 받았다.여러 패키지에서 xsd 세트에 대한 JAXB 클래스를 생성 할 수 있습니까?

내가 지금까지 읽은 내용에 따르면, 우리는 이러한 별도의 XSD를에 jaxb:schemaBindings를 추가 할 수 있습니다 만 XSD를이 다른 네임 스페이스에 속하는 경우, 별도의 패키지의 클래스를 생성합니다.

내 경우에는, 내가하고 싶은 일은에 속하는 xsds 집합에 대한 여러 하위 패키지로 클래스를 만드는 것입니다. JAXB를 사용하여이 작업을 수행하도록 도와주십시오.


편집 : 내가 조금 더 그것을 명확하게 내 문제에 대해 좀 더 설명을 추가했습니다.

내 모든 XSD에는 다음과 같은 헤더가 있습니다. 따라서 동일한 네임 스페이스.

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:srm="http://www.mycompany.com/srm/" 
    targetNamespace="http://www.mycompany.com/srm/" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0" elementFormDefault="qualified" 
    attributeFormDefault="unqualified" version="1.0"> 

내 스키마 파일 이름이 A.xsd, B.xsd 및 C.xsd라고 가정 해 봅니다.

  • C.xsd에서 위에서 언급 한 헤더가있는 일부 요소 (문자열 유형)를 정의했습니다.

  • B.xsd에서 "xsd : include"태그를 사용하여 C.xsd를 포함 했으므로 C.xsd에 정의 된 복합 유형을 사용하는 complexType 정의가 있습니다 (앞서 언급 한 헤더와 동일 함)

  • A.xsd에서 "xsd : include"태그를 사용하여 B.xsd를 포함 시켰습니다. 그런 다음 B.xsd에 정의 된 복합 유형을 사용하는 complexType 정의가 있습니다 (앞서 언급 한 헤더와 동일 함)

아래에서 언급 한 것처럼 JAXB 클래스를 생성하고 싶습니다.

  • com.generate.packageA 패키지에서 생성 할 A.xsd와 관련된 JAXB 클래스.

  • B.xsd와 관련된 JAXB 클래스는 com.generate.packageB 패키지에서 생성됩니다.

  • com.generate.packageC 패키지에서 생성 할 C.xsd와 관련된 JAXB 클래스입니다.

+0

혹시 이것에 대한 해결책을 찾았나요? 나는 비슷한 것을 구현하려고하고있다. 해결책이 있었으면한다. – indybee

답변

2

각각의 "포함 된"스키마에서 별도로 패키지로 JAXB 클래스를 생성하고 XJC 도구에서 사용 가능한 에피소드 메커니즘을 활용할 수 있습니다.(스택 오버플로에 주어진 답변에서)

+0

안녕하세요 @Blise Doughan, 빠른 응답에 감사드립니다. 그러나 위의 모든 링크는 여러 xsds에서 여러 네임 스페이스를 사용하여 연결됩니다. 내가 뭔가를 놓친 것일 수 있습니다. 내 게시물에 대해 수행 한 수정 내용을 확인하고 이에 대한 아이디어를 제공해 주시겠습니까? 감사. –

+0

.episode 파일을 사용하려고했습니다. 그러나 이전에 만든 .episode 파일 (C.xsd 사용)을 사용하여 B.xsd에 대한 클래스를 생성 할 때 어떤 클래스도 생성하지 않았습니다. 그것은 심지어 나에게 오류를주지 않았다. –

관련 문제