2011-03-04 4 views
1

XSD 수준에서 문서의 다른 요소의 존재 여부를 기준으로 요소 요구 사항을 정의 할 수 있습니까?XSD 및 요소 존재 요구 사항 또는 기타 옵션

예를 들어 <id /> 요소가있을 때마다 <firstname /> 요소를 제공해야합니다. 그렇지 않으면 첫 번째 이름은 선택 사항입니다.

XSD 수준에서이를 적용 할 수없는 경우 두 요소를 선택적으로 만들고 다른 수준의 검사를 통해 요구 사항을 적용해야합니까?

옵션을 환영합니다.

+1

나는이가 (pmartin 말한 것처럼) XSD와 함께 할 수 있다고 생각하지 않습니다,하지만이 DTD 수행 할 수 있습니다. 관심이 있다면 알려주고 예제를 게시하겠습니다. –

+0

@DevNull : 물론, 질문 제목에 옵션을 묻는 질문이 있기 때문에 DTD의 예를 게시하고 그 정보는 향후 방문자에게 유용합니다. 제목을 보완하기 위해 "옵션 환영"질문 문안을 개정했습니다. 감사. –

답변

1

XSD 수준에서는 적용 할 수 없습니다.

두 요소 모두 선택 사항으로 만들고 응용 프로그램 아키텍처에서 요구 사항을 다른 수준으로 적용하면 나에게 좋은 옵션이라고 생각됩니다.

1

다음은 DTD에서 수행되는 예제입니다. (참고 :. 테스트 인스턴스의 Xerces를 사용하는 산소 XML 편집기를()를 사용하여 검증되었다)

DTD (test.dtd) 여기

<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT user ((firstname?|(firstname,id)),lastname)> <!ELEMENT firstname (#PCDATA)> <!ELEMENT lastname (#PCDATA)> <!ELEMENT id (#PCDATA)> 

이 (유효 및 무효) 몇 가지 예제 XML 인스턴스입니다 :

유효한

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE user SYSTEM "test.dtd"> 
<user> 
    <firstname/> 
    <id/> 
    <lastname/> 
</user> 

잘못된

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE user SYSTEM "test.dtd"> 
<user> 
    <id/> 
    <lastname/> 
</user> 

유효한

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE user SYSTEM "test.dtd"> 
<user> 
    <firstname/> 
    <lastname/> 
</user>