[英]XSD Element Not Null or Empty Constraint when other Element has a specific value
[英]XSD Element Not Null or Empty Constraint For Xml?
这是我的示例XML代码:
<bestContact>
<firstName><![CDATA[12345]]></firstName>
<lastName />
</bestContact>
我在用:
<xs:element name="lastName" type="xs:string" minOccurs="1" nillable="false"/>
XSD应该将lastName
验证为非null或空。
尝试
<xs:element name="lastName" minOccurs="1" nillable="false">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xsd:element name="lastName" type="NonEmptyString" nillable="false"/>
<xsd:simpleType name="NonEmptyString">
<xsd:restriction base="xs:string">
<xsd:minLength value="1" />
<xsd:pattern value=".*[^\s].*" />
</xsd:restriction>
</xsd:simpleType>
这是恕我直言更好的模式:
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:pattern value="^(?!\s*$).+" />
</xs:restriction>
</xs:simpleType>
要么
<xs:simpleType name="NonEmptyStringWithoutSpace">
<xs:restriction base="xs:string">
<xs:pattern value="\S+"/>
</xs:restriction>
</xs:simpleType>
@Kamal在这里给了你基本正确的答案。 这就是为什么 - nillable
似乎总是会导致问题。 实际上,您可以将nillable
视为允许此元素的xsi:nil
属性 。 XML Schema规范将nillable描述为带外信号 - 它基本上用于向数据库指示NULL 。
你想要的是一个必须至少有一个字符的元素,由@Kamal给出
这是我最喜欢的解决方案。
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:pattern value="[\s\S]*[^ ][\s\S]*"/>
</xs:restriction>
</xs:simpleType>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.