xml - 寻找可以处理重复元素名称的 XML 验证语言
问题描述
XML Schema 不允许同一级别的重复元素名称。我正在寻找一种可以处理这种情况的 XML 验证语言。我不拥有因此无法更改的 XML 看起来像
<items>
<item type="single">
<name>Some single item</name>
</item>
<item type="group">
<name>Some group item</name>
<groups>
…
</groups>
</item>
<item ref="../item[0]"></item>
</items>
如您所知,共有三种不同类型的项目。
- 它是单个项目(由属性类型标识)并具有名称。
- 它是一个组项(由属性类型标识)并具有名称和组元素。
- 它是一个引用(由属性 ref 标识)
这只是一个简单的例子,XML 元素要复杂得多。我想我正在寻找一种从多个元素定义中进行选择的 XML 验证语言。例如,如果单个类型的项目定义不适合,请尝试 group,如果不适合,请尝试 ref,如果仍然不适合,则它无效。
因为我想验证不同版本的 XML 以发现它们之间的变化,所以规范非常严格非常重要。意思是,我只会使用可选的数量规范,如果它在 XML 中是可选的,而不是为了取悦验证器。
解决方案
您可以使用 XML Schema (XSD) 1.1 通过使用“条件类型分配”特性(也称为 xs:alternative)来实现此目的。这允许您为 item 元素定义多种替代类型,根据元素属性的值进行选择。
推荐阅读
- apache - 如何使用 htaccess 重定向规则?
- c# - C# 代码可在一个脚本中工作,但不能在另一个脚本中工作
- c - GCC 属性到静默未初始化变量警告
- docker - Grafana 可执行文件不起作用 - 找不到错误文件
- python - 从 URL 请求加载 JSON 文件
- javascript - jQuery在if语句下无法识别PHP变量
- excel - 如何使用VBA提取右箭头后的数据?
- jquery - System.ArgumentNullException: '值不能为空。参数名称:实体'我在使用 POST 方法时收到此错误
- android - 如何获取操作栏项目的 id
- javascript - react - useState 用过渡效果改变不透明度的工作古怪吗?