Поддержка 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).