You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSD模式限制中\w定义存疑,xmllint验证含下划线值失败

XSD模式验证中\w匹配问题排查

问题背景

某XSD文件使用以下模式规则限制属性值:

<xsd:pattern value="buyer_specific|customer_specific|duns|iln|gln|party_specific|supplier_specific|\w{1,250}"/>

当使用自定义属性值checkout_profile时,xmllint验证报错:

Schemas validity error :[...] The value 'checkout_profile' is not accepted by the pattern 'buyer_specific|customer_specific|duns|iln|gln|party_specific|supplier_specific|\w{1,250}'.

疑问:按PCRE规则,\w包含下划线、字母和数字,checkout_profile应该符合要求,是xmllint存在bug还是有认知遗漏?

问题原因

这不是xmllint的bug,是对XSD正则表达式规则的认知遗漏:

  • XSD的正则表达式遵循XML Schema规范,并非PCRE规则。在XSD的xsd:pattern中,\w仅匹配字母和数字,不包含下划线。
  • 自定义值checkout_profile包含下划线,无法被\w{1,250}匹配,且不在前面枚举的固定值列表里,因此触发验证错误。

解决方案

如果需要支持包含下划线的自定义属性值,需修改XSD的模式规则,把下划线明确加入匹配范围,比如:

<xsd:pattern value="buyer_specific|customer_specific|duns|iln|gln|party_specific|supplier_specific|[\w_]{1,250}"/>

或者直接使用更明确的字符范围定义:

<xsd:pattern value="buyer_specific|customer_specific|duns|iln|gln|party_specific|supplier_specific|[a-zA-Z0-9_]{1,250}"/>

内容的提问来源于stack exchange,提问作者SlowFox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:35:16