Схема 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>

It's not possible Mathematics is more than once.

Как я могу проверить это с помощью схемы XSD?

Большое спасибо


person rspaz16    schedule 29.09.2011    source источник


Ответы (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>

then the <unique> definition inside the <person> element could be:

    <unique name="su">
        <selector xpath="subject" />
        <field xpath="name"/>
    </unique>
person forty-two    schedule 29.09.2011
comment
Верно. Использование вами имен элементов, содержащих суффикс -1, -2, -3 и т. д., похоже, делает написание разумной схемы XSD практически невозможным. Это также значительно усложнит любую обработку XML (например, с использованием XSLT или XPath). Это очень плохой дизайн. - person Michael Kay; 29.09.2011
comment
Я написал только небольшой пример, но я изменил свой дизайн в соответствии с нашими рекомендациями, и теперь я могу правильно его проверить. Большое спасибо, Народ - person rspaz16; 30.09.2011