3

是否可以指定标签或属性的值不应该像 some_value

我有一个奇怪的要求,xsd 不知道发送给它的值。该特定标签的值可以是具有除一个值(say data_migration)之外的任何值的字符串。

如果发送了该特定值,则应向发送者确认错误。

是否可以指定此限制?

4

2 回答 2

2

我不知道您是否可以专门排除一个值。我不确定这是否有帮助,但您可以创建两个单独的枚举,然后创建枚举的联合。

<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>

您将根据需要使用IncludedEnumType或使用CombinedEnumType。使用IncludedEnumType显然会排除ExcludedEnumType.

此方法使用IBM 这篇文章中的解决方案 2 。

于 2010-03-24T14:14:35.227 回答
2

我不是正则表达式专家,但是这个 simpleType 使得一切以data_migration无效开头。

<xs:simpleType name="notDataMigration">
  <xs:restriction base="xs:string">
    <xs:pattern value="^(?!data_migration).*" />
  </xs:restriction>
</xs:simpleType>
于 2010-03-24T14:19:23.723 回答