【问题标题】:Why is my xsd:pattern failing to match my XML?为什么我的 xsd:pattern 无法匹配我的 XML?
【发布时间】:2023-04-10 13:41:02
【问题描述】:

我的 XSD 无法验证我的 XML。

我的 XSD 中有以下内容:

    <xsd:element name="Phone">
        <xsd:simpleType>
            <xsd:restriction base="xsd:string">
                <xsd:pattern value="^\d{0,11}$"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:element>

在我的 XML 文件中,我有以下元素:

<Phone>0653556048</Phone>

当我根据我的 XSD 文件验证我的 XML 文件时,我发现了这个错误:

值“0653556048”对于模式不是构面有效的 '^\d{0,11} $' 用于类型 '#AnonType_PhoneUserForm'。

但是当我在正则表达式网站上测试验证正则表达式时,我的属性是有效的:

我的 XML 和 XSD 文件都是 UTF-8。 我错过了什么?

【问题讨论】:

    标签: xml xsd xsd-validation xml-validation


    【解决方案1】:

    xsd:pattern 值中的正则表达式隐式锚定在字符串的开头 (^) 和结尾 ($),因此请更改

                <xsd:pattern value="^\d{0,11}$"/>
    

                <xsd:pattern value="\d{0,11}"/>
    

    您的 XSD 将成功验证您的 XML。

    【讨论】:

      猜你喜欢
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 2010-12-13
      相关资源
      最近更新 更多