2010-04-16 1 views
0

Java 오브젝트를 설명하는 XML 스키마 정의 (XSD)를 작성해야합니다.Java 오브젝트에 대한 XML 스키마 정의 (XSD)의 계승

문제의 개체가 형식 매개 변수를 사용하여 공통 기본 클래스에서 상속하는 경우 어떻게하는지 궁금합니다. XSD를하지 않고 - 내가 Rule<T>의 서브 클래스의 각을 나타내는 XML 노드를 가질 수 있도록 XSD를 구축 가겠어요 어떻게

(XTimeLocation 다른 곳에서 정의 된 사용자 정의 클래스입니다)

public abstract class Rule<T> { ... } 

public abstract class TimeRule extends Rule<XTime> { ... } 

public abstract class LocationRule extends Rule<Location> { ... } 

public abstract class IntRule extends Rule<Integer> { ... } 

.... 

각자 공통된 내용을 되풀이하니?

감사합니다.

답변

4

Conisder JAXB (XML 스키마 -> Java 컴파일 용).

XML 스키마 모델링 iheritance에 대한 몇 가지 가능성을 제공합니다 :

<xs:complexType name="baseType"> 
    <xs:sequence> 
     <xs:element name="a" type="xs:string"/> 
     <xs:element name="b" type="xs:long"/> 
    </xs:sequence> 
</xs:complexType> 
<xs:complexType name="extendedType"> 
    <xs:complexContent> 
     <xs:extension base="baseType"> 
      <xs:sequence> 
       <xs:element name="c" type="xs:dateTime"/> 
       <xs:element name="d" type="xs:base64Binary"/> 
      </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

그러나, 나는 당신이 게시 정확히 Java 코드를 달성 할 수 있다고 생각하지 않습니다. 그럼에도 불구하고 inheritance plugin과 다소 가까워 질 수 있습니다.

+0

@lexicore 답변 해 주셔서 감사합니다. 저는 진정으로 상속 모델을 만들 필요가 없습니다. 효과를 얻는 한 행복합니다. 또한 흥미로운 점은 내가 궁극적으로 JAXB와 함께 사용하기 위해 스키마를 정의한다는 것입니다. – bguiz

+0

@bguiz 그렇다면 스키마 기반 확장과 함께 클래스/인터페이스를 확장/구현할 수있는 상속 플러그인이 필요합니다. 플러그인은 현재 매개 변수화 된 클래스/인터페이스를 지원하지 않습니다. 그런데 멋진 기능이 될 것입니다. 나는 그것을 구현하는 것을 고려할 것이다. – lexicore

+0

+1 그리고 @lexicore를 확인하십시오 : 예, 말한 것과 같은 결론에 도달했습니다. XSD는 클래스 매개 변수를 사용하여 상속을 지원하지 않습니다. XSD는 언급 한 플러그인을 사용하는 것을 제외하고는 단어의 전체적인 의미로 상속을 지원하도록 만들 수 없습니다. – bguiz