Поддержка XML в программе Access
Язык XML — это прекрасный способ обмена данными между разными компьютерными программами. Но что делать с программой Access, у которой уже есть собственный отличный способ хранения данных? Ситуация такова: сегодня все больше и больше компаний применяют язык XML для обмена данными. Когда компании обмениваются коммерческими заказами, например, или новостные организации посылают очерки, или фирмы по торговле недвижимостью перечисляют предлагаемую для продажи собственность, очень вероятно, что они используют формат на основе XML. Если вы хотите отправить ваши данные Access в такие системы, нужен способ извлечения их из специализированного ACCDB-формата БД и помещения их в простой и понятный XML-формат.
К сожалению, поддержка языка XML в программе Access до сих пор очень ограничена. Проблема заключается в том, что Access не разрешает выбрать нужный вам XML-формат. Вместо этого программа создает собственный формат, который точно соответствует вашей таблице. Посмотрите на таблицу на рис. 19.11. (При экспорте в XML-файл всегда экспортируется таблица целиком.)
Рис. 19.11. Пример данных, готовых к новой жизни в XML-формате
Когда экспортируется приведенная таблица, программа Access создает XML-документ, который выглядит следующим образом:
<dataroot>
<Product>
<ProductID>371</ProductID>
<Name>Thin-Jam Hex Nut 7</Name>
<ProductNumber>HJ-7161</ProductNumber>
<SafetyStockLevel>1000</SafetyStockLevel>
<ReorderPoint>750</ReorderPoint> </Product> <Product>
<ProductID>372</ProductID>
<Name>Thin-Jam Hex Nut 8</Name>
<ProductNumber>HJ-7162</ProductNumber>
<SafetyStockLevel>1000</SafetyStockLevel>
<ReorderPoint>750</ReorderPoint>
</Product>
Независимо от экспортируемой таблицы программа Access всегда следует одним и тем же правилам:
■ корневой элемент документа называется <dataroot>;
■ программа Access создает отдельный элемент для каждой строки таблицы, используя имя таблицы. В данном примере это означает, что вы получите один элемент <Product> для каждой записи;
■ внутри каждой записи Access создает отдельный элемент для каждого поля. В данном
примере вы получите поля <Name>, <ProductNumber> и т. д.
В подобной структуризации XML-документа нет ничего плохого. Однако поскольку у вас нет возможности изменять структуру, вы потерпите неудачу, если захотите использовать другую программу, которая принимает XML-документы с другим форматом. Например, ваша программа рассчитывает, что корневой элемент будет назван <ProductRecords>, а не <dataroot> или она принимает несколько иную вложенность элементов. Незначительные нестыковки, подобные описанным, могут полностью нарушить работу приложения с XML-обработкой.
Печально, но эту проблему не обойти. Для того чтобы использовать XML-файлы программы Access, нужно специально разрабатывать программу, распознающую эту структуру, или применять другое средство для преобразования XML-файла в стандарт, который вам на самом деле нужен. Средство экспорта в XML-файл программы Access позволяет начать, но не предоставляет вариантов для представления данных.
Примечание
Если вам необходимо отфильтровать записи или не интересующие вас поля либо переименовать поля, задачу можно решить с помощью запроса. Просто создайте запрос, который представляет информацию нужным вам образом, и затем экспортируйте результаты запроса (вместо целой таблицы).
Те же ограничения возникают, когда импортируется XML-содержимое. Программа Access рассчитывает на получение XML-содержимого с жестким табличным форматом. Если вы попытаетесь представить ей XML-документ другого типа, то получите сообщение об ошибке.
Экспорт в XML-файл
Теперь, когда вы познакомились с языком XML и рассмотрели ограничения, установленные в программе Access, вы готовы применить его для собственных нужд. Далее перечислены необходимые для этого действия.
1. Выберите на ленте Внешние данные →Экспорт → Дополнительно → XML-файл(External Data → Export → More → XML File).
Начинается знакомый вам процесс экспорта.
2. Введите имя файла, который хотите создать, и нажмите кнопку ОК.
Программа Access предполагает, что будет использоваться имя таблицы. Например, если экспортируется таблица Orders,рекомендуемое программой имя XML-файла — Оrders.xml.
3. Выберите типы файлов, которые хотите создать (рис. 19.12):
□ данные (XML)(Data (XML)) — создается XML-файл с действительным содержимым из всех записей вашей таблицы;
□ схема данных (XSD)(Schema (XSD)) — создается файл схемы с расширением xsd. Схема не содержит никаких данных, а хранит краткое определение, описывающее вашу таблицу и содержащиеся в ней поля. У схемы два назначения — ее можно передать профессиональным программистам, чтобы они знали, какого типа XML-документ ждать от программы Access, или использовать ее для создания новой пустойтаблицы в другой БД Access;
□
презентация данных (XSL)(Presentation (XSL)) — создает файл преобразования с расширением xsl. В этом файле определяется, как обозреватель может преобразовать исходные данные из XML-файла в Web-страницу на языке HTML, подходящую для отображения в Web-обозревателе. Когда этот флажок установлен, Access также создает htm-файл, использующий xsl-файл. Например, если экспортируется таблица Products,вы получите в результате файл Web-страницы Products.htm. Откройте ее в вашем Web-обозревателе, и он воспользуется файлом Products.xsl для отображения данных из файла Products.xml.
Рис. 19.12.Обычно создается XML-файл, хранящий реальные данные из вашей таблицы. Кроме того, можно создать два дополнительных файла поддержки
4. Если вы хотите экспортировать связанные таблицы в одном и том же XML-документе, щелкните мышью кнопку Дополнительно...(More Options...).
На экране появится окно Экспорт XML(Export XML) с дополнительными параметрами. Большинство из этих параметров лучше всего оставить гуру XML. Но наиболее интересна вкладка Данные(Data) — она позволяет экспортировать связанные таблицы (рис. 19.13).
Например, при экспорте таблицы Ordersу вас есть две возможности.
□ Экспорт других подчиненных таблиц. Можно было бы также экспортировать записи таблицы OrderDetailsдля каждого заказа. Программа Access вкладывает в XML-файл элементы OrderDetailsвнутрь соответствующего элемента Orders.
□ Экспорт связанных записей из главной таблицы. Можно было бы, например, экспортировать записи из таблиц OrderStatusи CreditCards.Эти записи появляются под заголовком [Данные подстановки]([Lookup Data]), поскольку они предоставляют дополнительные данные, связанные с заказом (в данном случае текущий статус заказа и кредитную карту, применяемую для оплаты заказа).
Рис. 19.13.На вкладке Данныеотображается дерево с экспортируемой таблицей в корне, а ветви дерева представляют связанные таблицы. Если вы хотите включить данные из этих связанных таблиц, просто установите флажок, расположенный рядом с каждой из них
Примечание
Когда экспортируются главные или родительские таблицы, данные не вкладываются в XML-документе, поскольку это могло бы привести к дублированию (например, если у нескольких заказов один и тот же статус или в них применяется одна и та же кредитная карта). Вместо этого они добавляются после основной экспортируемой таблицы.
5. Щелкните мышью кнопку ОК.
Программа Access создаст файлы, выбранные в пункте 3.
6. Если вы хотите повторить процесс экспорта несколько раз, установите флажок Сохранить шаги экспорта(Save export steps).
Щелкните мышью кнопку Закрыть(Close) для возврата в окно программы Access.
Импорт из XML-файла
Программа Access делает очень легким процесс импорта XML-данных, при условии что у них структура, на которую рассчитывает программа. Для проверки на практике выберите только что экспортированную таблицу и заново импортируйте ее в новую БД. Вот как это делается.
1. Выберите на ленте Внешние данные → Импорт → Импорт XML-файла(External Data →Import → XML File).
Начнется знакомый процесс импорта.
2. Если создается новая таблица и для ваших данных есть схема, задайте имя файла, содержащего схему. Если у вас уже есть таблицы, которые хотите использовать, или под рукой нет схемы, перейдите сразу к пункту 6.
Можно импортировать непосредственно из XML-файла, но всегда лучше применить схему, если таблица создается впервые, поскольку в схеме хранится информация о типах данных всех полей. Эти сведения гарантируют большее соответствие создаваемой таблицы исходной таблице, которую вы экспортировали.
3. Щелкните мышью кнопку ОК.
Программа Access просмотрит схему и отобразит структуру таблиц, которые будут созданы (рис. 19.14).
Рис. 19.14.В данном примере Access корректно устанавливает, что ваш файл схемы определяет структуру таблиц Orders, OrderDetails, OrderStatusи CreditCards.Можно раскрыть каждую таблицу и увидеть содержащиеся в ней поля
4. Щелкните мышью кнопку ОК.
С помощью данных схемы программа Access создает новую пустую таблицу с корректной структурой. Теперь можно заполнять ее данными.
Примечание
Если таблица с таким же именем уже существует, Access добавит в конец имени число, чтобы отличать новую таблицу (например, Products1, Products2и т. д.).
5. Щелкните мышью кнопку Закрыть(Close), чтобы вернуться в окно программы Access.
6. Выберите на ленте Внешние данные →Импорт → Импорт XML-файла(External Data → Import →XML File).
Теперь, когда ваши таблицы созданы, можно импортировать реальные данные.
7. Задайте имя XML-файла, содержащего данные, которые хотите импортировать, и щелкните мышью кнопку ОК.
Программа Access отобразит структуру таблицы на основе XML-данных вашего файла, Эта структура должна точно соответствовать структуре таблицы, которую вы хотите создать или в которую хотите добавить данные.
8. Выберите один из вариантов операции импорта.
o Выбор переключателя добавить данные в таблицы(Append Data to Existing Table(s)) заставляет программу Access найти таблицу с таким же именем и добавить в нее все данные. Этот вариант применяется, если используемая таблица уже существует.
o Выбор переключателя структура и данные(Structure and Data) создает таблицу и затем заполняет ее данными.
o Выбор переключателя только структура(Structure Only) создает несуществующую до этого момента таблицу, но не импортирует никаких данных.
Примечание
Если в процессе импорта вам нужно создать таблицу, всегда лучше применить файл схемы для ее создания (как описано в пунктах 1—5), поскольку в схеме содержатся более точные сведения о типах данных.
9. Щелкните мышью кнопку ОК.
Access заполнит таблицы данными из вашего XML-файла.
Если вы хотите повторять процесс импорта несколько раз, установите флажок Сохранить шаги импорта(Save export steps).