我在使用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以启用空/空值?
(nillable ="true"
在其他元素情况下不起作用。)
非常感谢
答案 0 :(得分:0)
首先,正确的属性名称是“nillable”。
其次,将元素指定为nillable允许您拥有一个空实例,前提是该实例包含属性xsi:nil =“true”。我怀疑你的元素实例中缺少这个属性。
就个人而言,我从不使用xsi:nil。如果要允许元素包含小数或不包含任何内容,有两种方法可以执行此操作:
(a)将类型定义为具有两个成员的联合类型,一个是xs:decimal,另一个是固定值为“”的字符串(空字符串)
(b)将类型定义为列表类型,项目类型为xs:decimal,minLength = 0,maxLength = 1。