【问题标题】:How can allowed element values depend on other element values in XSD?允许的元素值如何依赖于 XSD 中的其他元素值?
【发布时间】:2016-10-31 13:29:20
【问题描述】:

我有以下任务(简单版本):用 XSD 温度描述。有最小值、最大值和默认值。默认值应放在 min...max 值内。如何用 XSD 来描述这些东西?

我的意思是:

Min_Set_Temp [ Integer between 0 and 1000 ]
Max Set Temp [ Integer between 0 and 1000 ]
Default_Set_Temp [ Integer between Min Set Temp and Max Set Temp]

XSD 开始:

<xs:simpleType name="tSetTemperature">
    <xs:restriction base="xs:unsignedShort">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="1000"/>
    </xs:restriction>
</xs:simpleType>

<xs:element name="Bake">
  <xs:complexType>
    <xs:sequence>
        <xs:element name="MinSetTemp" type="tSetTemperature"/>
        <xs:element name="MaxSetTemp" type="tSetTemperature"/>
        <xs:element name="DefaultTemp" type="tSetTemperature"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

【问题讨论】:

    标签: xml xsd xsd-validation xml-validation


    【解决方案1】:

    XSD 1.0

    不可能。

    XSD 1.1

    可以使用xs:assert:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
               vc:minVersion="1.1">
    
      <xs:simpleType name="tSetTemperature">
        <xs:restriction base="xs:unsignedShort">
          <xs:minInclusive value="0"/>
          <xs:maxInclusive value="1000"/>
        </xs:restriction>
      </xs:simpleType>
    
      <xs:element name="Bake">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MinSetTemp" type="tSetTemperature"/>
            <xs:element name="MaxSetTemp" type="tSetTemperature"/>
            <xs:element name="DefaultTemp" type="tSetTemperature"/>
          </xs:sequence>
          <xs:assert test="DefaultTemp = MinSetTemp to MaxSetTemp"/>
        </xs:complexType>
      </xs:element>
     </xs:schema>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多