【问题标题】:Regex Pattern for multiple elements in XSDXSD 中多个元素的正则表达式模式
【发布时间】:2017-03-11 01:28:07
【问题描述】:

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

<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 个元素提供正则表达式,因为如上所述定义正则表达式太大了。请让我知道是否有任何方式提供元素?

【问题讨论】:

  • 您需要为每个元素添加一个&lt;xsl:simpleType&gt;
  • 如果您有 50 种不同的类型,每种类型都需要不同的正则表达式,那么您希望以何种方式改进每种类型的单独简单类型声明?是否仅仅是您试图最小化的 simpleType-restrictions-pattern 结构的冗长,还是更多?
  • 创建 并为所有 50 个元素提供限制太复杂了。是否有任何其他替代方式以简单的方式提供模式
  • 请参阅my answer below 了解选项。

标签: regex xml xsd schema xsd-validation


【解决方案1】:

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

选项:

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

【讨论】:

  • 能否举个例子。
  • 哪个选项?你的问题相当广泛和抽象,所以我已经相应地回答了。如果您想了解更多详细信息,则需要选择其中一个选项。
  • 鉴于问题描述模糊且不完整,如果可能,我推荐#2或#3; #4 否则。我将不得不发明比你在问题中提供的更多细节来给你举例,我不会那样做——那是你的工作。
猜你喜欢
  • 2020-09-24
  • 2020-12-02
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 2014-02-25
相关资源
最近更新 更多