XSD中多个元素的正则表达式模式

时间:2017-03-10 16:51:47

标签: regex xml xsd schema xsd-validation

是否可以检查许多元素的不同正则表达式模式。例如:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 

  <xsd:element name="A" type="emailAddress"/> 
  <xsd:element name="B" type="Name"/> 
  <xsd:element name="C" type="Age"/> 
  <xsd:element name="D" type="Number"/> 

  <xsd:simpleType name="emailAddress"> 
    <xsd:restriction base="xsd:string"> 
      <xsd:pattern value="[^@]+@[^\.]+\..+"/> 
    </xsd:restriction> 
  </xsd:simpleType> 
</xsd:schema>

在上面的XSD中我只有4个元素,并且我为元素A提供了一个正则表达式模式。但我的情况是我有50个元素,每个元素都有不同的正则表达式。我如何为所有这50个元素提供正则表达式,因为如上所述定义正则表达式太大了。如果有任何提供元素的方法,请告诉我?

1 个答案:

答案 0 :(得分:0)

  

我如何为所有这50个元素提供正则表达式,因为定义   如上所述的正则表达式太大了。

选项:

  1. 使用本地类型声明而不是对命名全局的引用 声明。
  2. 使用xsd:pattern正则表达式以外的构造。 (你真的想要吗? 使用正则表达式来表示数字类型,例如?)
  3. 将类型分组为常见类别,可能按层次排列。 (所有50种类型都真正正交吗?)
  4. 咬紧牙关并定义50种不同的,命名的全局类型。
  5. Punt并将它们设置为所有不受限制的字符串或anyType