[英]xml validation against XSD: Invalid content was found starting with element xxx
[英]XML Validation: Invalid content was found starting with element
我正在面對這個問題,無法解決。 我有這個xsd OFX.xsd 。 我要使用此架構驗證的xml如下
<?xml version="1.0"?>
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>20120716233626.570[-7:PDT]</DTSERVER>
<LANGUAGE>ENG</LANGUAGE>
<FI>
<ORG>Symitar</ORG>
<FID>01182</FID>
</FI>
<INTU.BID>01182</INTU.BID>
<INTU.USERID>66983</INTU.USERID>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>0</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<CURDEF>USD</CURDEF>
<BANKACCTFROM>
<BANKID>
</BANKID>
<ACCTID>66983-S80</ACCTID>
<ACCTTYPE>CHECKING</ACCTTYPE>
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20120501</DTSTART>
<DTEND>20120716</DTEND>
<STMTTRN>
<TRNTYPE>FEE</TRNTYPE>
<DTPOSTED>20120713135400</DTPOSTED>
<TRNAMT>-25.00</TRNAMT>
<FITID>30403620120713WF</FITID>
<NAME>Account Transaction</NAME>
<MEMO>Withdrawal Fee</MEMO>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>-254.64</BALAMT>
<DTASOF>20120716233626</DTASOF>
</LEDGERBAL>
<AVAILBAL>
<BALAMT>-254.64</BALAMT>
<DTASOF>20120716233626</DTASOF>
</AVAILBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>
當我嘗試在線或使用Java代碼驗證此xml時。 我收到以下錯誤。
cvc-complex-type.2.4.d: Invalid content was found starting with element 'SEVERITY'
cvc-complex-type.2.4.d: Invalid content was found starting with element 'DTSERVER'
cvc-complex-type.2.4.d: Invalid content was found starting with element 'FID'
and so on....
請告訴我xsd中的錯誤是什么。
您可以選擇幾種類型
<xs:complexType name="SONRS">
<xs:choice>
<xs:element name="STATUS" type="STATUS" minOccurs="0"
maxOccurs="1" />
<xs:element name="DTSERVER" type="xs:string" minOccurs="0"
maxOccurs="1" />
<xs:element name="LANGUAGE" type="xs:string" minOccurs="0"
maxOccurs="1" />
<xs:element name="DTPROFUP" type="xs:string" minOccurs="1"
maxOccurs="1" />
<xs:element name="DTACCTUP" type="xs:string" minOccurs="0"
maxOccurs="1" />
<xs:element name="FI" type="FI" minOccurs="0" maxOccurs="1" />
</xs:choice>
</xs:complexType>
STATUS也是如此。 因此,您應僅在SONRS的xml中包含元素之一,並且如果包含STATUS,則具有:
<xs:complexType name="STATUS">
<xs:choice>
<xs:element name="CODE" type="xs:integer" minOccurs="0"
maxOccurs="1" />
<xs:element name="SEVERITY" type="xs:string" minOccurs="0"
maxOccurs="1" />
<xs:element name="MESSAGE" type="xs:string" minOccurs="0"
maxOccurs="1" />
</xs:choice>
</xs:complexType>
因此您應該輸入CODE或SEVERITY或MESSAGE。
正如我在評論中提到的。 問題出在模式上,它定義了元素類型,但是在模式中沒有提到元素,因此解析器拋出無效內容錯誤。
您已經聲明了所有類似<xs:choice>
<xs:complexType name="STATUS">
<xs:choice>
<xs:element name="CODE" type="xs:integer" minOccurs="0" maxOccurs="1"/>
<xs:element name="SEVERITY" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="MESSAGE" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
在<xs:sequence>
或<xs:all>
更改
<xs:complexType name="STATUS">
<xs:sequence>
<xs:element name="CODE" type="xs:integer" minOccurs="0" maxOccurs="1"/>
<xs:element name="SEVERITY" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="MESSAGE" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
此處的選擇參考 XML Schema選擇元素僅允許聲明中包含的元素之一出現在包含元素中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.