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

XSD 1.1如何限制connected_condition下子元素总属性数不超过2且不影响其他元素?

实现方案

该校验逻辑完全可以通过assert实现,核心思路是仅统计<connected_condition>下所有子<properties>的配置属性总和,不涉及卡牌本身的<properties>校验。

核心校验规则

  • 仅作用于<connected_condition>节点的子<properties>元素,不限制卡牌根节点下的<properties>属性数量
  • 对每个子<properties>,统计type/color/number三类属性中已配置(非空)的数量
  • 所有子<properties>的属性数累加总和≤2

代码示例(Python为例)

针对JSON格式卡牌数据

def validate_connected_condition(card: dict):
    # 无connected_condition节点无需校验
    if "connected_condition" not in card:
        return
    total_attr = 0
    # 遍历所有子properties
    for prop in card["connected_condition"].get("properties", []):
        # 统计当前properties的有效配置属性数
        total_attr += sum(1 for k in ["type", "color", "number"] if k in prop and prop[k] is not None)
    # 断言校验
    assert total_attr <= 2, f"<connected_condition>子属性总数超限:当前{total_attr}个,最多允许2个"

针对XML格式卡牌数据

import xml.etree.ElementTree as ET

def validate_connected_condition_xml(card_root: ET.Element):
    cond_node = card_root.find("connected_condition")
    if not cond_node:
        return
    total_attr = 0
    for prop_node in cond_node.findall("properties"):
        total_attr += sum(1 for k in ["type", "color", "number"] if prop_node.get(k) is not None)
    assert total_attr <= 2, f"<connected_condition>子属性总数超限:当前{total_attr}个,最多允许2个"

补充说明

  • 断言默认仅在调试模式生效,生产环境如需强制拦截,可将assert替换为显式的异常抛出逻辑
  • 若使用其他技术栈(JS/Java/C#等),仅需调整遍历、属性读取的语法,核心的计数+判断规则无需修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 23:45:00