使用必需和可选属性值验证XML

时间:2014-10-29 15:41:01

标签: xml xml-parsing xsd dtd

我有一个具有以下结构的XML文件:

<add>
<doc>
<field name="url">an Url</field>
<field name="title">a title</field>
<field name="author">an author</field>
</doc>
[[<doc>...</doc>][<doc>..</doc>]]
</add>

所以在每个'doc'中都有相同的元素'field'具有相同的属性'name'但具有不同的可能值:“url”,“title”,“author”。

我需要验证我的文件,以便每个'doc'都需要属性值“url”,但同时属性值“title”和“author”是可选的。问题是它们都属于同一属性'name'。

有没有办法在DTD或XML Schema中执行此操作?

1 个答案:

答案 0 :(得分:1)

如果您不能或不会重新设计XML以利用XML设计的优势,那么您可以在XSD 1.1中使用断言进行某种验证。

但最简单的方法是重新设计XML:

<add>
<doc>
<url>an Url</url>
<title>a title</title>
<author>an author</author>
</doc>
[[<doc>...</doc>][<doc>..</doc>]]
</add>

现在,您描述的约束在DTD或XSD中强制实施。

与大多数技术一样,如果您使用XML工具而不是与它们作斗争,那么XML工具的效果会更好。