我希望创建一个XSD文档,为我验证一些XML。例如,假设XML文档旨在描述书籍:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<comment>Bob's very first book</comment>
<name>Bob's book</name>
<author>Bob</author>
<year>2009</year>
<publisher>
<name>Dan's book publishing enterprise</name>
<address>123 Fake St.</address>
</publisher>
</book>
我们也要说我只关心三个要素 - 名字,作者和年份。它们是必需的,应根据模式进行验证。我不控制我收到的XML文件,因此元素的顺序无关紧要,任何其他元素都不允许通过XSD验证。
遵循这些要求,我尝试构建一个能够进行此类验证的XSD架构,但我无法做到这一点。可以按任何顺序定义元素的约束排除了sequence
指标。我剩下的是all
或choice
指标。 all
是明显的选择,但它不允许我使用any
元素。
我也玩弄了这个想法:
<include schemaLocation="year.xsd"/>
<include schemaLocation="name.xsd"/>
<include schemaLocation="author.xsd"/>
....
<sequence>
<any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</sequence>
虽然如果在XML文件中找到,名称年份和作者将被验证,但这不会检查强制性元素 - 我无法指定年份,作者和书名需要通过验证。
有没有人能给我提示如何构建一个XSD文档来验证一些无序的必需元素,并且仍然允许XML文件中的未定义元素通过验证?
谢谢!