JAXB for Java-xml 바인딩을 사용하고 있습니다. 처음 도메인 클래스를 만든 다음 schemagen 명령 줄 도구를 사용하여 다음 스키마가 생성되었습니다. 그러나 생성 된 스키마가 유효하지 않아 다음과 같은 오류 메시지가 나타납니다.JAXB : xs : extension을 사용하는 동안 요소 순서를 무시합니다.
오류 메시지 : COS-모든 limited.1.2 : 모든 모델 그룹 {분 발생} = {최대 발생} = 1 인 경우, 그 입자가 한 쌍의 일부이어야 가진 입자에 표시해야하는 복합 유형 정의의 {content type}을 구성합니다.
사용 사례 : Emp (기본 클래스)와 Dept (하위 클래스)의 두 클래스가 있습니다.
1. 요소 순서에 대한 제한이 없습니다 (empId, deptId 및 deptName이 임의의 순서로 나타날 수 있음을 의미 함). 그래서 우리는 xs : all 요소를 사용했습니다.
2. Dept 클래스에서 deptId 필드는 한 번만 나타납니다 (minOccurs = 1, maxOccurs = 1). deptName은 선택 사항입니다.
유효한 나의 스키마에 따라 유효한 스키마를 생성 할 수 없습니다. 나는 Google에서 검색했습니다. 그러나 나는 해결책을 찾지 못했습니다. 그래서 전문가가이 쿼리에 대답 할 수있을 것으로 기대하고 있습니다. 클래스, 스키마, 그리고 올바른 방향으로 나를 인도 해주세요.
참고 : 일부 임시 도메인 클래스를 만들지 말라.
미리 감사드립니다.
Emp.java
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="EmpType", propOrder={})
@XmlRootElement
public class Emp {
@XmlElement(name="empId", required = true)
private String empId;
}
Dept.java
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="DeptType", propOrder={})
public class Dept extends Emp
{
@XmlElement(name="deptId", required = true)
private String deptId;
private String deptName;
}
Schema1.xsd
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="emp" type="EmpType"/>
<xs:complexType name="EmpType">
<xs:sequence>
<xs:element name="empId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DeptType">
<xs:complexContent>
<xs:extension base="EmpType">
<xs:all> <!--showing error message, mentioned above -->
<xs:element name="deptId" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="deptName" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
자세한 답변을 보내 주셔서 감사합니다. 시퀀스를 무시해야하므로 상속 관계가 제거되고 xs : all을 사용하여 개별 클래스가 만들어졌습니다. – user1635014