#xml #xsd #unique #validation #field
#xml #xsd #уникальный #проверка #поле
Вопрос:
Я хотел бы проверить XML-файл со схемой, чтобы значения в том же узле не могли повторяться. Важен порядок подписей. Мой недопустимый XML:
<person>
<name>Peter Petrelli</name>
<subject1>Mathematics</subject1>
<note1>8.5</note1>
<subject2>Natural Science</subject2>
<note2>4.5</note2>
<subject3>Mathematics</subject3>
<note3>7</note3>
</person>
</school>
Математика невозможна более одного раза.
Как я могу проверить это с помощью схемы XSD?
Большое вам спасибо
Ответ №1:
При более разумном дизайне проблем не было бы:
<person>
<name>Peter Petrelli</name>
<subject>
<name>Mathematics</name>
<note>2</note>
</subject>
<subject>
<name>Natural Sciences</name>
<note>2.5</note>
</subject>
<subject>
<name>Mathematics</name>
<note>4</note>
</subject>
тогда определение <unique> внутри элемента <person> может быть:
<unique name="su">
<selector xpath="subject" />
<field xpath="name"/>
</unique>
Комментарии:
1. Действительно. Использование вами имен элементов, содержащих суффикс -1, -2, -3 и т. Д., Похоже, делает написание разумной схемы XSD практически невозможным. Это также значительно усложнит любую обработку XML (например, с использованием XSLT или XPath). Это очень плохой дизайн.
2. Я написал только небольшой пример, но я изменил свой дизайн, следуя нашим рекомендациям, и теперь я могу правильно проверять. Большое вам спасибо, ребята