【发布时间】:2009-10-21 23:32:29
【问题描述】:
我正在尝试开发一种模式,该模式将验证我继承的一些现有 XML 文件。我希望架构尽可能多地完成验证工作。挑战在于属性和元素取决于其他属性的值。
真实数据非常抽象,所以我创建了一些简单的示例。假设我有以下 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Creature type="human" nationality="British">
<Address>London</Address>
</Creature>
<?xml version="1.0" encoding="UTF-8"?>
<Creature type="animal" species="Tiger">
<Habitat>Jungle</Habitat>
</Creature>
如果生物的“类型”是“人类”,我将有一个“国籍”属性和一个“地址”子元素。如果生物的“类型”是“动物”,我将有一个“物种”属性和一个“栖息地”子元素。就本示例而言,具有“物种”或“栖息地”的“人类”是无效的,具有“国籍”或“地址”的“动物”也是如此。
如果“Creature”不是根元素,我可能在根元素下方有两个不同的“Creature”选择,但是当“Creature”是根元素时,我不知道如何使这项工作发挥作用。
是否可以为这些文件创建仅匹配有效文档的架构?如果是这样,我会怎么做?
【问题讨论】: