How to exclude an enumeration value in XML file using XSD?

后端 未结 3 1055
遥遥无期
遥遥无期 2021-01-20 18:58

Is it possible to specify the value of a tag or attribute should not be like some_value ?

I have a strange requirement, where the xsd isn\'t

相关标签:
3条回答
  • 2021-01-20 19:28

    Use regular expressions to specify a pattern or as in your case what a pattern should not contain.

    http://www.w3schools.com/schema/schema_facets.asp

    0 讨论(0)
  • 2021-01-20 19:33

    I'm no regex expert, but this simpleType makes everything starting with data_migration invalid.

    <xs:simpleType name="notDataMigration">
      <xs:restriction base="xs:string">
        <xs:pattern value="^(?!data_migration).*" />
      </xs:restriction>
    </xs:simpleType>
    
    0 讨论(0)
  • 2021-01-20 19:46

    I don't know if you can specifically exclude a value. I'm not sure if this helps, but you can create two separate enumerations and then create the union of the enumerations.

    <xsd:simpleType name="IncludedEnumType">
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="pending" />
        <xsd:enumeration value="in_process" />
        <xsd:enumeration value="failed" />
        <xsd:enumeration value="unknown" />
      </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="ExcludedEnumType">
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="data_migration" />
      </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="CombinedEnumType">
      <xsd:union memberTypes="IncludedEnumType ExcludedEnumType" />
    </xsd:simpleType>
    

    You would use either IncludedEnumType or CombinedEnumType as necessary. Using the IncludedEnumType would obviously excluded the values in ExcludedEnumType.

    This approach uses Solution 2 from this article by IBM.

    0 讨论(0)
提交回复
热议问题