9

XSDスキーマに対して検証するためのxmlファイルの取得に取り組んでいますが、検証に問題があります。検証するたびに、次のようなエラーが発生します

「スキーマ妥当性エラー:要素'{http://services.website.com/ProgramResponse} Population':''はアトミックタイプ'xs:double'の有効な値ではありません。」

このエラーは、そのフィールドにnull文字があり、次のように表示されているために発生すると思います。
<HarvPop> </ HarvPop>

そこで、これを解決するために、要素にnillable = "true"属性を使用して、要素をnullにできるようにしましたが、それでも空として表示されます。これが唯一の解決策のようですが、まったく機能していません。まだエラーが発生します。

私は現在、検証にXMLMateを使用しており、いくつかのオンライン検証者に対してもXMLMateを再確認しました。エラーは引き続き発生します。どんな提案も素晴らしいでしょう。

<?xml version="1.0" encoding="UTF-8"?>

<xsd:element name="Reports" type="tns:ReportsType"/>

<xsd:complexType name="ReportsType">
    <xsd:sequence>
        <xsd:element name="Report" type="tns:ReportType" maxOccurs="unbounded" minOccurs="0"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ReportType">
    <xsd:sequence>
        <xsd:element name="Id" nillable="true"/>
        <xsd:element name="Brand" type="xsd:string"/>
        <xsd:element name="Address" type="xsd:string"/>
        <xsd:element name="City" type="xsd:string"/>
        <xsd:element name="State" type="xsd:string"/>
        <xsd:element name="ZipCode" type="xsd:string"/>
        <xsd:element name="Entry" type="tns:EntryType" maxOccurs="unbounded" minOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="EntryType">
    <xsd:sequence>
        <xsd:element name="RM" nillable="true" type="xsd:double"/>
        <xsd:element name="Pop" nillable="true" type="xsd:double"/>
        <xsd:element name="Wt" nillable="true" type="xsd:double"/>
        <xsd:element name="EntryId" type="xsd:int"/>
    </xsd:sequence>
</xsd:complexType>

4

2 に答える 2

11

のようなノード< HarvPop>< /HarvPop>は、値がそこにあり、その値が空の文字列であることを示しています。

このw3.orgページの情報に基づく:http ://www.w3.org/TR/xmlschema-0/#Nils

nillable属性は次のように使用されます。

意味: <xsd:element name="shipDate" type="xsd:date" nillable="true"/>

使用法: <shipDate xsi:nil="true"></shipDate>

つまり、値がnullであることを具体的に示す必要があります。

これを行うもう1つの方法は、minoccurs = 0と記述して、値が欠落することを許可することです。

于 2011-07-26T14:23:46.883 に答える
4

最小限のコードでも問題が解決することがわかった1つの方法は、default="0"属性をXSDに追加することでした。これにより、nilをデフォルトの数値にすることで、nilを処理せずにdoubleとして検証できます。

強く型付けされたXSDを使用したXMLドキュメントの逆シリアル化中にエラーが発生しました

于 2011-07-29T13:28:41.563 に答える