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

SEPA XSD空枚举与最小长度冲突问题咨询

XSD类型约束冲突问题分析

相关XSD代码

<xs:simpleType name="ExternalPurpose1Code">
  <xs:restriction base="xs:string">
    <xs:minLength value="1"/>
    <xs:maxLength value="4"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="ExternalPurpose1Code_EPC121-16_2023_V1.0_SCT_Inst_C2P">
  <xs:restriction base="ExternalPurpose1Code">
    <xs:enumeration value=""/>
  </xs:restriction>
</xs:simpleType>

问题说明

用户疑问:使用派生类型ExternalPurpose1Code_EPC121-16_2023_V1.0_SCT_Inst_C2P时,它允许空值但基类型不允许,最终约束是什么?

xmllint报错信息(中文翻译)

pain.001.001.09.xsd:882: element enumeration: 模式解析错误 : 元素 '{http://www.w3.org/2001/XMLSchema}enumeration': [约束'minLength'] 值的长度为'0';低于允许的最小长度'1'。
pain.001.001.09:882: element enumeration: 模式解析错误 : 元素 '{http://www.w3.org/2001/XMLSchema}enumeration': 约束的值''无法通过基类型'{urn:iso:std:iso:20022:tech:xsd:pain.001.001.09}ExternalPurpose1Code'的验证。
WXS 模式 pain.001.001.09.xsd 编译失败

结论

这个XSD是无效的,根本无法完成编译解析,不存在所谓的“最终约束”。原因很明确:

  • 基类型ExternalPurpose1Code强制要求字符串长度至少为1(minLength="1")
  • 派生类型里添加的枚举值是空字符串,完全不符合基类型的长度要求
  • XSD规则明确:派生类型的所有约束必须兼容基类型约束,不能冲突,因此验证器直接报错拒绝编译

要解决这个问题,二选一即可:

  • 修改基类型,移除minLength="1"约束,允许空字符串
  • 把派生类型里的空枚举值替换成长度在1-4之间的有效字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:35:27