我是xml的新手,并尝试编写一个xsd,其中包含至少一天且没有重复的日子。
例如,我想在xml中以以下形式定义日期:
<!-- working days -->
<days>
monday
tuesday
wednesday
</days>
该元素不能为空,不能重复或写错日期。
我编写了以下代码来验证xml:
<xs:simpleType name="day">
<xs:restriction base="xs:string">
<xs:enumeration value="sunday"/>
<xs:enumeration value="monday"/>
<xs:enumeration value="tuesday"/>
<xs:enumeration value="wednesday"/>
<xs:enumeration value="thirsday"/>
<xs:enumeration value="friday"/>
<xs:enumeration value="saturday"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="dayList">
<xs:list itemType="day"/>
<xs:minLength value="1"/>
<xs:maxLength value="7"/>
</xs:simpleType>
<xs:element name="days" type="dayList"/>
上面定义的问题是仍然可以重复。 有办法解决吗?
谢谢。
答案 0 :(得分:1)
在XSD 1.0中,无法将列表中的项目限制为唯一。
在XSD 1.1中,可以通过在dayList中添加一个xs:assertion
构面来实现:
test="count($value) eq count(distinct-values($value))"