我需要创建具有特殊特征的xsd和xml文件。例如'Plane'
'Model' ... 'Ammo'
。如果我将'Ammo'
设置为true
,我需要设置Missiles
(0-10)的数量。如果'Ammo'
设置为false
,我将无法选择Missiles
的金额。我怎样才能制作这个切换台?
sxd文件的一部分:
<xsd:complexType name="Plane">
<xsd:sequence>
<xsd:element name="Model" type="tns:Model" />
<xsd:element name="Ammunition" type="xsd:boolean" />
<!-- If ammo is true add Missiles -->
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Model">
<xsd:sequence>
<xsd:element name="ModelType" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="Missile">
<xsd:restriction base="xsd:byte">
<xsd:minExclusive value="0" />
<xsd:maxInclusive value="10" />
</xsd:restriction>
</xsd:simpleType>
xml
档案的一部分:
<Plane>
<Model>
<ModelType>MiG-29</ModelType>
</Model>
<Ammunition>true</Ammunition>
<!-- Set amount of missiles -->
</Plane>
答案 0 :(得分:1)
单独的XSD 1.0无法表示跨领域验证。你需要使用Schematron扩展它或切换到XSD 1.1,后者仍然不受欢迎。
为了保持Ammunition
标签的使用,我会将其转换为复杂类型并使其成为可选项;它的内容将包含您支持的弹药,实际上它将实现相同的语义。理想的是,我会完全删除Ammunition标签,它不是添加信息,只是开销。