Проверка XML - какой механизм или инфраструктуру на основе правил следует использовать - PullRequest
1 голос
/ 01 июля 2010

Мне нужно придумать какой-нибудь механизм правил, где я могу указать правила проверки для определенных файлов XML. Затем правила считываются и утверждаются в отношении xml.

Какой самый лучший способ? Это XPath, или XQuery, или XSL, или даже XSD? Или, может быть, даже XMLUnit?

Мне нужно сделать что-то вроде обнаружения, когда определенные атрибуты отличаются от аналогичных узлов, например ::10000

<root>
  <customers>
    <customer name="Fred">
      <contact-details email="fred@company.com">
    </customer>
    <customer name="Barney">
      <contact-details email="barney@company.com">
    </customer>
    <customer name="Fred">
      <contact-details email="fre@company.com">
    </customer>
  </customers>
</root>

Таким образом, было бы обнаружено, что адреса электронной почты выше, как правило, разные. Также необходимо проверить данные в xml по отношению к внешним справочным данным, например, поиск по почтовому индексу и т. д.

Любые предложения относительно того, что я должен использовать, чтобы легко определить правила, которые работают довольно быстро? XML и внешние данные умеренно велики - может составлять несколько МБ на xml.

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

Спасибо, если можете помочь.

-Джастин

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

Вам следует взглянуть на Schematron

Схематрон отличается по своей основной концепции от других языков схемы тем, что он основан не на грамматиках, а на нахождении древовидных шаблонов в разобранном виде.документ.Этот подход позволяет представлять много видов структур, которые неудобны и сложны в языках схем на основе грамматики.Если вы знаете XPath или язык выражений XSLT, вы можете сразу начать использовать Schematron.

0 голосов
/ 01 июля 2010

Есть ли все вышеперечисленное?

XSD предоставит вам базовую проверку XML. Это позволит вам удостовериться, что элементы имеют правильные childen и правильные атрибуты и находятся в правильном порядке и т. Д. Если вы сравниваете XML с внешними данными XML, то вы захотите использовать XMLUnit. Если вы сравниваете поля в XML с внешними полями из другого места (например, убедитесь, что почтовый код является допустимым почтовым индексом), то вы можете использовать XPath. Вы захотите узнать, какие возможности есть у каждого инструмента, поскольку все они могут помочь с проверкой.

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