2014-04-15 5 views
0

나는 XML 맞아야 XSD 유효성을 검사하려고하지만 오류XML에 대해 XSD의 유효성을 검사 할 때 오류가 발생합니까?

요소 '표'불완전한 내용이납니다. 예상되는 요소 목록 : 'IP21TAG'.

XML :

<NewDataSet> 
<Table> 
    <SITE>VMD</SITE> 
    <TANK>65-12-392</TANK> 
    <SERVICE>HZLPG</SERVICE> 
</Table> 
<Table> 
    <SITE>VMD</SITE> 
    <TANK>65-12-392</TANK> 
    <SERVICE>HZLPG</SERVICE> 
    <IP21TAG>BC-BBH-OS-4LI21392</IP21TAG> 
</Table> 
</NewDataSet> 

XSD :

<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="NewDataSet"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="Table"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="SITE" type="xs:string" /> 
<xs:element name="PLANT" type="xs:string" /> 
<xs:element name="TANK" type="xs:string" /> 
<xs:element name="SERVICE" type="xs:string" /> 
<xs:element name="IP21TAG" type="xs:string" /> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

사람이 어떻게이 문제를 해결하는 데 도움이 수 있습니까?

미리 감사드립니다.

답변

0

스키마의 <xs:element> 노드에서 minOccurs을 생략하면 그 기본값은 1입니다 (specifications 참조). 그런 노드를 지정하지 않으면 해당 스키마에 대해 XML의 유효성이 검사되지 않습니다.

해당 노드가 선택 사항이라면 단순히이를 반영하도록 XSD를 변경하십시오. 여기 변경 단지 IP21TAGPLANT (그들은 당신의 예를 들어 XML 모두 내에없는 그러나 다른 사람은 선택하는 경우도 당신은 적절하게 변경해야하기 때문에) :

<xs:element name="IP21TAG" type="xs:string" minOccurs="0"/> 
<xs:element name="PLANT" type="xs:string" minOccurs="0" /> 

을 그 요소는 다음입니다 잘못을 선택하지 않은 경우 예를 들어 누락 된 노드 대신 빈 문자열을 제공 할 수 있습니다.

<NewDataSet> 
<Table> 
    <SITE>VMD</SITE> 
    <TANK>65-12-392</TANK> 
    <SERVICE>HZLPG</SERVICE> 
    <IP21TAG></IP21TAG> 
    <PLANT></PLANT> 
</Table> 
</NewDataSet> 
관련 문제