2012-06-25 5 views
0

XmlDocument의 조각을 해당 조각만을 나타내는 XSD에 대해 유효성을 검사하려고합니다. 예를 들어 :스키마에 XSD 조각을 추가하려면 어떻게합니까?

<!-- Validate entire message against message.xsd --> 
<?xml version="1.0" encoding="utf-8" ?> 
<Message> 
    <Header> 
     ... 
    </Header> 
    <Body> 
     <!-- Validate this against body.xsd --> 
     ... 
    </Body> 
</Message> 

전체 메시지는 개발자가 제공 한 message.xsd 스키마에 대해 검증한다. <Body> 요소의 내용은 클라이언트가 제공 한 body.xsd 스키마에 대해 유효성이 검사됩니다.

body.xsd 스키마는 <Message>, <Header> 또는 <Body> 요소의 아무것도 모른다. <Body> 요소 내에 포함되어야하는 내용 만 정의합니다.

XML 스키마 조각에 대해 XML 조각의 유효성을 검사하는 방법을 알아낼 수 없습니다. 모든 것은 XML 스키마 조각이 조상 요소에 대한 모든 것을 알아야한다고 제안하는 것처럼 보인다. 몇 가지 경로를 염두에두고 있지만 구현 방법을 모르겠습니다.

  1. 는 프로그래밍 방식 message.xsd의 적절한 노드로 body.xsd 주입.
  2. XmlDocument에서 적절한 XmlElement을 추출하고이 노드를 기반으로 새로운 XmlDocument을 만듭니다.
  3. 아직 이해할 수없는 네임 스페이스와 관련이 있습니다.

이 문제의 해결책은 무엇입니까?

+0

당신이 다른에 하나의 스키마를 가져 봤어 쿼리를 사용하여 (예 : 색슨-EE에 대한) 스키마 인식 XQuery를 프로세서를 사용하여 유효성 검사를 호출하는 것입니다? http://www.w3.org/2001/XMLSchema 네임 스페이스의 ** import ** 태그를 참조하십시오. – toniedzwiedz

+0

''요소를 사용하는 방법을 생각합니다. 'type = "my : body"'요소를 선언하고 클라이언트에게 ** body.xsd **에 지정하도록 알립니다. 그게 맞습니까? –

답변

0

스키마 유효성 검사를위한 기본 .NET API에 대해서는 잘 모릅니다 만 유효성 검사 API가 루트가 아닌 다른 요소의 유효성을 검사 할만큼 충분히 유연하지 않다는 사실을 알기는 매우 일반적입니다. 그것을 할 수있는 한 가지 방법은

import schema ... at "body.xsd"; 
validate strict {/Message/Header/Body} 
관련 문제