validation - XSD 验证元素至少具有指定的属性之一
问题描述
使用 XSD 模式验证 1.0 我想验证一个元素是否至少指定了一个属性。
例如,像这样的简单元素:
<foo a="1" b="2" c="3" />
我想验证至少属性b
orc
被指定。但请注意,也可以指定两者——它们不是相互排斥的。
我尝试使用以下键:
<xs:key name="AttributeSpecified">
<xs:selector xpath="." />
<xs:field xpath="@b|@c" />
</xs:key>
但是当两个属性都被指定时它会失败(因为返回了多个结果)。
可以做到吗?
解决方案
这在 XSD 1.0 中是不可能的。在XSD 1.1 中可能是可能的。
我是 XML Schema 的粉丝,但我不会选择它来进行这种类型的验证。您也许可以使用 XSD1.1 使其工作,但如果您的要求变得稍微复杂一点,您最终可能会遇到一些看起来很可怕的约束。另一方面,XPath 表达式可以优雅地表达您能想到的任何约束,并且您无需修改语言即可使其工作。
推荐阅读
- javascript - React 自定义 Hook 问题 - 无限依赖循环
- matlab - Matlab:对不同大小的等距向量进行随机向量分类
- node.js - 将 React 项目安装为符号链接会显示漏洞警告
- xml - 片段替换底部导航半隐藏
- javascript - Firebase 实时数据库 - 等待多个查询完成
- java - 回收视图继续加载已删除的项目
- flutter - Flutter - 我无法从 db 获取 BLOB
- bash - 'find /Users ...' 有效,但 'find . ......'和'找到〜......'不要。为什么?
- python - Django 错误:django.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错
- php - 投票按钮显示箭头光标而不是手形光标