Проверка XML-элемента по схеме - PullRequest
4 голосов
/ 21 июля 2011

Мне нужно проверить небольшой фрагмент XML-файла по схеме. По сути, я хотел бы задать вопрос «Соответствует ли элемент X в XML-документе Y его типу, определенному в схеме Z?» и если нет, получить сообщение с описанием почему. Это должно учитывать ограничения, накладываемые также на эти типы (например, maxLength, minInclusive).

Возможно ли это?

Ответы [ 3 ]

3 голосов
/ 22 июля 2011

Я не знаю, как это сделать из C #, но это легко сделать в XQuery или XSLT 2.0. В XSLT 2.0 это:

<xsl:copy-of select="doc('doc.xml')//selected/element" validation="strict"/>

и в XQuery это

validate strict {doc('doc.xml')//selected/element}

Все, что вам нужно, это процессор XQuery или XSLT 2.0 с поддержкой схемы, который работает в выбранной вами среде.

1 голос
/ 25 июля 2011

Оказывается, это было намного проще, чем я ожидал.Решение состояло в том, чтобы создать новую схему, которая содержит в качестве корня один элемент, который я хочу проверить.Как только эта схема будет добавлена ​​в набор схем, вы можете просто проверить фрагмент так же, как и любой завершенный документ.

0 голосов
/ 22 октября 2014

Статья знаний Microsoft, которая точно описывает проверку фрагментов XML.Это может быть полезно.http://support.microsoft.com/kb/318504

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