Схема XML, проверяющая значение и применяющая дополнительные ограничения - PullRequest
0 голосов
/ 13 мая 2009

У меня есть следующий случай: У всех лодок есть тип лодки как акула, яхта и так далее. Мне нужно зарегистрировать, какой тип лодки, а также сколько футов лодки, но именно здесь возникает проблема. Если пользователь вводит акулу, мне нужно проверить, что она составляет 15-30 футов, если он набирает яхту, например 30-60 футов.

Любая помощь в этом?

<boat>
    <type>shark</type>
    <foot>18</foot> //validates
</boat>
<boat>
    <type>shark</type>
    <foot>14</foot> //fails
</boat>
<boat>
    <type>AnyOtherBoat</type>
    <foot>14</foot>//validates since its another type of boat than shark and yatch
</boat>

Помощь ценится! Thx

Ответы [ 2 ]

3 голосов
/ 13 мая 2009

Schematron ( "язык для утверждений о шаблонах, найденных в документах XML" ) может быть в состоянии сделать то, что вам нужно. Он позволяет указывать дополнительные правила, которые нельзя выразить в определении обычной XML-схемы (XSD, RelaxNG).

Вот несколько статей, с которых можно начать:

  1. Schematron в Википедии
  2. Schematron: язык проверки структуры XML с использованием шаблонов в деревьях
  3. Улучшение проверки документов XML с помощью Schematron
1 голос
/ 14 мая 2009

Чтобы ответить на ваш вопрос: Нет, вы не можете сделать это в XML-схеме.

  • Во-первых, вы не можете использовать значения, чтобы выбрать, какие ограничения применять (но вы могли бы использовать такие элементы, как <shark>)
  • Во-вторых, вы не можете выполнять арифметические тесты (но вы можете использовать регулярное выражение для указания допустимых строк ... так что вы можете взломать его.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...