1

我需要创建具有特殊特性的 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>
4

1 回答 1

1

单独的 XSD 1.0 无法表达跨字段验证。您需要使用 Schematron 扩展它或切换到 XSD 1.1,后者仍然不流行。

为了保持Ammunition标签的使用,我会将其转换为复杂类型并使其成为可选;它的内容将包含您支持的弹药,这实际上将实现相同的语义。理想情况下,我会一起删除弹药标签,它不是添加信息,只是开销。

于 2013-04-03T11:59:50.453 回答