xsd:SimpleType:如何将属性限制为具有连接的特定值列表

时间:2014-09-26 12:25:07

标签: xml regex xsd

我有10"括号内"变量(" [EVENT]"," [PROTOCOL]"," [SESSION]"等...) 我需要限制一个属性。 有效案例是:

  1. 任何没有括号的字符串
  2. 提及10"括号内"变量
  3. 任何括号中的变量与常规字符串连接,例如: 我的[EVENT] [PROTOCOL] @ google.com
  4. 空字符串
  5. 无效案件:

    1. 括号内的任何字符串,除了10个预定义
    2. 与连接相同
    3. 只有开放或关闭括号的字符串
    4. 要简短 - 在括号内只允许使用预定义变量,它们可以与任何字符串连接。

      提前致谢

1 个答案:

答案 0 :(得分:1)

阅读正则表达式,如下所示: 一个或多个不包含括号的子串的串联,除了围绕EVENT,PROTOCOL或SESSION的那些。 这可以简单地扩展为额外可接受的括号变量。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:attribute name="attr">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:pattern value="[^\[\]]*"/>
            <xs:pattern value="([^\[\]]*\[(EVENT|PROTOCOL|SESSION)\][^\[\]]*)+"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>