2017-01-24 3 views
0

XSD를 사용하여 스키마의 열거 형으로 특성 값을 확인해야하는 XML이 있습니다.열거 형 목록의 XML 특성 유효성 검사

샘플 XML :

<Test StatusValue="X R,Y"> 
    <TestXSD>TestXSD</TestXSD> 
    <xsd>xsd</xsd> 
</Test> 

내가 속성은 X와 Y 값 확인해야보다도 스키마 내 열거 목록의 일부입니다. 나는 때문에 두 값 사이의 쉼표 분리 값의 유효성을 검증 할 수없는 오전

<xs:simpleType name="StatusGroup"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="X R"/> 
     <xs:enumeration value="Y"/> 
     <xs:enumeration value="Z"/> 
     <xs:enumeration value="A"/> 
     <xs:enumeration value="B"/> 
     <xs:enumeration value="C"/> 
     <xs:enumeration value="D"/> 
     <xs:enumeration value="E"/> 
    </xs:restriction> 
</xs:simpleType> 

아래로 스키마에서

열거 목록. X, Y

+0

문제가 더 정확히 무엇입니까? – potame

+0

내 속성 값이로 구분되어 있으므로 enumlist로 유효성을 검사 할 수 없습니다 –

답변

0

업데이트 :

public class Test { 
    @XmlElement(name = "StatusValue") 
    @XmlJavaTypeAdapter(StatusValueAdapter.class) 
    public List<StatusGroup> getStatusValues(){} 
} 

public class StatusValueAdapter extends XmlAdapter<String, List<StatusGroup>> { 
    public List<StatusGroup> unmarshal(String content) throws Exception { 
    // content = "X R,Y" 
    final String[] split = content.split(","); 
    // validate here against your enum 
    } 
} 

@XmlEnum 
public enum StatusGroup {} 

더 :


당신은 다음과 같은 당신에게 StatusValue를 정의 할 수 있습니다 :

<xs:complexType name="Test"> 
    ... 
    <xs:attribute name="StatusValue" type="StatusList" minOccurs="0" maxOccurs="1"/> 
    </xs:complexType> 

<xs:simpleType name="StatusList"> 
    <xs:list itemType="StatusGroup"/> 
</xs:simpleType> 

은 다음 JAXB에 의해 쉽게 확인할 수 있습니다 (목록의 구분자를 통지하는 공간) :

<Test StatusValue="X Y"> 
    <TestXSD>TestXSD</TestXSD> 
    <xsd>xsd</xsd> 
</Test> 
+0

내 속성 값 구분 기호가 ','(쉼표)이므로 위의 시나리오를 확인할 수 없습니다. –

+0

@Kumar_diru xsd를 변경할 수 없습니까? 정의와 XML? 할 수 없다면 내 대답을 업데이트 할 수 있습니다. – Tony

+0

아니요 XSD 및 XML을 삭제할 수 없습니다. 더 구체적으로 XML 및 XSD 열거 형 값을 업데이트했습니다. –