【发布时间】:2020-07-08 17:27:30
【问题描述】:
验证规则:当 EndDate 不为 null/空时,EndDate 应该大于 StartDate。 我在最后一次输入雇主时遇到错误,而我预计不会。我做错了吗?
XML
<Employers>
<Employer>
<StartDate>2020-01-01</StartDate>
<EndDate></EndDate>
</Employer>
<Employer>
<StartDate>2020-01-01</StartDate>
<EndDate>2021-01-01</EndDate>
</Employer>
</Employers>
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Employers">
<xs:complexType>
<xs:sequence>
<xs:element name="Employer" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="StartDate" type="xs:date"></xs:element>
<xs:element name="EndDate" minOccurs="0">
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0" />
<xs:maxLength value="0" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:date">
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:assert test="if (./EndDate eq '') then true() else ./EndDate gt ./StartDate" xmlns:saxon="http://saxon.sf.net/" saxon:message="Error: errors"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
【问题讨论】: