首页 > 解决方案 > 寻找可以处理重复元素名称的 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>

如您所知,共有三种不同类型的项目。

这只是一个简单的例子,XML 元素要复杂得多。我想我正在寻找一种从多个元素定义中进行选择的 XML 验证语言。例如,如果单个类型的项目定义不适合,请尝试 group,如果不适合,请尝试 ref,如果仍然不适合,则它无效。

因为我想验证不同版本的 XML 以发现它们之间的变化,所以规范非常严格非常重要。意思是,我只会使用可选的数量规范,如果它在 XML 中是可选的,而不是为了取悦验证器。

标签: xmlvalidationschema

解决方案


您可以使用 XML Schema (XSD) 1.1 通过使用“条件类型分配”特性(也称为 xs:alternative)来实现此目的。这允许您为 item 元素定义多种替代类型,根据元素属性的值进行选择。


推荐阅读