【问题标题】:xsd doesn't work with nullable valuexsd 不适用于可为空的值
【发布时间】:2018-02-02 17:06:03
【问题描述】:

在 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" 在没有其他元素的情况下不起作用)。

非常感谢

【问题讨论】:

  • 它必须是 nullable="true" 而不是 nillable="true"。
  • 如果我写可空的视觉工作室给我错误:在这种情况下不支持可空属性

标签: c# xml xsd


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 你可以为我的示例的联合发布正确的代码 所以我改变了我的 xsd ?提前致谢
  • 对不起,如果你在街上拦住我问路,我准备给你指个正确的方向,但我不准备牵着你的手和你一起走。这部分是因为我没有时间,部分是因为我认为你自己做会学到更多。
猜你喜欢
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多