<xs:element minOccurs="0" name="Name" nillable="false">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="25"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
对于上面的元素,当请求元素为空值时,会验证失败吗?
我没有收到以下 xml 请求的错误 -
<con:name></con:name> - no error.
请告诉我,如果类型为字符串,minoccurrs 为零,nillable 为 false,则 xml 验证将响应什么。
提前致谢。
此声明没有理由说明空元素无法通过验证。
minOccurs="0"
表示该元素可以省略:它对元素存在时的验证方式没有影响。
nillable="false"
表示你不能拥有xsi:nil="true"
属性。但您没有此属性,因此这不会使其无效。您不需要将其设为 nillable
,因为元素的类型无论如何都允许空内容,因此无需将其标记为 nil
(除非您想区分 ""
的值与 的值) "unknown"
。
我认为该 xml 片段的验证不会失败。 首先, minOccurs 指的是序列中元素的最小数量,因此它适用于 con:name 的父元素(如果有),但不适用于元素本身。
出现指示器用于定义元素出现的频率。
'nillable' 指的是 nil 属性:nil="true" 用于将 null 值分配给元素。
更多详细信息请访问 http://www.dimuthu.org/blog/2008/08/18/xml-schema-nillabletrue-vs-minoccurrs0/comment-page-1/
nillable
它作用于限制其值的元素内部的数据,
nillable="false"
这意味着您不能将元素值设置为null
。一个元素,其中 nillable="true"
可以在其中具有 null
值,并且它将具有属性 xsi:nil="true"
,将其标记为 null
。
minOccurs
它是对元素的规则/限制,告诉元素可以在以下 xml 中重复多少次,
minOccurs="0"
告诉元素在 xml
中不是必需的,无论有没有它都是有效的 xml
根据架构。
另一方面,值
minOccurs="1"
表明该元素必须至少出现在 Xml
中一次,否则 XSD Validation
将失败。
现在对于答案否,除非您添加
<xs:minLength value="1" />
,否则验证不会失败,因为数据类型是xs:string
,您正在考虑的null
是empty
字符串,通过输入<xs:minLength value="1" />
您是告诉字符串必须有 1 个字符并且不能为空。
<xs:element minOccurs="0" name="Name" nillable="false">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="25"/>
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
因为这不是
null
而是空的,所以为什么我们用 null
检查字符串是否为 c#
或 String.IsNullOrEmpty(String)
中的空,并且它们之间的区别可能无法理解,如下所示。