我有一个具有以下结构的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中执行此操作?
答案 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工具的效果会更好。