簡體   English   中英

XML驗證:發現無效的內容(從元素開始)

[英]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選擇元素僅允許聲明中包含的元素之一出現在包含元素中。

XSD指標參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM