2010-04-09 5 views
0

XML을 유효하게 할 수있는 XSD 문서를 만들려고합니다. 는 XML 문서를 책을 설명하기 위해 설계된 것으로, 예를 들어, 가정 해 봅시다 :XSD를 사용하여 XML 유효성 검사에 관한 질문

<?xml version="1.0" encoding="UTF-8"?> 
<book> 
    <comment>Bob's very first book</comment> 
    <name>Bob's book</name> 
    <author>Bob</author> 
    <year>2009</year> 
    <publisher> 
     <name>Dan's book publishing enterprise</name> 
     <address>123 Fake St.</address> 
    </publisher> 
</book> 

도 난 단지 정말 약 3 요소 걱정 말의하자 - 이름, 저자와 연도를. 그것들은 필수적이며 스키마에 대해 검증되어야합니다. 나는 수신 한 XML 파일을 제어하지 않기 때문에 요소의 순서는 중요하지 않으며 모든 추가 요소는 XSD 유효성 검사를 선택하지 않고 통과하도록 허용됩니다.

이러한 요구 사항에 따라이 종류의 유효성 검사를 수행 할 수있는 XSD 스키마를 만들려고했지만 올바른 결과를 얻을 수 없습니다. 임의의 순서로 요소를 정의 할 수있는 제약 조건은 sequence 표시기를 제외합니다. 내가 남은 것은 all 또는 choice 표시기입니다. all이 확실한 선택이지만, any 요소를 사용할 수 없습니다.

또한이 사용하는 아이디어 장난 삼아 생각해 :

<include schemaLocation="year.xsd"/> 
<include schemaLocation="name.xsd"/> 
<include schemaLocation="author.xsd"/> 
.... 
    <sequence> 
     <any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
    </sequence> 

XML 파일에서 발견 된 경우, 이름 년 저자가 검증 될 것이지만,이 필수 요소를 확인하지 않습니다 - 나는 것을 지정할 수 없습니다 년, 저자와 도서의 이름은 유효성 검사를 통과해야합니다.

아무도 순서가 지정되지 않은 필수 요소의 유효성을 검사하고 유효성 검사를 통과하는 XML 파일의 정의되지 않은 요소를 허용하는 XSD 문서를 작성하는 방법에 대한 힌트를 제공 할 수 있습니까?

감사합니다.

답변

1

저는 XML 스키마를 사용하여이 작업을 수행 할 수 없다고 확신합니다. 제안 :

  • XSLT를 사용하여 유효성을 검사 할 문서를 준비하십시오.
  • Schematron을 사용하십시오.
+0

당신이 맞을 것 같습니다 ... – Sevas

관련 문제