Как проверить подмножество содержимого в документе XML, когда это может произойти в любом порядке? - PullRequest
1 голос
/ 31 марта 2009

У меня есть документ с кучей элементов под одним корневым элементом, в котором есть несколько элементов, которые мне нужны, и я хочу их проверить; но эти элементы могут встречаться в любом месте документа.

Есть и другие элементы, которые я не хочу проверять; Мне все равно, если они там или что в них.

Я попробовал очевидную вещь: XSD с элементами, которые мне нужны в элементе 'all', и после этого элемент 'any', но это запрещено.

Я считал:

  • включая другие элементы в моей схеме - юк.
  • преобразование документа, чтобы избавиться от других элементов - вау, перебор.

Должен быть способ сделать это, верно?

Если нам нужен пример:

<book>
  <title/>
  <author/>
  <editor/>
  <pubdate/>
</book>

Например, я бы хотел проверить наличие заголовка и редактора, а также игнорировать автора и публикацию. Обратите внимание, последовательность элементов может не совпадать.

Ответы [ 3 ]

2 голосов
/ 09 апреля 2009

Я использовал XSLT-преобразование, чтобы убрать поля, которые мне не интересны.

Тогда моя XMLSchema не должна иметь элемент, а просто содержит интересующие меня элементы в ... элементе.

XSL-преобразование, похоже, не добавляет ощутимого времени к процессу. Если в будущем возникнут какие-либо проблемы с производительностью, я, вероятно, включу фильтр заинтересованных элементов в вызываемый мной API.

Работает угощение.

1 голос
/ 01 апреля 2009

Вам нужно будет создать схему, которая будет проверять все документы экземпляров, которые, по вашему мнению, должны быть действительными. Например, вам может понадобиться использовать элемент <choice>, чтобы указать, что должен присутствовать один из нескольких элементов. Вы хотели бы включить автора и публикации в схему, но указать, что вас не волнует их содержимое или атрибуты, и что они должны быть необязательными.

0 голосов
/ 01 апреля 2009

С вашими требованиями («несколько элементов, о которых я забочусь и хочу проверить; но эти элементы могут встречаться в любом месте документа») Schematron , вероятно, лучше, чем XSD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...