这是我的示例XML代码:
<bestContact>
<firstName><![CDATA[12345]]></firstName>
<lastName />
</bestContact>
我正在使用:
<xs:element name="lastName" type="xs:string" minOccurs="1" nillable="false"/>
XSD应该将lastName
验证为非空或空。
答案 0 :(得分:51)
尝试
<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>
答案 1 :(得分:9)
nillable
似乎总是会导致问题。实际上,您可以将nillable
视为允许此元素的xsi:nil
属性。 XML Schema spec将nillable描述为带外信号 - 它基本上用于向数据库指示 NULL 。
你想要的是一个元素,它必须至少有一个字符长,由@Kamal
给出答案 2 :(得分:9)
这是恕我直言的一个更好的模式:
<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>
答案 3 :(得分:0)
这是我最喜欢的解决方案。
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:pattern value="[\s\S]*[^ ][\s\S]*"/>
</xs:restriction>
</xs:simpleType>`