我使用 XSD 来验证传入的 XML 元素。 XSD文件
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.rg/2001/XMLSchema"
xmlns:tns="http://xxxy/ervices/V0"
targetNamespace="http://xxxy/ervices/V" elementFormDefault="qualified"
attributeFormDefault="unqualified" >
<xs:complexType name="FailType">
<xs:sequence>
<xs:element name="ConDt" type="xs:date" minOccurs="0" maxOccurs="1" nillable="true"/>
<xs:element name="PreEn" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
我的 XML 文件
<Pat xmlns="http://xxxy/ervices/V">
<ConDt></ConDt>
</Pat>
我收到的元素无效 - 根据其数据类型“http://org/2001/XMLSchema:date,值“”无效' - 字符串 '' 不是有效的日期值。
最佳答案
指定 nillable="true"允许您的实例包含
<ConDt xsi:nil="true"></ConDt>
但它不允许你写
<ConDt></ConDt>
(请不要问我他们在想什么......)
如果你想允许
<ConDt></ConDt>
那么两种可能的方法是
将其定义为允许 xs:date 或 零长度字符串,或
(我的首选方法)将其定义为列表类型:具有 maxLength="1"的 xs:date 值列表。
关于asp.net - 如何在 XSD 中声明可选日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33766869/