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

Schematron检测可选属性存在性及值拼写正确性的实现问询

正确实现Schematron检测可选属性值的方案

核心需求回顾

需要检测XML中SIGNOFF下的ACCOMPBY/INSPBY节点的可选属性QUAL-REQS:

  • 仅当属性存在时才进行验证
  • 属性值必须严格为RVSM或LLM,拼写错误需标记

正确的Schematron规则实现

<schema xmlns="http://purl.oclc.org/dsdl/schematron">
  <pattern>
    <!-- 仅匹配存在QUAL-REQS属性的目标节点 -->
    <rule context="SIGNOFF/ACCOMPBY[@QUAL-REQS] | SIGNOFF/INSPBY[@QUAL-REQS]">
      <assert test="@QUAL-REQS = ('RVSM', 'LLM')">
        属性QUAL-REQS的值非法,必须为"RVSM"或"LLM",当前值:<value-of select="@QUAL-REQS"/>
      </assert>
    </rule>
  </pattern>
</schema>

关键修正点说明

  1. 精准匹配目标节点:通过[@QUAL-REQS]限定上下文,只对存在该属性的ACCOMPBY/INSPBY节点触发检测,解决了第二次尝试中“无属性节点也被检测”的问题
  2. 修正属性名拼写:使用正确的属性名QUAL-REQS,避免第一次尝试中的拼写错误(原错误为QUALS-REQS)
  3. 严格值校验:通过@QUAL-REQS = ('RVSM', 'LLM')直接判断属性值是否属于合法集合,非法值会触发明确的错误提示

示例验证效果

针对包含错误值的XML片段:

<SIGNOFF>
  <ACCOMPBY QUAL-REQS="RVPSM">...</ACCOMPBY>
  <INSPBY>...</INSPBY>
  <INSPBY QUAL-REQS="LLM">...</INSPBY>
</SIGNOFF>
  • 带有错误值RVPSM的ACCOMPBY节点会被标记错误
  • 无QUAL-REQS属性的INSPBY节点不会触发检测
  • 值为LLM的INSPBY节点验证通过

内容的提问来源于stack exchange,提问作者R.Bowe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:02:40