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

如何通过XSD redefine为已有类型追加允许的pattern且不修改基础XSD

问题原因

当前写法是对原有TenantId类型做限制性派生,XSD中如果多个pattern规则出现在派生链上,默认是同时满足的逻辑(即逻辑AND)。{Settings:Something}这类字符串包含{、}等字符,不符合base.xsd中[A-Za-z0-9\.]{3,62}的匹配规则,自然会校验失败。
要实现追加允许规则的需求(满足原有规则或新规则即可),需要用联合类型xs:union实现。

解决方案

直接修改extension.xsd为如下内容即可,无需改动base.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:redefine schemaLocation="./base.xsd">
        <xs:simpleType name="TenantId">
            <!-- 联合类型:只要满足其中一个成员类型的规则即可通过校验 -->
            <xs:union memberTypes="TenantId">
                <!-- 新增允许的pattern规则 -->
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="\{Settings:.*\}" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:union>
        </xs:simpleType>
    </xs:redefine>
</xs:schema>

修改后两种格式的取值都可以通过校验:

  • 原有base.xsd定义的3-62位字母、数字、英文点组合的格式
  • 新增的{Settings:xxx}格式
可选补充

如果需要新增的{Settings:xxx}格式也满足原有3-62位长度的要求,只需要在新增的匿名简单类型中补充长度限制即可:

<xs:simpleType>
    <xs:restriction base="xs:string">
        <xs:pattern value="\{Settings:.*\}" />
        <xs:minLength value="3" />
        <xs:maxLength value="62" />
    </xs:restriction>
</xs:simpleType>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:08