2009-06-22 6 views
0

XML을 통해 전송되는 개체의 계층 구조가 있습니다. 계층 구조 규칙은 어떤 요소에 어떤 자식 요소가 포함될 수 있는지를 설명함으로써 XML 스키마에서 쉽게 표현할 수 있습니다. XML 데이터의 simplifed 예 (실제 객체 데이터 속성에 포함하고 간결함을 위해 생략) 될 것이다 :XML 스키마의 여러 ​​수준에 걸친 규칙을 "포함 할 수도 있고 포함하지 않을 수도 있습니다"표현할 수 있습니까?

<root> 
    <channel> 
    <router> 
     <message /> 
     <message /> 
     <message /> 
    </router> 
    <router> 
     <message /> 
     <message /> 
    </router> 
    </channel> 
    <channel></channel> 
</root> 

는 지금은, "폴더"를 소개하는 난을 싶습니다. 이자형. 더 쉬운 사용을 위해 아이들의 긴 목록을 구조화하는 역할을하는 노드. 일반 <folder> 요소를 만들면 자체적 인 규칙이 적용되지 않지만 트리가 아닌 다음 비 폴더 요소에서 상속됩니다.

XSD에서 표현할 수없는 것처럼 보입니까?

나는 각각의 가능한 규칙 (못생긴)에 대해 특정 폴더 요소를 가지거나, XSD에서 규칙을 무시하고 XML에서 코드 계층 구조와 중개 노드를 분리하는 등의 대안을 생각할 수 있습니다. (확실하지 않은 방법). 나는 당신의 의견도 감사 할 것입니다.

답변

1

XSD에서 원하는 것을 표현할 수 없습니다. 하지만 단일 레벨 폴더 나 더 일반적으로는 n 레벨 폴더를 소개 할 수는 있지만 임의의 재귀 적 폴더는 도입 할 수 없습니다 (글로벌 요소 여야하며 이후에 포함 된 내용을 알 수 없으므로).

이고, 상기 제한은 Schematron; 차례대로 XSD appinfo 요소에 schematron 제약 조건을 포함시킬 수 있습니다. 유효성 검사기는 XSD에 포함 된 Schematron을 지원할 수도 있고 지원하지 않을 수도 있습니다.

관련 문제