2014-12-02 2 views
1

XSD를 사용하여 XML 구성 파일의 유효성을 검사하는 중입니다. 각 구성은 서버의 기본 구성을 지정하며 서버별로 재정의 될 수 있습니다.속성이없는 요소 하나만 필요함 XSD

<server> 
    <cpu>65</cpu> 
    // Other configuration 
</server> 

이는 (선택 사항) 우선입니다 :

<server key="2"> 
    <cpu>55</cpu> 
</server> 

내가 속성없이 1에게 필요한 요소를 지원하기 위해 XSD를 구축하는 방법을 잘 모르겠어요, 그리고

은 기본입니다 동일한 이름을 가진 이라는 0-n 요소가 있습니다.. 다른 이름을 사용하면 훨씬 쉬운 문제이지만 요소가 동일하지 않으면 혼란스러워 보입니다.

편집 :

<configuration> 
    <target>Production</target> 
    <responsible>[email protected]</responsible> 
    <server> 
    <cpu>65</cpu> 
    </server> 
    <server key="2"> 
    <cpu>55</cpu> 
    </server> 
</configuration> 

답변

1

동일한 콘텐츠 모델 내에서 동일한 이름의 다른 요소를 사용할 수 없습니다.

그러나 당신은 그들이 우선 서버 것을 반영하기 위해 두 번째 server 요소의 이름을 변경 :

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="configuration"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="target"/> 
     <xs:element name="responsible"/> 
     <xs:element name="server" type="server-type" 
       minOccurs="1" /> 
     <xs:element name="server-override" type="server-override-type" 
       minOccurs="0" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <xs:complexType name="server-type"> 
    <xs:sequence> 
     <xs:element name="cpu"/> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="server-override-type"> 
    <xs:complexContent> 
     <xs:extension base="server-type"> 
     <xs:attribute name="key" use="required"/> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 
</xs:schema> 
: 확장을 통해 유형 정의에 자신의 공통점을 공유 여전히

<?xml version="1.0" encoding="UTF-8"?> 
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="try.xsd"> 
    <target>Production</target> 
    <responsible>[email protected]</responsible> 
    <server> 
    <cpu>65</cpu> 
    </server> 
    <server-override key="2"> 
    <cpu>55</cpu> 
    </server-override> 
</configuration> 

을 그리고

+0

사양을 검색하는 경우가 될 것 같았습니다. 하지만 확장 기능을 사용하면 훨씬 쉽게 사용할 수 있습니다. 감사! – mgw854

-1

해보십시오 JAXB의 비 정렬 화, 당신은 XML을 비 정렬 화하는 데 사용할 수있는 자바 객체를 생성,이 그것을 쉽게 : kjhughes의 요청 @ 해결하려면

는, 여기에 간단한 문서 구조입니다 XML을 처리하기 위해 xaxd를 사용하여 jaxb 객체 생성하기 Eclipse에서 사용하는 IDE에 따라 xmlroot를 마우스 오른쪽 버튼으로 클릭하고 generate jaxb ,,,

+0

문제는 아직 XSD가 없다는 것입니다. (Java를 사용하지도 않습니다.) – mgw854