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"
在没有其他元素的情况下不起作用)。
非常感谢
首先,正确的属性名称是"nillable"。
其次,将元素指定为nillable允许您拥有一个空实例,前提是该实例包含属性xsi:nil="true"。我怀疑您的元素实例中缺少此属性。
就我个人而言,我从不使用xsi:nil。如果你想允许一个元素包含一个小数,或者什么都不包含,有两种方法:
(a) 将类型定义为具有两个成员的并集类型,一个是xs:decimal,另一个是固定值为"的字符串(空字符串)
(b) 将类型定义为项类型xs:decimal的列表类型,其minLength=0,maxLength=1。