xsd没有';不能使用可为null的值

本文关键字:null 的值 不能 没有 xsd | 更新日期: 2023-09-27 18:26:24

我在C#win应用程序中使用xsd验证XML文件时遇到问题。

我已经用nillable="true"自定义了我的元素xsd,但不起作用,并给了我错误:

元素"FLG_SUPERVISOR"无效。值"对无效数据类型'http://www.w3.org/2001/XMLSchema:decimal’-字符串''"''"不是有效的十进制值

我的xsd是这样的:

 <?xml version="1.0" encoding="Windows-1252"?>
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="DocumentElement">
  <xs:complexType>
   <xs:sequence>
    <xs:element maxOccurs="unbounded" name="UserSettings" >
   <xs:complexType>
  <xs:sequence>
 <xs:element name="ID_UTENTE" minOccurs="1" maxOccurs="1" type="xs:decimal" />
 <xs:element name="ID_GRUPPO" minOccurs="1" maxOccurs="1" type="xs:decimal" />
 <xs:element name="NOME_UTENTE" minOccurs="1" maxOccurs="1" type="xs:string" />
 <xs:element name="PASSWORD_UTENTE" minOccurs="1" maxOccurs="1" type="xs:string" />
 <xs:element name="FLG_ABILITATO" nillable="true" minOccurs="1" maxOccurs="1" />
 <xs:element name="DES_UTENTE" type="xs:string" />
 <xs:element name="ACRONIMO" type="xs:string" />
 <xs:element name="FLG_SUPERVISOR" nillable="true" minOccurs="0" maxOccurs="1"
 type="xs:decimal" />

我已经设置了nillable="true",但如果我在xml中的FLG_SUPERVISORE值为空(null),则会出现以下错误:如何更改xsd以启用blank/null值?(nillable ="true"在没有其他元素的情况下不起作用)。

非常感谢

xsd没有';不能使用可为null的值

首先,正确的属性名称是"nillable"。

其次,将元素指定为nillable允许您拥有一个空实例,前提是该实例包含属性xsi:nil="true"。我怀疑您的元素实例中缺少此属性。

就我个人而言,我从不使用xsi:nil。如果你想允许一个元素包含一个小数,或者什么都不包含,有两种方法:

(a) 将类型定义为具有两个成员的并集类型,一个是xs:decimal,另一个是固定值为"的字符串(空字符串)

(b) 将类型定义为项类型xs:decimal的列表类型,其minLength=0,maxLength=1。