Проверка схемы XML
Методы READ-XML и READ-XMLSCHEMA используют необязательный параметр verify-schema-mode для того, чтобы указать AVM какой тип проверки следует использовать.
Существует три типа проверки схемы:
- STRICT
- LOOSE
- IGNORE
Все три типа доступы методу READ-XML, но для метода READ-XMLSHEMA доступны только LOOSE и STRICT.
Как работает проверка STRICT
Проверка STRICT требует, чтобы имена таблиц, имена полей и отношения данных в ProDataSet и XML-схеме совпадали один к одному.
Если какое-либо из приведённых ниже условий не выполняется, то методы генерируют сообщение об ошибке и возвращают FALSE.
- Для каждой временной таблицы ProDataSet в XML-схеме должна быть определена таблица.
- В схеме XML не должно быть таблиц, которых нет в ProDataSet.
- В схеме XML не должно быть полей, которых нет во временных таблицах ProDataSet.
- Сопоставление столбцов временной таблицы по имени. Тип данных и экстент столбца в XML-схеме должны совпадать с данными для соответствующего столбца во временной таблице. Другие атрибуты полей в схеме XML игнорируются.
- Соответствие отношениям данных. Для каждого отношения данных в ProDataSet должна быть определена связь данных в XML-схеме. В XML-схеме не могут быть определены отношения данных, которые не определены в ProDataSet.
- Сопоставление полей между родительским и дочерним буферами должно совпадать.
Как работает проверка LOOSE
Проверка LOOSE сравнивает имена таблиц, имена полей и отношения данных. В отличие от проверки STRICT, LOOSE не требует точного соответствия между схемой XML и определением ProDataSet.
- Тип данных и экстент столбца в XML-схеме должны совпадать с данными для соответствующего столбца во временной таблице. Другие атрибуты полей в схеме XML игнорируются.
- Имена полей или их количество не обязательно должны совпадать между схемой XML и определением временной таблицы. Однако данные загружаются только в те поля, где имена полей совпадают.
- XML-схема может быть частью или больше чем схема ProDataSet.
- Любые временные таблицы, столбцы или отношения данных, которые находятся в ProDataSet, но их нет в XML-схеме, игнорируются.
- Любые временные таблицы или отношения данных, которые находятся в XML-схеме, но не в ProDataSet, игнорируются, если ProDataSet статичен, или добавляются, если ProDataSet динамичный.
- Для отношений данных в XML-схеме, которые соответствуют отношениям данных в ProDataSet, сопоставление полей должно совпадать.
Как работает проверка IGNORE
Для типа проверки IGNORE данные загружаются только в поля, имена которых совпадают. Если типы данных несовместимы, то чтение XML-методов завершается ошибкой. Если поле XML имеет большее число экстентов, чем соответствующее поле временной таблицы, то метод READ-XML завершается ошибкой.
Выбор уровня проверки
Какой тип проверки следует выбрать, зависит от требований приложения и от того, насколько вы заранее знаете о схеме XML. Тип проверки по умолчанию – LOOSE.
Рекомендации:
- Используйте LOOSE, если вы хотите обновить динамический ProDataSet новыми временными таблицами и отношениями.
- Используйте STRICT, если вы уверены, что вы и ваш внешний источник полностью согласовали описание схемы.
- Используйте IGNORE, когда вы знаете, что будут различия, но вы хотите прочитать как можно больше данных. Также используйте IGNORE, когда вы знаете, что нужные вам данные имеют совпадающие имена.