XSD用于具有任何名称但已知结构的复杂元素

时间:2017-10-07 14:28:59

标签: xml xsd xsd-validation xml-validation

例如,如果我们有一个如下所示的文件:

<?xml version="1.0" encoding="utf-8"?>
<Cars>
    <Audi>
        <PlateNumber>9488</PlateNumber>
        <Color>blue</Color>
    </Audi>
    <BMW>
        <PlateNumber>12345</PlateNumber>
        <Color>red</Color>
    </BMW>
</Cars>

元素Cars中的元素可以包含 任何 名称,但 总是 具有相同的子节点PlateNumberColor。这样的事情可以在模式中定义吗?

1 个答案:

答案 0 :(得分:2)

XSD约束严重依赖于XML组件(元素和属性)名称。允许任何元素通过xs:any位于指定位置,但一旦使用,就会very limited ways to add further constraints

考虑调整您的设计,以遵守类似名称使用类似名称的一般原则:

<Cars>
    <Car>
        <Make>Audi</Make>
        <PlateNumber>9488</PlateNumber>
        <Color>blue</Color>
    </Car>
    <Car>
        <Make>BMW</Make>
        <PlateNumber>12345</PlateNumber>
        <Color>red</Color>
    </Car>
</Cars>

然后,您可以毫不费力地表达Car元素之间的共性。

替代方法: XSD element substitution group example?