【问题标题】:Range restriction on xsd elementxsd 元素的范围限制
【发布时间】:2013-12-04 06:26:03
【问题描述】:

我需要对特定字段添加限制 - 电话号码。 现在限制看起来像这样:

        <xsd:element minOccurs="0" name="phoneNumber">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:pattern value="[0-9]{2}[\-][0-9]{10}"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:element>

所以,如果电话号码有值,这将起作用

91-1234567890

但对于美国联系人,我希望国家代码为 1。因此,模式需要更改为 [0-9]{1}[\-][0-9]{10}

1-1234567890

所以,我有两个问题

  1. 如何在此模式中指定特定范围。
  2. 有没有办法在运行时决定模式?例如如果我将国家设为印度,我会将其保留为[0-9]{2}[\-][0-9]{10},如果我将其设为美国,则将其修改为[0-9]{1}[\-][0-9]{10}

【问题讨论】:

  • 第二个问题:您是在 xsd 还是 RegEx 中要求条件分支?
  • @kurellajunior 无论哪种方式都可以。基本上我试图找出我们是否可以在运行时决定模式。该决定将基于 xsd 中的另一个元素 - 国家

标签: java xsd xsd-validation


【解决方案1】:

希望回答问题 1:[0-9]{1,2}-[0-9]{10} 或 \d{1,2}-\d{10}

我最喜欢的 RegEx 网站:http://www.regular-expressions.info/reference.html

问题 2:

条件正则表达式:仅当数据在文本中时才有可能——这里不是这种情况

条件 XSD => 我只是重定向你 :-)

How to add conditional validation in XSD :

xsd property set required according to enum value

希望,这就是您所需要的,如果不是,当您发布包含相关值的 xml 部分时,我们可以在这里更深入地了解

【讨论】:

  • 我的系统将两种格式都显示为无效格式 - [0-9]{1-2}-[0-9]{10} 或 \d{1-2}-\d{10}。你试过了吗?
  • 我的错误。把它固定在上面。从记忆中执行此操作时发生:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
相关资源
最近更新 更多