xml - XSD 属性 NILLABLE 不起作用

标签 xml xsd xsd-validation

我正在努力获取一个 xml 文件以根据 XSD 架构进行验证,但我在验证时遇到了问题。每次我验证时都会收到错误提示

“模式有效性错误:元素‘{http://services.website.com/ProgramResponse}Population’:‘’不是原子类型‘xs:double’的有效值。”

我认为发生此错误是因为我在该字段中有一个空字符,显示如下:
/HarvPop>

因此,为了解决这个问题,我尝试对元素使用 nillable="true"属性,这样它们就可以为空,但仍显示为空。这似乎是唯一的解决方案,但它根本不起作用。我仍然收到错误。

我目前正在使用 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>

最佳答案

< 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>

即您必须明确声明该值为空。

另一种方法是声明 minoccurs = 0,以允许缺失值。

关于xml - XSD 属性 NILLABLE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6831428/

相关文章:

c - Oracle 上的空(字符串)元素的 XML 验证失败

xml - 有没有办法用垂直对齐方式漂亮地打印 XML?

c# - Xml 文档不应该作为 String 传递,如何激励?

xml - 是否可以在内部使用 XML 模式,就像 DTD 一样?

iphone - iOS:使用XSD进行XML验证

xml - 在 xsd 文件(xml 架构)的元素或属性名称中转义冒号 ':'

python - 如何迭代解析 zipfile 对象

java - 无法读取 spring.security 的架构文档

java - 配置一个 XSD 由多个 xs :schemas? 组成

java - 用于 XML 验证的 XSD 创建