2016-07-05 6 views
3

XSD와 잘못된 XML이 있습니다.시퀀스 복합 유형에서 필수 요소가 누락 된 경우 XSD 유효성 검사 오류가 발생했습니다.

XSD는 시퀀스의 요소가있는 복합 유형이 있습니다. 모든 요소는 이며 필수는입니다. XSD는 타사에서 유지 관리하며 을 바꿀 수 없습니다.

잘못된 XML에 요소 하나가 누락되었습니다.

C#을 사용하여 XSD에 대해 XML의 유효성을 검사하면 "XXX '요소가 필요합니다"라는 예상 오류가 발생합니다. 그러나 실제로, 그것은 또한 "그 요소가 무효 한 자식 요소를 가지고있다"고 말해줍니다. 나는 무엇을해야하는지 잘 모르겠습니다.

요소 '클래스는'잘못된 있습니다

<!-- Incorrect XML --> 
<class> 
    <el1>222</el1> 
    <el3>222</el3> 
</class> 

<!-- XSD --> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="class"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element type="xs:short" name="el1" /> 
     <xs:element type="xs:short" name="el2" /> 
     <xs:element type="xs:short" name="el3"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

진짜하지만 예기치 않은 유효성 검사 오류

아래 같은 있습니다 :

내가 당신에게 예를 보여 줄게, 당신이 내 질문을 이해하는 데 도움이 자식 요소 'el3'. 예상 가능한 요소 목록 : 'el2' 예상 가능한 요소의

목록 :

예상되는 오류는 'EL2'.

+0

필자는 필연적으로이 오류를 보지 않습니다. 오류 출력은 ''요소가 실제로 ''요소를 대신했을 때 나타났습니다. 그리고 검증의 관점에서 볼 때, 예상하지 못한 오류 메시지만으로도 실패 할 수 있습니다. –

+0

감사합니다. Tim, 네가 맞다고 생각해. – Charlie

답변

1

당신은이 메시지를 오해하고 있습니다. 이 아니며 el3class의 자녀 일 수는 없다고 말하는이 아닙니다. el3은 구문 분석하는 과정에서 오류가 발생한 시점에서 유효하지 않습니다. 언급 한 바와 같이 즉

,

요소 '클래스는'잘못된 자식 요소 'EL3'를 가지고있다.

이 정확합니다. 한편

, 메시지를 해석하는 방법,

요소 '클래스'자식 요소 'EL3'를 가질 수 없어.

실제로 잘못된 것입니다. 그러나 실제로는 그렇게 말하지 않기 때문에 진단 메시지는 그대로입니다.

+0

감사합니다. @kjhughes. 그러나 나는 당신이 말한대로 그 메시지를 해석하지 않았습니다. 메시지 '엘리먼트'클래스 '에 유효하지 않은 하위 엘리먼트'el3 '이 있음을 압니다._가 맞다면 희망하는 요소 목록이 예상됩니다. 'el2'._ – Charlie

+0

아마 * expected *가 아닌 * expected *를 의미했을 것입니다. 귀하의 질문에 대한 대답은 그렇습니다. 기본 오류 처리기 동작을 재정의하려는 경우 원하는 메시지를 쓸 수 있습니다. 솔직히, 나는 여기에 노력할만한 가치가있는 것을 보지 못했다. – kjhughes

+0

예, 제 동료가 그대로 떠날 것을 설득했습니다. BTW, 당신이 언급 한 _ "원하는 메시지를 쓸 수 있습니다."_ 내가 볼 수있는 힌트 나 링크를 줄 수 있다면 좋을 것입니다. – Charlie