Я хочу создать схему XML - файл XSD - для применения к документам XML.Давайте рассмотрим следующий XML-документ:
<root> <a /> <b /> <c /> <a /> <a /> <b /> </root>
Где соблюдаются следующие желаемые ограничения:
Если бы мне нужно было создать схему XML для применения к примеру XML-документа, я бы начал следующим образом:
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="http://doesnotmatter.com/" xmlns="http://doesnotmatter.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root" min="1" max="1"> <complexType> <!-- ? --> </complexType> </xs:element> </xs:schema>
Я не знаю, как заполнить элемент в моей схеме. Я не могу использовать элемент из-за 3-го ограничения. Как я могу добиться соблюдения своей схемывсе 3 ограничения.
Редактировать
Элемент выбора был краеугольным камнем моей проблемы. Вот схема XML, соответствующая моим потребностям, описанным выше:
<?xml version="1.0" encoding="utf-8"?> <xs:schema targetNamespace="http://doesnotmatter.com/" xmlns="http://doesnotmatter.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="a" /> <xs:element name="b" /> <xs:element name="c" /> </xs:choice> </xs:complexType> </xs:element> </xs:schema>
Итак, ваша модель для root: многократно выбирайте из следующих возможностей: a, b, c. Это оно? Оперативное слово выбрать как в выборе. Может быть, я что-то упускаю, но ответ кажется довольно очевидным.