我有一个像下面这样的输入XML模式,我希望我的模式可以执行以下两项操作,因为我不确定如何编写以下2条约束。
以下是输入XML文件。
<Country>
<farm farmOwnerName="Jerry" produce="apple">
<established>1974</established>
<totalWorker>30</totalWorker>
</farm>
<farm farmOwnerName="Ronald" produce="apple">
<totalWorker>15</totalWorker>
</farm>
<farm farmOwnerName="Richard" produce="lemon">
<planToEstablish>1970</planToEstablish>
<totalWorker>20</totalWorker>
</farm>
</Country>
下面是我现在拥有的XML架构代码。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="established" type="xs:integer"/>
<xs:element name="planToEstablish" type="xs:integer"/>
<xs:element name="totalWorker" type="xs:integer"/>
<xs:element name="Country">
<xs:complexType name="farm">
<xs:sequence maxOccurs="unbounded">
<xs:element ref="established" use="optional"/>
<xs:element ref="planToEstablish" use="optional"/>
<xs:element ref="totalWorker"/>
</xs:sequence>
<xs:attribute name="farmOwnerName" use="required"/>
<xs:attribute name="produce" use="required"/>
<xs:attribute name="quality" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="best"/>
<xs:enumeration value="normal"/>
<xs:enumeration value="low"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
您可以选择第一个约束:
<xs:choice minOccurs="0">
<xs:element ref="established" use="optional"/>
<xs:element ref="planToEstablish" use="optional"/>
</xs:choice>
第二个约束是通过对Country元素使用xs:unique约束来实现的,其中选择器设置为“Farm”,字段为@farmOwnerName和@produce。