XSD 1.0 正则表达式不匹配两个特定的十六进制字符串

XSD 1.0 regex to not match two specific hexadecimal strings

我一直在尝试在 XML 架构中提出一个正则表达式来匹配 000001-FFFFFE 范围内的十六进制字符串。我可以让 000000FFFFFF 不匹配,但不能同时在一个表达式中。

应匹配的字符串: EFEFEFEEEEEFFFFFFE10101010000000001

不应匹配的字符串: 000000FFFFFF

有人有什么想法吗?为此,我已经在键盘上敲了几天了。

简而言之,所有 6 位十六进制值 除了 000000FFFFFF 应该被允许。

以下XSD,只需要XSD1.0,

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="OneHexDigitNot0">
    <xs:restriction base="xs:string">
      <xs:pattern            value="[1-9A-F][0-9A-F]{5}"/>
      <xs:pattern value="[0-9A-F]{1}[1-9A-F][0-9A-F]{4}"/>
      <xs:pattern value="[0-9A-F]{2}[1-9A-F][0-9A-F]{3}"/>
      <xs:pattern value="[0-9A-F]{3}[1-9A-F][0-9A-F]{2}"/>
      <xs:pattern value="[0-9A-F]{4}[1-9A-F][0-9A-F]{1}"/>
      <xs:pattern value="[0-9A-F]{5}[1-9A-F]"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="OneHexDigitNot0AndOneHexDigitNotF">
    <xs:restriction base="OneHexDigitNot0">
      <xs:pattern            value="[0-9A-E][0-9A-F]{5}"/>
      <xs:pattern value="[0-9A-F]{1}[0-9A-E][0-9A-F]{4}"/>
      <xs:pattern value="[0-9A-F]{2}[0-9A-E][0-9A-F]{3}"/>
      <xs:pattern value="[0-9A-F]{3}[0-9A-E][0-9A-F]{2}"/>
      <xs:pattern value="[0-9A-F]{4}[0-9A-E][0-9A-F]{1}"/>
      <xs:pattern value="[0-9A-F]{5}[0-9A-E]"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="r" type="OneHexDigitNot0AndOneHexDigitNotF"/>
</xs:schema>

将根据要求成功验证具有 r 根元素和 6 位十六进制内容的 XML 文档, 除了 000000 和 FFFFFF。