代码之家  ›  专栏  ›  技术社区  ›  Toru

XSD-扩展基本限制类型

  •  0
  • Toru  · 技术社区  · 1 年前

    我有以下类型定义:

    <xsd:simpleType name="T_YES_NO">
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="y" />
        <xsd:enumeration value="n" />
      </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="T_FORBIDDEN">
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="f" />
      </xsd:restriction>
    </xsd:simpleType>
    

    我想限制一个类型 T_FOOBAR

    <xsd:simpleType name="T_FOOBAR">
      <xsd:restriction base="T_YES_NO" />
      <xsd:restriction base="T_FORBIDDEN" /> <!-- Not allowed -->
    </xsd:simpleType>
    

    和我 不要 想写

    <xsd:simpleType name="T_FOOBAR">
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="y" />
        <xsd:enumeration value="n" />
        <xsd:enumeration value="f" />
      </xsd:restriction>
    </xsd:simpleType>
    

    如何做到这一点?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Martin Honnen    1 年前

    听起来你可以用联合类型来解决这个特殊的用例: https://www.w3.org/TR/xmlschema-0/#UnionDt .

    <xsd:simpleType name="T_FOOBAR">
      <xsd:union memberTypes="T_YES_NO T_FORBIDDEN"/>
    </xsd:simpleType>