Я ищу для создания документа XSD, который бы подтвердил некоторые XML для меня. Допустим, например, что XML-документы предназначены для описания книг:Вопрос о проверке XML с использованием XSD
<?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-файле пройти проверку?
Спасибо!
Казалось бы, вы правы ... – Sevas