我正在制作 XSD 模式来验证我从 java 生成的 XML 文件。它与天气有关,我想让value
里面变得date
独一无二。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="forecast">
<xs:complexType>
<xs:sequence>
<xs:element name="city" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="weather">
<xs:complexType>
<xs:sequence>
<xs:element name="date" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="maxtemp">
<xs:simpleType>
<xs:restriction base="xs:int"/>
</xs:simpleType>
</xs:element>
<xs:element name="mintemp" type="xs:int"/>
<xs:element name="cloudcover">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="humidity">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="precipitation" type="xs:double"/>
<xs:element name="windspeed">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="description">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Heavy rain"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="value" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d\d-\d\d-\d\d"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:unique name="dateuq">
<xs:selector xpath="date"/>
<xs:field xpath="@value"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="zip" use="required">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:totalDigits value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这是测试 XML 文件:
<forecast>
<city name="Podgorica" zip="81000">
<weather>
<date value="01-01-14">
<maxtemp>10</maxtemp>
<mintemp>5</mintemp>
<cloudcover>40</cloudcover>
<humidity>20</humidity>
<precipitation>10.2</precipitation>
<windspeed>3</windspeed>
<description>Heavy rain</description>
</date>
<date value="01-01-14">
<maxtemp>10</maxtemp>
<mintemp>5</mintemp>
<cloudcover>40</cloudcover>
<humidity>20</humidity>
<precipitation>10.2</precipitation>
<windspeed>3</windspeed>
<description>Heavy rain</description>
</date>
</weather>
</city>
</forecast>
所以这不应该在这里通过验证,因为value
应该是唯一的,为什么这不起作用?