Как проверить узел XML против XSD в C ++? - PullRequest
0 голосов
/ 10 июня 2010

Обратите внимание, что я запрашиваю проверку для определенного узла, а не для всего файла. Для примеров

<somexmldoc>
    <someNode>
        <UserDefinedNode> </>
        <UserDefinedNode> </>
    </someNode>
</somexmldoc>

Для этого документа XML у меня есть файл wholeDoc.XSD, который можно использовать для проверки всего документа, кроме «UserDefinedNode» (этот узел указан с тегом «any» в xsd, что позволяет пользователю определять что-либо под этим узлом ).

Можно ли иметь отдельный файл userdefined.XSD для проверки "UserDefinedNode"? Можно ли использовать MSXML для C ++ (IXMLDomDocument) для проверки этого?

Спасибо!

Ответы [ 3 ]

1 голос
/ 11 июня 2010

XSD применяется ко всему документу DOM, но не к фрагменту DOM.Однако, поскольку ваш фрагмент также является допустимым XML, почему бы не скопировать его в другой объект DOM в качестве корневого?Вы можете использовать appendChild или cloneNode для достижения этой цели, а затем проверить новый DOM.

Кстати, если вы хотите проверить указанный фрагмент DOM, для вас есть метод validateNode .

0 голосов
/ 10 июня 2010

Должно быть возможно. Я нашел документ под названием КАК: проверить для вас фрагменты XML на схеме XML в Visual C # .NET ( см. Здесь ). Это C #, но вы должны быть в состоянии перевести это: -)

0 голосов
/ 10 июня 2010

Да, это возможно.Я бы порекомендовал загрузить Microsoft Core XML Services (MSXML) 6.0 SDK , поскольку он содержит пример кода C ++, который показывает, как это сделать.

...