xsd限制允许任何小写或大写或数字

时间:2018-01-22 23:01:11

标签: xsd schema

我有一个以下架构只接受COM1-4。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      elementFormDefault="qualified">

      <xs:complexType name="Component">
        <xs:attribute name="type" type="ComponentType"/>    
      </xs:complexType>

      <xs:simpleType name="ComponentType">
            <xs:restriction base="xs:string">
              <xs:enumeration value="COM1"/>
              <xs:enumeration value="COM2"/>
              <xs:enumeration value="COM3"/>
              <xs:enumeration value="COM4"/>
            </xs:restriction>
      </xs:simpleType>

现在要求已经改变。我需要允许任何字符(小写或大写)。我需要使它与以前在生产环境中填充的值向后兼容。

我想保留&#39; ComponentType&#39; ComponentType的名称和枚举类型。我想尽量减少代码更改。如果可能的话,我想在架构级别处理它。这些COM [1-4]只是为这篇文章改变了命名约定。实际值不同。

有没有办法更改架构,可以接受架构范围内的任何字符(小写或大写),而无需重新生成java工件或对java代码进行更改?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为这会有效,但我不知道对Java代码的影响:

<xs:simpleType name="ComponentType">
<xs:restriction base="xs:string">
  <xs:pattern value="[cC][oO][mM][1-3]"/>
</xs:restriction>
</xs:simpleType>