考虑我的xml是这样的。它包含一个root标签employee和2个子标签都是字符串类型
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
和相应的xsd一样
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string" minOccurs="1"/>
<xs:element name="lastname" type="xs:string"minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我想验证第一个名字和姓氏应该是字符串,它应该出现。当我给出type =“xs:string”和minOccurs =“1” 并给出了这样的名字标签(ie.no值b / w标签)它没有显示错误......但是如果标签没有值,我想显示错误。我该怎么办? 你能尽快给我一个解决方案吗?
答案 0 :(得分:2)
我希望我能理解你,你的问题是,
<employee>
<firstname></firstname>
<lastname>Smith</lastname>
</employee>
根据XSD有效。
首先,您必须意识到在许多语言中,空字符串和空值不相同,例如在Java中:
String s1 = ""; // empty string, length is 0
String s2 = null; // null value, has no length...
对于其中null和空字符串相同的Oracle PL / SQL,情况并非如此。
所以我猜这个有效的XML(根据你的XSD)也不适合你:
<employee>
<firstname xsi:nil="true" />
<lastname xsi:nil="true" />
</employee>
如果您具有firstname / lastname必须满足的附加条件,则必须创建自己的类型:
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<!-- changed -->
<xs:element name="firstname" type="e:firstnameType" />
<!-- not changed -->
<xs:element name="lastname" type="xs:string" minOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="firstnameType">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
对于其他人,我正在添加完整的XSD和XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:e="employee"
targetNamespace="employee"
elementFormDefault="qualified">
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="e:firstnameType" />
<xs:element name="lastname" type="xs:string" minOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="firstnameType">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<employee xmlns="employee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<firstname>Martin</firstname>
<lastname xsi:nil="true"></lastname>
</employee>