Xml редактор в табличном виде


Создание и редактирование XML-файла в Excel

Скачать файлы для чтения:

Давно работаю с XML-файлами, но только сейчас задался вопросом: Как штатными средствами создавать и редактировать XML-файлы в MS Excel? Excel удобный и интуитивно понятный инструмент для создания, редактирования и обработки различных данных. Excel изучают в школе и, наверное, не найдется человека, умеющего работать на ПК и не владеющего основами работы в Excel. Поэтому на мой взгляд это наиболее подходящий инструмент, который можно рекомендовать простым пользователям для создания и редактирования файлов данных для различных приложений, в том числе Веб-приложений. У меня дома установлен MS Excel 2013 и на его примере я опишу те нехитрые процедуры, которые необходимо выполнить при создании XML-файла данных в Excel. Думаю, что и в более ранних версиях Excel это будет тоже работать. Чтобы создать XML-файл данных проделаем несколько несложных шагов. Рассмотрим их на примере создания файла данных событий Православного календаря.

1. Для начала необходимо в Excel создать и заполнить таблицу данных в соответствии со структурой данных. Используйте, пожалуйста, для этого пункт меню Вставка/Таблица.

2. Создадим схему файла XML. Для этого в текстовом редакторе введем следующие строки и и сохраним их в файле.

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <MemoryDays> <event> <s_month>0</s_month> <s_date>0</s_date> <f_month>0</f_month> <f_date>0</f_date> <name>Светлое Христово Воскресение. Пасха</name> <type>0</type> <link></link> <discription></discription> </event> <event> <s_month>0</s_month> <s_date>-7</s_date> <f_month>0</f_month> <f_date>-7</f_date> <name>Вход Господень в Иерусалим</name> <type>1</type> <link></link> <discription></discription> </event> </MemoryDays>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<MemoryDays>

    <event>

      <s_month>0</s_month>

      <s_date>0</s_date>

      <f_month>0</f_month>

      <f_date>0</f_date>

      <name>Светлое Христово Воскресение. Пасха</name>

      <type>0</type>

      <link></link>

      <discription></discription>

    </event>

    <event>

      <s_month>0</s_month>

      <s_date>-7</s_date>

      <f_month>0</f_month>

      <f_date>-7</f_date>

      <name>Вход Господень в Иерусалим</name>

      <type>1</type>

      <link></link>

      <discription></discription>

    </event>

</MemoryDays>

3. Теперь откройте вкладку Разработчик, нажмите кнопку Источник и укажите файл-источник XML. При необходимости включите пункт меню Разработчик в Настройках Excel.

4. Осталось сопоставить элементы схемы и колонки таблицы, перетащив элементы на соответствующие заголовки колонок.

  5. И последний шаг: экспортировать данные таблицы в XML-файл с помощью контекстного меню. Встаньте на любую ячейку таблицы, нажмите правую кнопку мыши, выберите XML/Экспорт… и сохраните XML-файл под нужным именем.

  Сохраните Excel-файл для последующего редактирования и дополнения. В последующем пункты 1.-4. проделывать будет не нужно!

P.S. Зачем же я написал эту банальную заметку? Во-первых, чтобы самому не забыть, а во-вторых, думаю, что эта информация пригодится пользователям плагина «Православный календарь», начиная со следующей версии 0.6 ;-)

на Ваш сайт.

bogaiskov.ru

Пошаговое руководство. Использование функций редактора XML

Эта документация перемещена в архив и не поддерживается.

Visual Studio 2015

 

В этом пошаговом руководстве подробно описан процесс создания нового XML-документа.В нем также используются некоторые функции XML Editor, благодаря которым это приложение становится очень полезным при создании XML-документов.

Примечание

Прежде чем начать работу с пошаговым руководством, сохраните файл hireDate.xsd (содержится ниже в данном разделе) на локальном компьютере.

Создание нового XML-файла и связывание его со схемой XML

  1. В меню Файл выберите пункт Создать, затем Файл.

  2. Выберите в области Шаблоны пункт XML-файл и нажмите кнопку Открыть.

    Новый файл открывается в редакторе.Этот файл содержит XML-декларацию по умолчанию: <?xml version="1.0" encoding="utf-8">.

  3. В окне свойств документа нажмите кнопку обзора (...) в поле Схемы.

    Отображается диалоговое окно XSD-схемы.

  4. Нажмите кнопку Добавить.

    Отображается диалоговое окно Открытие XSD-схемы.

  5. Выберите файл hireDate.xsd и нажмите кнопку Открыть.

  6. Нажмите кнопку ОК.

    Теперь с XML-документом связана XML-схема.Эта XML-схема используется для проверки правильности документа.Также она используется технологией IntelliSense для заполнения списка допустимых элементов.

Добавление данных

  1. Наберите < на панели редактора.

    Список членов отображает следующие возможные элементы:

    • !-- для добавления комментария.

    • !DOCTYPE для добавления типа документа.

    • ? для добавления инструкции по обработке.

    • employee для добавления корневого элемента.

  2. Выберите <!-- для добавления узла комментариев и нажмите клавишу ВВОД.

    Редактор вставляет закрывающий тег комментария и помещает курсор между открывающим и закрывающим тегами комментария.

  3. Введите Test XML file.

  4. В новой строке введите < и выберите employee из списка членов.

    Редактор добавляет начало XML-элемента, <employee.В этот момент можно добавить в элемент атрибуты или закрыть открывающий тег, введя >.

  5. Введите знак >, чтобы закрыть тег.

  6. Редактор добавляет закрывающий тег.Закрывающий тег после добавления будет подчеркнут волнистой линией, обозначающей ошибку проверки правильности.Подсказка отображает сообщение: Содержимое элемента «сотрудник» неполно.Ожидается ID.

  7. Введите знак < и выберите ID из списка членов.Затем введите >.

    Редактор добавляет XML-элемент, <ID></ID>, и помещает курсор после открывающего тега ID.

  8. Введите abc.

    Текст abc подчеркивается волнистой линией.Подсказка отображает сообщение: Элемент «ID» имеет недопустимое значение для этого типа данных.

  9. Щелкните правой кнопкой мыши элемент ID и выберите команду Перейти к определению.

    Редактор открывает файл hireDate.xsd в новом окне документа и помещает курсор на определении элемента схемы ID.

  10. Вернитесь к XML-файлу и замените текст abc на 123.

    Волнистое подчеркивание и подсказка, относящиеся к элементу ID, удаляются.Подсказка для закрывающего тега элемента «employee» теперь отображает сообщение: «Содержимое элемента "сотрудник" неполно».«Предполагается наличие элемента "hire-date"».

  11. Поместите курсор после закрывающего тега ID, введите <, выберите элемент «hire-date» из списка членов, а затем введите >.

    Редактор добавляет XML-элемент <hire-date></hire-date> и помещает курсор после открывающего тега элемента «hire-date».

  12. Введите 10.01.2003 в качестве значения даты найма.

Форматирование XML-документа

  1. Нажмите кнопку Форматировать документ на панели инструментов XML Editor.

    XML-документ будет переформатирован.

Сохранение XML-документа

  1. В меню Файл выберите команду Сохранить как.

    Отображается диалоговое окно Сохранение файла.Имя файла по умолчанию — «XMLFile1».

  2. Введите имя файла и место сохранения для XML-документа и нажмите кнопку Сохранить.

В этом пошаговом руководстве используется следующий файл схемы.

<?xml version="1.0"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="ID" type="xs:unsignedShort" /> <xs:element name="hire-date" type="xs:date" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

msdn.microsoft.com

Интеграция XML данных — другой путь / Хабрахабр

В данной статье описывается «нетрадиционная», но достаточно мощная технология обработки XML, позволяющая импортировать любые XML-данные и преобразовывать их структуру эффективно и просто, при этом один и тот же процесс обработки позволяет трансформировать исходные данные любой структуры без какого-либо изменения программного кода. XML как промежуточный формат обмена данными «оброс» экосистемой технологий и инструментов для работы с ним– специализированные редакторы, DOM-парсеры, XQUERY/XPATH, XSLT, специальные модули ETL и т. д. Все это многообразие и развитость инструментария идеологически приводят к тому, что у нас есть теперь технологии работы не просто с данными, а со специальными XML-данными. Это как отдельно «наука химия» и отдельно «наука химия для веществ, которые хранятся в синих коробках».

Описываемые далее принципы обработки позволили немножко «отмотать назад» условный прогресс технологий и перевести практически всю работу с XML данными на уровень «чистой» СУБД, без специфичного XML-инструментария. Такой подход дал возможность организовать унифицированное хранение любых XML-данных и обеспечить быстрый произвольный доступ к нужным частям информации. Кроме того, появилась возможность реализовывать ETL-функционал универсальным незатратным (практически без кодирования) способом.

Описываемый подход особенно хорошо показал себя на источниках данных большого объема и сложной структуры, с частыми изменениями схемы данных. Если вам приходится иметь дело с небольшим объемом информации, и/или структура несложная– возможно, данная технология вам (пока) не нужна.

Хорошим демо-кейсом для этой технологии могут служить открытые данные сервера госзакупок zakupki.gov.ru, доступные на соответствующем FTP: объём ежедневных обновлений – десятки и сотни тысяч XML файлов объемом в гигабайты или десятки гигабайт, в среднем раз в несколько недель выходит новая версия схемы данных.

Структура данных следует за требованиями законодательства, поэтому, например, информация об извещениях о проведении госзакупок представлена более чем десятком типов документов fcsNotification* в зависимости от типа закупки (электронный аукцион fcsNotificationEF, запрос котировок fcsNotificationZK, закупка у единственного поставщика fcsNotificationEP и т. п.) Все эти документы основаны на одном базовом типе извещения но отличаются в деталях, поэтому для целей анализа все это многообразие при импорте надо в какой-то момент “схлопывать” и приводить к «единому знаменателю».

На данных госзакупок описываемый подход успешно применен и эффективно работает.

Кратко этапы/элементы описываемой технологии:

(1) Импорт всех XML данных в таблицу унифицированной структуры. Речь не идет о сохранении в базу документов целиком, мы импортируем данные поэлементно как пары “имя элемента” – “значение” или “имя атрибута” – “значение”. В результате данного этапа мы избавляемся от XML как формата хранения и получаем быстрый унифицированный доступ к данным всех импортированных XML-документов любой структуры (при этом нам больше не нужен XQUERY/XPATH).

(2) Вторым элементом технологии является создание спецификаций на “вытаскивание” нужных нам данных – выявление результирующих таблиц, в которые мы будем выливать данные, и маппинг полей источника и результата. Этот этап может быть проведен как на основе XSD-схем документов, так и без использования схем, через анализ закачанных на первом этапе образцов документов. Данный этап не требует никакого программирования и специальных навыков, основной инструментарий здесь – электронная таблица.

(3) Завершающие шаги – выборка нужной информации из первичного хранилища импорта (1) с помощью спецификаций (2), преобразование в “колоночное” представление (“пивотирование”) и автоматизированная трансформация в финальный “аналитический” формат – в терминах аналитических хранилищ данных это таблицы фактов структуры “звездочка” (star) со ссылками на справочники измерений (dimensions) и числовыми показателями-мерами (measures).

1. Первичный импорт.
Мы рассматриваем XML-документ как дерево, вершинами которого являются пары “имя”-“значение”. Таким образом, описываемый подход достаточно универсален и может быть применен к любому древовидному представлению данных.

Структура таблицы для загрузки данных из XML:

  • Record_ID: идентификатор элемента специального иерархического вида, позволяющий связывать друг с другом разные уровни документа
  • File_ID: поскольку в таблицу надо будет загружать содержимое множества XML-файлов, надо также хранить идентификатор файла
  • Path: полный путь к данному элементу начиная с корня документа (фактически, это XPATH-путь до данного элемента)
  • Element_Name: название элемента или атрибута
  • Element _Value: значение элемента или атрибута (в виде строки – так же, как оно хранится в XML)
  • Type: тип записи (элемент это или атрибут) – сохраним на всякий случай, вдруг потом надо будет из таблицы восстановить XML
Идея загрузки дерева в таблицу достаточно очевидная. В MS SQL (про другие СУБД не скажу, не смотрел) есть такая встроенная возможность –XML без указания схемы импортируется в так называемую EDGE-таблицу. Это не совсем то что нам нужно, т. к. в EDGE-формате хранятся отдельными записями имя элемента и его значение (то есть имя есть родительская запись для значения) – такой формат попросту неудобно использовать для дальнейших манипуляций. К тому же в EDGE таблице связи в дереве прописаны через указание ParentID.

Короче говоря, сделать нужное представление данных из EDGE таблицы можно, но придется немножко попотеть для “склеивания” названий и значений элементов, воссоздания XPATH до каждого элемента и создания иерархического идентификатора (о том, как мы его будем строить – чуть ниже). При большом объеме данных решение этих задач может оказаться довольно ресурсоемким, но зато можно обойтись единственным инструментом/языком.

Более правильный путь – получить дерево документа с помощью XML-парсера (какая-нибудь реализация есть практически в каждом языке и среде разработки) и заполнить нужную информацию одним проходом по документу.

Давайте посмотрим на конкретный пример. Есть у нас демо XML-файлы deliveries.xml и returns.xml. Файл deliveries.xml (доставки) содержит корневой элемент Deliveries, на верхнем уровне даты начала и окончания периода за который выгружены данные, дальше идут продукты с указанием названия и поставщика, по каждому продукту идет детализация информации доставок – дата, количество, цена.

deliveries.xml<Deliveries> <PeriodBegin>2017-01-01</PeriodBegin> <PeriodEnd>2017-01-31</PeriodEnd> <Products> <Product> <Supplier>Zaanse Snoepfabriek</Supplier> <ProductName>Chocolade</ProductName> <Details> <Detail> <DeliveryDate>2017-01-03</DeliveryDate> <UnitPrice>10.2000</UnitPrice> <Quantity>70</Quantity> </Detail> </Details> </Product> <Product> <Supplier>Mayumi's</Supplier> <ProductName>Tofu</ProductName> <Details> <Detail> <DeliveryDate>2017-01-09</DeliveryDate> <UnitPrice>18.6000</UnitPrice> <Quantity>12</Quantity> </Detail> <Detail> <DeliveryDate>2017-01-13</DeliveryDate> <UnitPrice>18.7000</UnitPrice> <Quantity>20</Quantity> </Detail> </Details> </Product> </Products> </Deliveries> Файл returns.xml (возвраты) абсолютно аналогичный, только корневой элемент называется Returns и в деталях элемент с датой по-другому называется.returns.xml<Returns> <PeriodBegin>2017-02-01</PeriodBegin> <PeriodEnd>2017-02-28</PeriodEnd> <Products> <Product> <Supplier>Pavlova, Ltd.</Supplier> <ProductName>Pavlova</ProductName> <Details> <Detail> <ReturnDate>2017-02-21</ReturnDate> <UnitPrice>13.9000</UnitPrice> <Quantity>2</Quantity> </Detail> </Details> </Product> <Product> <Supplier>Formaggi Fortini s.r.l.</Supplier> <ProductName>Mozzarella di Giovanni</ProductName> <Details> <Detail> <ReturnDate>2017-02-27</ReturnDate> <UnitPrice>27.8000</UnitPrice> <Quantity>4</Quantity> </Detail> </Details> </Product> </Products> </Returns> Имена загруженных файлов хранятся в отдельной таблице, коды наших файлов там равны 2006 (deliveries) и 2007 (returns).

В нашей таблице-приемнике образ наших демо-документов будет выглядеть так:

(Тут не все, только начало таблицы)
Record_ID File_ID Path Element_Name Element_Value Type
001 2006   Deliveries   E
001\001 2006 Deliveries\ PeriodBegin 2017-01-01 E
001\002 2006 Deliveries\ PeriodEnd 2017-01-31 E
001\003 2006 Deliveries\ Products   E
001\003\001 2006 Deliveries\Products\ Product   E
001\003\001\001 2006 Deliveries\Products\ Product\ Supplier Zaanse Snoepfabriek E
001\003\001\002 2006 Deliveries\Products\ Product\ ProductName Chocolade E
001\003\001\003 2006 Deliveries\Products\ Product\ Details   E
001\003\001\003\ 001 2006 Deliveries\Products\ Product\Details\ Detail   E
001\003\001\003\ 001\001 2006 Deliveries\Products\ Product\Details\Detail\ DeliveryDate 2017-01-03 E
001\003\001\003\ 001\002 2006 Deliveries\Products\ Product\Details\Detail\ UnitPrice 10.2000 E
001\003\001\003\ 001\003 2006 Deliveries\Products\ Product\Details\Detail\ Quantity 70 E
По поводу иерархического идентификатора Record_ID: его цель — уникально пронумеровать узлы дерева документа с сохранением информации о связях со всеми предками. К сведению:

В том же SQL Server есть специальный тип данных (объектное расширение) под названием hierarchyid, служащий для этих целей.

В приведенном примере мы используем простую платформенно-независимую реализацию c последовательной конкатенацией счетчиков элементов на каждом уровне дерева. Мы “добиваем” счетчик каждого уровня нулями до заданной фиксированной глубины, чтобы получить легкое и быстрое выделение идентификаторов предков любого уровня через выделение подстрок фиксированной длины.

Вот собственно и все на этом этапе. Теперь мы можем простыми SQL-запросами выделить подмножества данных продуктов, деталей по доставкам или возвратам и связать их друг с другом через идентификаторы файлов и элементов.

Во многих случаях этого подхода будет вполне достаточно для эффективного хранения данных и организации доступа к ним, описанные далее “продвинутые” техники могут не понадобиться.

Действительно, мы уже загрузили все наши данные в единое хранилище, не обращая внимания на возможную разницу в структуре документов, получили достаточно эффективный способ вычленять нужную информацию из всего массива простыми SQL-запросами, можем связывать между собой “вычлененные” подмножества данных.

Производительность такого решения как системы хранения исходников XML для разовых запросов, даже без оптимизации индексов и прочих ухищрений, будет явно гораздо выше, чем если бы вы хранили XML в файлах или даже записывали его в специальные поля БД. В нашем случае не надо запускать процедуру XPATH поиска (которая подразумевает новый парсинг) к каждому документу, мы это проделали один раз и дальше спокойно пользуемся сохраненным результатом через достаточно простые запросы.

Однако:

На этом этапе мы пока не сделали так, чтобы DeliveryDate, Quantity и UnitPrice стали полями одной таблицы, это описывается как процесс “пивотирования” в третьем разделе.

На следующих этапах мы рассмотрим трансформацию этих XML документов в единую структуру данных, содержащую 3 таблицы: MovementReports (тип движения – доставка или возврат, даты начала и окончания из корня документа), Products (название и поставщик) и MovementDetails (цена, количество, дата – поле даты в результате будет единое для обоих исходных документов, несмотря на то, что в исходных файлах поля по-разному называются)
2. Создание спецификаций трансформации в результирующие таблицы.
Рассмотрим процесс создания спецификаций на маппинг исходных данных и результирующих таблиц. Для создания таких спецификаций нам потребуется еще кое-что.
2.1. Получение таблички со структурой документов.
Для дальнейшей обработки нужно иметь развернутую структуру всех наших XML-документов, чтобы на ее основе решать в какую структуру таблиц мы все это будем преобразовать. Одного конкретного образца XML-документа для этой задачи нам мало, в конкретном документе может не быть каких-то необязательных элементов, которые неожиданно обнаружатся в других документах.

Если у нас нет XSD-схемы или мы не хотим с ней связываться, то нам может быть достаточно загрузить в нашу таблицу какую-то репрезентативную выборку образцов XML-документов и построить с помощью группировки по полям Path и Element_Name нужный нам список.

Однако не забывайте, что мы хотим в итоге загрузить информацию в некие целевые “финальные” таблицы, поэтому нам надо знать где в XML хранятся отношения один-ко-многим. То есть надо понять какие элементы формируют “дочернюю” таблицу, где происходит размножение.

Иногда, если схема документа не очень сложная, нам это сразу понятно эмпирически, “глазками”. Также при группировке данных нашей “репрезентативной выборки” мы можем посчитать количество элементов и увидеть по этой статистике где они начинают “размножаться”. Но в общем случае, если у нас есть нормальная XSD-схема, лучше воспользоваться ей – размножение данных один ко многим мы “поймаем”, выявив XSD конструкцию maxoccurs=unbounded.

Как видим, задача немного усложняется: хочется получить не только простую табличку, содержащую список XPATH-путей для всех элементов наших документов, но еще и с указанием того, где начинается размножение данных. (А при анализе хорошо прописанной XSD-схемы приятном бонусом могли бы получить возможность вытащить описания элементов и их типы.)

Очень хорошо было бы для получения такой таблички использовать функциональность какого-нибудь XML-редактора, однако найти такой инструмент, который бы выдавал нужную нам структуру документов по XSD-схеме, не удалось (искали и пробовали долго).

Во всех этих Oxygen, Altova, Liquid и менее навороченных нужная информация внутри, несомненно, используется – однако отдавать ее в нужном виде никто из них не умеет. Как правило, в продвинутом редакторе есть возможность генерировать Sample XML на основании схемы, но в XSD может быть конструкция choice, когда в документе может присутствовать что-то на выбор из нескольких разных элементов –тогда уж лучше реальные “боевые” образцы документов проанализировать. И еще — по образцу или образцам документов мы момент размножения информации один-ко-многим в явном виде тоже не поймаем.

В итоге пришлось изобретать велосипед и писать генератор такой таблички (фактически, парсер XSD специального вида) самостоятельно. Благо XSD это тоже XML, его можно так же загрузить в наше хранилище и реляционными операциями вытащить нужный вид. Если схема простая, без ссылок на сложные типы элементов и без наследования от базовых типов, то это достаточно просто. В случае, когда все это наследование типов в наличии (как в госзакупках, например), задача посложнее.

Для нашего примера мы получим примерно вот такую таблицу структуры документов:
Path Element_Name maxoccurs
Deliveries\ PeriodBegin  
Deliveries\ PeriodEnd  
Deliveries\Products\Product\ ProductName Products\Product
Deliveries\Products\Product\ Supplier Products\Product
Deliveries\Products\Product\Details\Detail\ DeliveryDate Products\Product\Details\Detail
Deliveries\Products\Product\Details\Detail\ Quantity Products\Product\Details\Detail
Deliveries\Products\Product\Details\Detail\ UnitPrice Products\Product\Details\Detail
Returns\ PeriodBegin  
Returns\ PeriodEnd  
Returns\Products\Product\ ProductName Products\Product
Returns\Products\Product\ Supplier Products\Product
Returns\Products\Product\Details\Detail\ Quantity Products\Product\Details\Detail
Returns\Products\Product\Details\Detail\ ReturnDate Products\Product\Details\Detail
Returns\Products\Product\Details\Detail\ UnitPrice Products\Product\Details\Detail
2.2. Описание трансформации
Получив исходные данные в виде табличной спецификации документов, переходим к дизайну трансформации данных. В результате этой трансформации мы преобразуем данные нашего исходного хранилища первичного XML в новые таблицы с новыми именами полей и уникальными кодами записей целевых таблиц. Нам не нужны какие-то специальные программные инструменты, просто добавим к этой табличке несколько новых столбцов:В приведенном примере некоторые поля представлены с сокращениями для улучшения читабельности.
Path Element_ Name maxoccurs Target Table Target Field Element Depth Additional Info
Deliveries\ PeriodBegin   MovementReports  PeriodBegin_Date 1 Deliveries
Deliveries\ PeriodEnd   MovementReports  PeriodEnd_Date 1 Deliveries
Deliveries\...\Product\ ProductName …\Product Products ProductName_Dim 3  
Deliveries\...\Product\ Supplier …\Product Products Supplier_Dim 3  
Deliveries\...\...\...\Detail\ DeliveryDate …\Detail MovementDetails MovementDate_Date 5  
Deliveries\...\...\...\Detail\ Quantity …\Detail MovementDetails Quantity_Val 5  
Deliveries\...\...\...\Detail\ UnitPrice …\Detail MovementDetails UnitPrice_Val 5  
Returns\ PeriodBegin   MovementReports  PeriodBegin_Date 1 Returns
Returns\ PeriodEnd   MovementReports  PeriodEnd_Date 1 Returns
Returns\...\Product\ ProductName …\Product Products ProductName_Dim 3  
Returns\...\Product\ Supplier …\Product Products Supplier_Dim 3  
Returns\...\...\...\Detail\ Quantity …\Detail MovementDetails MovementDate_Date 5  
Returns\...\...\...\Detail\ ReturnDate …\Detail MovementDetails Quantity_Val 5  
Returns\...\...\...\Detail\ UnitPrice …\Detail MovementDetails UnitPrice_Val 5  
Вот какие поля мы добавили:
  • Имя целевой таблицы TargetTable. Обратите внимание, что мы учитываем информацию о размножении один-ко-многим (столбец maxoccurs) для определения, в какую таблицу какие данные заливать.
  • Имя поля целевой таблицы TargetField. Мы далее используем подход сonvention over configuration и будем присваивать суффикс _Dim для полей, которые станут справочниками-измерениями (dimensions), суффикс _Date для полей дат и суффикс _Val для числовых полей- мер (measures). На следующих этапах процесса соответствующие утилиты по суффиксу поймут что делать с данным полем – строить и обновлять нужный справочник или преобразовывать значение в соответствующий формат.
  • Эффективная глубина вложенности элементов ElementDepth. Нам надо будет для последующих трансформаций сохранить единый код записи целевой таблицы на базе содержимого полей Record_ID и File_ID. В XML глубина элементов может быть разной, но попадать они должны будут в одну целевую таблицу, поэтому мы указываем, какую часть иерархического кода Record_ID нам надо сохранить, отбросив ненужный нам остаток. Благодаря фиксированной длине каждого сегмента иерархического кода, это будет достаточно “дешевая” операция выделения подстрок длины [Количество символов на сегмент кода]* ElementDepth.
  • Дополнительная информация AdditionalInfo. В результате нашей трансформации мы перегрузим исходные данные в разбивке по целевым таблицам в похожую структуру с новыми названиями полей, однако в некоторых местах нам надо будет сохранить важную информацию о том, из какого именно XPATH-пути мы брали исходные данные.
Эта техника открывает несколько интересных возможностей манипуляции трансформацией данных. Не углубляясь в детали, просто перечислим что мы можем сделать:
  • Если у нас есть несколько исходных схем кодирования XML-данных (например, “старая” схема госзакупок по 95 ФЗ и “новая” по 44 ФЗ), мы можем на этапе описания трансформации привести их к единой структуре данных через унификацию названий полей.
  • Можем, как упоминалось ранее, “схлопнуть” разные разделы в рамках одной или нескольких схем документов в единую, более компактную структуру хранения, как мы это делаем в нашем примере.
  • Можно также “схлопнуть” в единообразное представление данные разной глубины. Например, если брать схемы извещений о проведении госзакупок, то в разных схемах информация о лотах закупки может лежать “по адресу” \lot для однолотовых закупок (единственный элемент) и \lots\lot для многолотовых закупок (размножение). С помощью данного подхода можно достаточно просто весь этот зоопарк замаппить в единую таблицу информации о лотах.
После того, как наша табличка со спецификацией трансформации готова, мы загружаем ее в базу данных и джойним с нашим первичным хранилищем по полям Path и Element_Name.

Конкатенацией File_ID, “обрезанного” в соответствии с ElementDepth значения поля Record_ID и значения AdditionalInfo формируем композитный ключ нашей целевой таблицы.

Результат джойна выливаем для каждой целевой таблицы в отдельную “временную” таблицу (в зависимости от объема данных можно попробовать использовать результат запроса “ на лету ”), на следующем этапе с этими таблицами будут работать завершающие утилиты нашего “конвейера”.

Немного подробнее о композитном ключе, может быть, немного повторяясь – но это важный и тонкий момент:
  • До выливки мы имеем набор данных на уровне отдельных полей (элементов). Для того, чтобы соединить поля в записи результирующей таблицы, нам нужно иметь какой-то ключ, который будет однозначно идентифицировать запись целевой таблицы, в которую попадут соответствующие поля.
  • Иерархический идентификатор Record_ID может быть разной длины, в зависимости от “глубины залегания” отдельных элементов в схеме документа. Однако, если углубление уровня не сопровождается размножением элементов один-ко-многим, мы обрезаем наш Record_ID до минимальной достаточной глубины, определенной параметром ElementDepth, что обеспечит нам одинаковость идентификатора для всех полей нашей целевой таблицы. В наших демо-документах такой ситуации нет, но представьте, к примеру, что наш UnitPrice “разветвлялся” бы на 2 значения – оптовую и розничную цены UnitPrice\Retail и UnitPrice\Wholesale.
  • Поскольку в нашем базовом хранилище лежит содержимое множества файлов, в нашем ключе без значения File_ID не обойтись.
  • Следующие этапы преобразования данных работают только с полученными на данном шаге “трансформированными” таблицами, никакой сквозной системы настроек у нас нет. Тип поля (dimension/measure) мы передаем через суффиксы названий, но иногда нам надо передать “по цепочке” еще и информацию о том, в каком именно разделе документа мы брали информацию (помним, что мы можем трансформировать в одинаковый вид документы, закодированные разными схемами). Для передачи на следующий этап преобразования этой информации мы используем необязательный параметр нашей трансформации AdditionalInfo, “подцепив” его к нашему композитному ключу так, чтобы не нарушилась нужная нам идентификация целевых записей.
Посмотрим, что получилось на выходе в нашем примере:Результат трансформации:MovementReports:
KEY TargetField Element_Value
001;[email protected] PeriodBegin_Date 2017-01-01
001;[email protected] PeriodEnd_Date 2017-01-31
001;[email protected] PeriodBegin_Date 2017-02-01
001;[email protected] PeriodEnd_Date 2017-02-28
Products:
KEY TargetField Element_Value
001\003\001;2006 Supplier_Dim Zaanse Snoepfabriek
001\003\001;2006 ProductName_Dim Chocolade
001\003\002;2006 Supplier_Dim Mayumis
001\003\002;2006 ProductName_Dim Tofu
001\003\001;2007 Supplier_Dim Pavlova, Ltd.
001\003\001;2007 ProductName_Dim Pavlova
001\003\002;2007 Supplier_Dim Formaggi Fortini s.r.l.
001\003\002;2007 ProductName_Dim Mozzarella di Giovanni
MovementDetails:
KEY TargetField Element_Value
001\003\001\003\001;2006 MovementDate_Date 2017-01-03
001\003\001\003\001;2006 UnitPrice_Val 10.2000
001\003\001\003\001;2006 Quantity_Val 70
001\003\002\003\001;2006 MovementDate_Date 2017-01-09
001\003\002\003\001;2006 UnitPrice_Val 18.6000
001\003\002\003\001;2006 Quantity_Val 12
001\003\002\003\002;2006 MovementDate_Date 2017-01-13
001\003\002\003\002;2006 UnitPrice_Val 18.7000
001\003\002\003\002;2006 Quantity_Val 20
001\003\001\003\001;2007 MovementDate_Date 2017-02-21
001\003\001\003\001;2007 UnitPrice_Val 13.9000
001\003\001\003\001;2007 Quantity_Val 2
001\003\002\003\001;2007 MovementDate_Date 2017-02-27
001\003\002\003\001;2007 UnitPrice_Val 27.8000
001\003\002\003\001;2007 Quantity_Val 4
Обратите внимание – полученный ключ одинаков для всех полей, которые войдут в соответствующие записи наших целевых таблиц.
3. Финальная обработка.
3.1. Пивотирование
Получив в результате предыдущей трансформации “заготовку” целевой таблицы с исходными данными, разбитыми на тройки <ключ>-<имя поля>-<значение>, мы должны перевести ее в более привычный вид таблицы со множеством полей. Алгоритм этого преобразования очевиден – сначала группировкой значений нашего композитного ключа получаем “скелет” таблицы, потом осуществляем джойны этого “скелета” с таблицей-результатом трансформации по значению композитного ключа. (“Наращиваем мясо”, так сказать.)

То есть получится N соединений “скелета” с подмножествами таблицы- результата трансформации, выделенными по именам полей, где N- количество названий полей в целевой таблице-результате трансформации.

Мы благополучно “донесли” поле AdditionalInfo до данной стадии, закодировав его внутри композитного ключа. Теперь надо освободить наш ключ от этой “обузы” и отрезать AdditionalInfo-часть в новое поле AdditionalInfo_Dim.

Мы соединяли код файла и идентификатор записи, чтобы передать на этап пивотирования ключ одним полем. Для “финального” хранения лучше обратно разделить код файла и иерархический идентификатор на два поля, так будет проще связывать результирующие таблицы друг с другом.

В итоге получатся такие вот

pivot-таблички:MovementReports:
Record_ID File_ID AdditionalInfo_Dim PeriodBegin_Date PeriodEnd_Date
001 2006 Deliveries 2017-01-01 2017-01-31
001 2007 Returns 2017-02-01 2017-02-28
Products:
Record_ID File_ID Supplier_Dim ProductName_Dim
001\003\001 2006 Zaanse Snoepfabriek Chocolade
001\003\002 2006 Mayumis Tofu
001\003\001 2007 Pavlova, Ltd. Pavlova
001\003\002 2007 Formaggi Fortini s.r.l. Mozzarella di Giovanni
MovementDetails:
Record_ID File_ID MovementDate_Date UnitPrice_Val Quantity_Val
001\003\001\003\001 2006 2017-01-03 10.2000 70
001\003\001\003\001 2007 2017-02-21 13.9000 2
001\003\002\003\001 2006 2017-01-09 18.6000 12
001\003\002\003\001 2007 2017-02-27 27.8000 4
001\003\002\003\002 2006 2017-01-13 18.7000 20
3.2. Нормализация
Следующий этап условно можно назвать нормализацией, мы заменим все поля с суффиксом _Dim ссылками на соответствующие справочники, поля с суффиксами _Date и _Val преобразуем, соответственно, в даты и числа. Можно при необходимости и другие суффиксы типов данных использовать, это не догма.

Для каждого поля _Dim мы проверим наличие соответствующего справочника (если справочника нет, то создадим его) и дополним новыми значениями из поля пивотированной таблицы.

В конце процесса перельем данные в финальную структуру хранения, соединив пивотированную таблицу с проапдейченными справочниками по значениям полей.

В итоге мы получим наши целевые таблицы, в которых будет содержаться код файла, иерархический идентификатор, ссылки на значения справочников и преобразованные к нужным типам остальные поля.

В заключение описания процесса
Иерархический идентификатор в каждой целевой таблице дает нам возможность связать эти таблицы друг с другом (причем в любом порядке, при необходимости можно опускать промежуточные звенья). Как отмечалось выше, фиксированный размер элементов иерархического идентификатора дает нам возможность достаточно легко строить выражения для связывания наших целевых таблиц.

Конечно же, при желании можно дополнить структуру таблиц связями через значения привычных автоинкрементных ключей.

Отметим достаточную толерантность описанного подхода к ошибкам и упущениям разработчика (точнее, человека, конфигурирующего маппинг). Если в процессе подготовки трансформации вы упустили нужное поле, или если в схеме файлов произошли изменения типа добавления или переименования полей, которые не были отслежены вовремя – ничего страшного, даже если большой объем информации уже обработан без учета этой ошибки.

Вся информация у нас сохранена и доступна в нашем “первичном” табличном хранилище, поэтому заново парсить исходники не придется.

Можно прописать маппинг полей для «маленькой» трансформации данных – только для нужного нам пропущенного фрагмента. После того как мы “вытащим” недостающий кусок данных, мы сможем достаточно легко “подцепить” его к основному обработанному массиву через связку по иерархическому идентификатору.

Выводы
Как видим, мы с самого начала поместили всю исходную информацию вне зависимости от схем документов в единообразный вид, позволяющий быстро “вытаскивать” нужные данные в режиме ad-hoc.

В процессе дальнейшей обработки ни одно животное не пострадало не возникло необходимости в создании или модификации каких-либо скриптов или объектов типа ETL task, специфичных для структуры исходных XML-файлов.

Конечно, само программное окружение нашего “фреймворка” (инфраструктуру закачки и переливок данных) нужно было создать один раз, но затем интеграция данных любых структур XML сводится к редактированию таблицы маппинга исходного и целевого представлений.

habrahabr.ru

SoftKey.info: Статьи - XML Author

30.10.2008 / Программы / Виктор Деревянко

В 2008 году языку XML исполнилось 10 лет. За эти годы XML прочно обосновался в мире компьютеров в качестве стандартного языка для разметки данных. Возникло огромное множество самых разнообразных отраслевых форматов данных, основанных на XML. Появилась масса технологий, связанных с описанием и обработкой XML-документов. Поддержка XML была встроена во множество средств разработки. XML стал привычен пользователям. И, естественно, возникла потребность в хорошем XML-редакторе.

Поскольку все пользователи имеют разный уровень квалификации и разные задачи, то набор требований к такому редактору может существенно варьироваться. Программисту, скорее всего, потребуется поддержка разнообразных технологий для описания и обработки XML-документов - XSLT, XPath, XML Schema, XQuery и т. п. Техническому писателю, работающему в Docbook или XHTML, нужны удобные средства редактирования текста - подсветка синтаксиса, функция автоматического завершения имен, возможность сворачивать и раскрывать части XML-документа, средства просмотра результатов работы. Одни ищут простой текстовый редактор, другим нужна среда программирования с поддержкой самых современных XML-технологий и форматов. Мир технологий XML настолько большой и разнообразный, что кажется невозможным создать редактор, который охватил бы все возможности и варианты.

Как ни странно, но такой редактор кажется все же есть. Это XML Editor - программный продукт, много лет разрабатываемый компанией SyncRO Soft Ltd. Список возможностей редактора производит внушительное впечатление и занимает несколько страниц текста: кросс-платформенность, поддержка множества современных XML-технологий и парсеров, возможность выполнения XSLT- и FOP-преобразований, редактор XML-схем, отладчик XSLT, расширенная поддержка Docbook и XHTML, несколько режимов редактирования XML-документов, мощный набор дополнительных инструментов и многое другое. Одной из замечательных возможностей XML Editor является поддержка WYSIWYG-режима редактирования XML-документов, когда вы редактируете документ и сразу же видите его в готовом виде.

Сравнительно недавно компания выпустила новый продукт - XML Author. Фактически это упрощенная версия XML Editor, которая, по утверждению разработчиков, обладает практически той же функциональностью при гораздо более низкой цене. По сравнению с XML Editor в XML Author отсутствует ряд инструментов, ориентированных на профессиональных программистов, такие как редактор XML-схем, профайлер XSLT, поддержка синтаксиса Java и т. п. В XML Author упор сделан исключительно на редактирование XML документов и, в частности, на поддержку возможности редактирования XML-документов в режиме WYSIWYG.

Интерфейс

Интерфейс XML Author построен по традиционной схеме, принятой во многих средах разработки. В центре находится рабочая область редактируемого документа. Справа и слева располагаются вспомогательные окна просмотра. Сверху располагаются несколько панелей инструментов. Снизу - информационная панель, на которой отображаются результаты операций, выполненных пользователем, - список ошибок, список строк, найденных при обычном поиске и при поиске с использованием XPath-выражений, и т. д.

Интерфейс XML Author явно рассчитан на экраны с большим разрешением и выглядит несколько перегруженным. Однако не стоит спешить закрывать вспомогательные окна просмотра - многие из них обладают чрезвычайно полезной функциональностью и здорово помогают в работе.

Интерфейс <oXygen> XML Author
Панель Model отображает информацию о текущем узле, указанную в схеме документа, - структуру узла в древовидной форме и документацию к узлу. Панель Attributes отображает полный список атрибутов, которые может содержать текущий узел, и позволяет добавлять, удалять и редактировать атрибуты узла. Панель Elements показывает полный список узлов, который может включать текущий узел. На панели Entities показываются все сущности, которые могут использоваться в документе, в том числе и встроенные - >, < и т. д.

Панель Outline позволяет окинуть взглядом структуру редактируемого документа. Структура отображается в компактной древовидной форме. Детальность отображаемой информации легко настраивается - например, можно скрыть текст, атрибуты, инструкции процессинга. В процессе редактирования документа все внесенные изменения немедленно отражаются на панели Outline, так что сразу видно, как изменилась структура редактируемого XML-документа. С помощью мыши можно перетаскивать узлы, меняя их позицию в документе. Контекстное меню включает несколько полезных функций редактирования узлов. Узел можно закомментировать, добавить в него дочерний узел, добавить новый узел непосредственно перед ним или после него, отредактировать атрибуты узла.

В целом XML Author позволяет открыть не менее 16 вспомогательных окон. Для того чтобы со всем этим многообразием было проще управляться, предусмотрена поддержка двух различных конфигураций рабочего пространства, называемых перспективами. Между перспективами можно переключаться одним кликом мышки. Перспективы носят названия Editor и Database и по умолчанию настроены так, чтобы обеспечить максимальное удобство, соответственно, при редактировании обычных XML-документов и при работе с базами данных. Кроме того, текущую конфигурацию рабочего пространства можно в любой момент сохранить в файл или считать из файла.

XML Author позволяет просматривать и редактировать XML-документ тремя разными способами: в виде текста, в табличном виде и в авторском режиме, поддерживающем технологию WYSIWYG.

Авторский режима редактирования - WYSIWYG

Авторский режим редактирования - это режим, поддерживающий технологию WYSIWYG. Вы редактируете документ и наглядно видите результаты работы. Для того чтобы авторский режим редактирования можно было использовать, для документа должны быть указаны XML-схема и таблица стилей CSS, с помощью которой будет осуществляться его рендеринг. Конечно, для полноценного рендеринга тех же документов DocBook нужно применять специальные XSLT-преобразования. Однако в процессе редактирования этого сделать никак не удастся, поэтому вместо XSLT используются более простые и менее точные таблицы стилей CSS. XML Author поставляется с таблицами стилей, обеспечивающих рендеринг документов в форматах DocBook, DITA, TEI и XHTML.
WYSIWYG редактирования "Author"
Естественно, режим WYSIWYG реализован в XML Author совершенно иначе, чем это сделано в редакторах типа Microsoft Word. Несмотря на то что вы видите перед собой готовый документ, а не просто XML-разметку, вы по-прежнему работаете на уровне ввода и редактирования XML-тегов. XML Author самостоятельно не создает за вас никакой разметки - все теги вводите вы сами. Самое любопытное, при этом разметка в окне редактирования от вас полностью или частично скрыта.

XML Author разделяет весь набор xml-тегов на две категории: теги блоков и встроенные теги. К тегам блоков относятся теги, обозначающие параграфы, заголовки, элементы списков и т. д. Такие блоки текста отображаются обычно в виде отдельных параграфов, и пользователь легко видит, где блок текста начинается, где заканчивается. Встроенные теги - это теги, присутствующие внутри параграфа текста, например теги, обозначающие блоки CDATA. Если такие теги скрыть, то пользователю будет сложно понять, где начинается и где заканчивается область действия тега. По умолчанию XML Author скрывает теги блоков и помечает стрелочками начало и конец каждого встроенного тега - и редактировать удобно, и при просмотре теги не мешают. Всего поддерживается шесть различных режимов отображения тегов, в том числе и те, когда по каждому тегу отображается детальная информация и когда все теги скрыты полностью.

Для того чтобы вставить новый тег в тело документа, нужно нажать "Alt+/". При этом XML Author отобразит список тегов, которые можно вставить в документ. Как только вы выбираете нужный тег, редактор автоматически вставляет открывающий и закрывающий тег и устанавливает курсор внутрь тега. Значения атрибутов тега можно задать через контекстное меню.

Другой вариант ввода тега - нажать Enter. XML Author также отобразит список тегов, но первым в списке будет стоять команда "Split ". Например, если вы редактируете параграф документа Dockbook, то команда будет выглядеть как Split para. По этой команде XML Author завершит текущий тег, создаст новый с таким же именем, но пустой и установит курсор внутрь тега, чтобы вы могли ввести в него текст.

XML Author предоставляет множество средств, позволяющих контролировать скрытую XML-разметку в процессе редактирования в авторском режиме. Если установить курсор непосредственно за тегом, XML Author на короткое время показывает подсказку, указывающую текущую позицию, - родительский тег и теги слева и справа от текущей позиции. Над окном редактирования всегда отображается строчка навигации, показывающая все родительские узлы текущего элемента и позволяющая быстро выделить любой из них. И, конечно же, разметку можно контролировать с помощью окна просмотра Outline - при редактировании документа в авторском режиме оно становится просто неоценимым помощником.

Режимы редактирования Text и Grid

Помимо авторского, XML Author поддерживает два более классических режима редактирования файлов - текстовый и табличный.
Текстовый режим. Разделение окна документа на две части, автопополнение имен, подсветка синтаксиса, подсветка ошибок в тексте
В текстовом режиме файл редактируется как обычный текстовый файл. Разработчики XML Author снабдили текстовый режим гигантским количеством полезных функций, способных упростить работу с XML-документами. Редактор подсвечивает синтаксис, визуализирует ошибки в документе, реализует мощную функцию автозавершения имен, содержит развитые средства рефакторинга, предоставляет возможность скрывать и раскрывать содержимое узлов XML, форматировать XML-документ и приводить к каноническому виду. Очень удобной является возможность разделять область редактирования на две части как горизонтально, так и вертикально, и просматривать рядом различные части одного и того же документа.

В табличном режиме XML-файл отображается в виде таблицы, в которой каждому уровню XML-узлов соответствует отдельный столбец. Повторяющиеся узлы могут отображаться в двух режимах. В режиме Grid XML Author отслеживает повторяющиеся узлы и объединяет их единую таблицу, в режиме Tree все узлы показываются независимо друг от друга. Названия и значения любых узлов и атрибутов можно редактировать прямо в таблице. Для того чтобы изменить структуру документа - добавить или удалить узел, атрибут и т. п., - необходимо подать соответствующую команду через контекстное меню.

Табличный режим "Grid", когда повторяющиеся узлы объединяются в единую таблицу.

Другие возможности.

XML Author унаследовал большую часть функционала XML Editor. В частности, он способен проверять корректность XML-документа на основе указанной XML-схемы. Поддерживаются различные варианты схем XML Schema, Relax NG, Schematron, DTD, NRL, NVDL. Схема может быть указана прямо в документе, а может быть сопоставлена типу документа в настройках программы.

XML Author позволяет выполнять преобразование XML-документов во множество различных форматов - PDF, PS, TXT, XHTML. Если указать подходящее XSLT-преобразование, то возможна трансформацию документов и в другие форматы: HTML Help, JavaHelp, Eclipse Help и т. п.

В состав XML Author входит ряд дополнительных программ, которые могут пригодиться при редактировании XML-файлов: SVN-клиент, программа просмотра файлов SVG, средства для создания электронной подписи, для каноникализации документов XML, программа для сравнения XML-файлов и просмотрщик гигантских XML-файлов размером до 2 Гб.

Встроенная в XML Author поддержка технологии XInclude позволяет редактировать документы, состоящие из нескольких файлов. С помощью XQuery/XPath-запросов можно обращаться с запросами к XML-базам данным.

XML Author предоставляет возможность редактировать файлы, размещенные удаленно, по протоколам FTP, SFTP, HTTP/WebDAV и HTTPS/WebDAV. Также поддерживается редактирование файлов, находящихся в ZIP-архивах, в частности, редактирование документов OOXML и ODF.

XML Author выпускается как отдельный продукт и в качестве плагина к Eclipse. Имеются две версии продукта - Enterprise и Professional, которые различаются в основном возможностями доступа к базам данных.

Резюме

XML Author - это мощный XML-редактор, реализующий возможность редактировать XML-документы в режиме WYSIWYG. Для тех пользователей, которым приходится интенсивно редактировать содержимое файлов в форматах DocBook, DITA, TEI и XHTML, он может оказаться просто незаменимым. Возможностей XML Author, пожалуй, может не хватить только профессиональным программистам, которым необходимы редактор XML-схем, отладчик и профайлер XSTL, поддержка импорта данных в XML из реляционных баз данных и т. д. Им можно порекомендовать обратить внимание на более мощный XML Editor.

Ссылки по теме:

Автор статьи: Виктор Деревянко

www.softkey.info

Convert xml to html

XMLFox is a validating XML editor, available as a desktop application

XMLFox is a graphical XML editing and validation tool for creating valid, well-formed XML documents and/or XSD Schema. It includes an XML View, XML Tree, XML Grid, and XML Script modes for editing, as well as extensive find capabilities for text and XML data. Additional features include XML and Schema Validation, standard editing features, XSD Schema building and more.

XMLFox XML/XSD editor is the Windows based graphical tool for authoring, updating, exploring, well-formedness checking or validating XML documents. XMLFox is an intuitive xml and xml schema(XSD) editor, allows the xml developer to create schemas and show a visual representation of what the xml document will look like for that schema. XMLFox Editor is a delimiter-aware XML data editor with markup-aware cut-and-paste operations, undo, rectangular selection, clear diagnostics and other innovative attractive tools to handle common XML/XSD editing tasks.

Visual XML document editor, suited as a lightweight editor for document framework deployments. It features full XSD validation, but doesn't require a XSD (XML Schema Definition). XMLFox includes XML View, XML Tree, XML Grid, and XML Script modes for editing. Features include drag and drop, and extensive find capabilities on text as well as on XML data.

XMLFox is the tool for beginners to XSD schema (XML Schema Definition) as well as for professionals. It has visual Schema Tree representation that dynamically updates its XSD text. Those that need help in understanding schemas will find the Schema Tree inestimable, and developers maintaining other schemas will save hours of learning time with this XML editor. It is extremely configurable and fast enough.

The XMLFox freeware XML Editor offers: XSD Schema Based Editing

Tag Prompting

XML and Schema Validation

XML View, Tree, Grid, and XML Script editing modes

Standard Editor (Copy/Paste/Find/Replace) traits

XSD Schema building feature

XMLFox XML/XSD editor is "Freeware"
This means that we have made the software available to you for free. You can create, format, map, view, edit an XML/XSD output. It is fully functional! Freeware is the form of software distribution where the author retains copyright of the software, but makes the program available to others at no cost. The XMLFox can not be resold or distributed by others for profit. Everybody is welcome to use XMLFox editor, free of charge, to develop and design XML/XSD for both personal and commercial purposes. That includes commercial enterprises, government agencies and educational institutes.
To be appropriate to various users, an XML file has to conform to a standardized structure. XML XSD Schema is an XML-oriented representation of the structure of an XML document. XML XSD Schema has the power of possibility to provide the standard structure for XML attributes and elements, through its support for namespaces and datatypes. You have to validate your XML file to make sure it fits to your application's needs to prevent any exception in your code. To check if your XML document conforms to an XSD Schema, the document must be validated against that XSD Schema.
XMLFox Advance translates XML data to Excel spreadsheet format where it can be edited, printed, and saved as required in MS Excel interface. Because XMLFox Advance was designed to be a smart one click solution it does not require XML, DTD, XSD Schema expertise or other XML specific knowledge. In XMLFox Advance you can output data to several other data format files. The Editor allows you export XML tables or whole XML to the following data files: TXT; convert into JSON, csv (Comma Separated Value) file, convert into HTML page, create MS Access database, upload XML to SQL Server database, XML to PDF, and create Excel file.

www.xmlfox.com

Как открывать для редактирования файлы формата XML в Excel: несколько простых способов

Зачастую некоторым пользователям приходится иметь дело с файлами XML, представляющими собой данные на основе ввода описания с тегами или настроек программ. Открыть их для редактирования обычным двойным кликом не получается. Связано это с тем, что для ассоциации с расширением не установлено нужное приложение, которое применяется по умолчанию. Но если нужно получить удобочитаемый файл в виде таблицы с возможностью редактирования, можно открыть файл XML в Excel. При этом не нужны никакие конверторы, способные преобразовывать форматы между собой. Единственное замечание: такая возможность имеется только в версиях Office версии 2003 и выше.

Как открыть XML в Excel: способ первый

Рассмотрим импорт данных на основе Excel версии 2016 года. Первый и самый простой способ состоит в том, чтобы изначально запустить программу Excel. При старте приложение вместо приветствия и логотипа выдаст специальное окно входа, в котором слева в меню присутствует строка «Открыть другие книги».

После этого используется пункт обзора, а в новом окне в качестве открываемого формата выбирается XML. После этого привычным методом находим нужный файл и жмем кнопку открытия. В этом случае XML-файл Excel распознает не как текстовый документ, содержащий описания и теги, а как самую обычную таблицу. Естественно, данные можно редактировать по своему усмотрению, но об этом позже.

Как открыть формат XML в Excel: способ второй

Практически ничем не отличается от первого еще один предлагаемый метод. Файл XML в Excel можно открыть из файлового меню или использовать для этого быстрое сочетание Ctrl + O.

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

Открытие XML: способ третий

Есть еще несколько методов открытия файлов формата XML в Excel. Так, в версии программы 2016 года можно использовать меню верхней панели, где выбирается раздел «Данные», а затем нажимается кнопка получения внешних данных.

В выпадающем меню нужно просто выбрать раздел «Из других источников» и в новом меню использовать строку «Из импорта XML». После этого следует стандартная процедура поиска нужного файла с последующим открытием.

Редактирование, сохранение и экспорт

При использовании любого из этих методов пользователь получает структуру таблицы. Редактирование производится точно так же, как это делается со стандартными файлами XLS. Иногда для удобства редактирования и сохранения данных целесообразно использовать меню для разработчиков.

В этом случае можно импортировать не все содержимое XML-файла, а только то, что действительно необходимо, вставляя информацию в соответствующие столбцы и строки, указав в качестве источника данных именно XML-объект. Но для этого необходимо в самой программе выполнить вход в аккаунт, используя свою регистрацию в Microsoft.

Сохранить измененный файл можно сразу же в оригинальном формате, выбрав соответствующий тип из списка. Из файлового меню, если объект был сохранен в «родном» формате Excel, можно выбрать функцию экспорта, нажать на изменение типа файла и установить в качестве конечного формата именно XML.

Если пользователю лень заниматься подобными преобразованиями, или в работе он использует версию Office ниже версии 2003, для открытия данного формата в виде таблицы придется использовать специальный конвертор. Таких программ сейчас предлагается достаточно много. В крайнем случае, если и это не подходит, без проблем можно обратиться к специализированным онлайн-сервисам, на которых формат будет изменен в течение пары десятков секунд. По окончании таких действий останется только загрузить готовый результат в формате XLS на жесткий диск, а потом открыть его в Excel. Впрочем, в большинстве случаев такие действия не требуются, поскольку в том же Office 2003 возможность прямого открытия (импорта) формата XML уже предусмотрена изначально. И думается, мало кто сегодня использует устаревшие офисные продукты Microsoft.

fb.ru

Обзор XML в Excel - Excel

Причины использования XML в Excel

XML является технологией, разработанной для управления структурированными данными и отображения этих данных в виде удобочитаемого текстового файла. Язык XML соответствует отраслевым стандартам и может быть обработан многими базами данных и приложениями. С помощью XML многие разработчики могут создавать собственные настроенные теги, структуры данных и схемы. В целом XML существенно облегчает определение, передачу, проверку и интерпретацию данных в различных базах данных, приложениях и организациях.

Данные XML и файлы схемы

Excel работает преимущественно с двумя типами XML-файлов:

  • файлами данных XML (XML), которые содержат настраиваемые теги и структурированные данные;

  • файлами схемы (XSD), которые содержат теги схемы, устанавливающие определенные правила (например, тип данных и проверку).

В стандарте XML также определяются файлы преобразования XSLT, которые используются для применения стилей и преобразования данных XML в другие форматы. Вы можете использовать эти преобразования перед импортом XML-файлов в Excel и после экспорта XML-файлов из Excel. Если XSLT-файлы связаны с XML-файлами данных, импортированными в Excel, вы можете применить форматирование перед добавлением данных на лист, только открыв XML-файл в Excel с помощью команды Открыть. Прежде чем нажать кнопку Открыть, выберите тип файлов XML (*.XML), чтобы просмотреть XML-файлы в папке.

Ключевые сценарии XML и Excel

С помощью XML и Excel вы можете управлять книгами и данными такими способами, которые ранее были невозможны или представляли трудности. Используя карты XML, вы можете легко добавлять, идентифицировать и извлекать определенные фрагменты бизнес-данных из документов Excel. Например, счет-фактура, содержащий имя и адрес покупателя, или отчет с финансовыми показателями за предыдущий квартал больше не будут статичными отчетами. Эти сведения можно с легкостью импортировать из баз данных и приложений, изменять, а также экспортировать в те или иные базы данных и приложения.

Вот ключевые сценарии, для работы с которыми предназначены возможности XML:

  • расширение функциональных возможностей существующих шаблонов Excel путем сопоставления XML-элементов с существующими ячейками. Это облегчает удаление и добавление данных XML в шаблонах, не изменяя сами шаблоны;

  • использование данных XML в качестве входных данных для существующих моделей вычислений путем сопоставления XML-элементов с существующими листами;

  • импорт файлов данных XML в новую книгу;

  • импорт данных XML из веб-службы на лист Excel;

  • экспорт данных в сопоставленных ячейках в файлы данных XML независимо от других данных в книге.

К началу страницы

Основной процесс использования данных XML в Excel

На следующей схеме показано, как взаимодействуют различные файлы и операции при использовании XML в Excel. Фактически этот процесс состоит из пяти этапов.

Добавление в книгу файла схемы XML (XSD)

Сопоставление элементов схемы XML с отдельными ячейками или XML-таблицами

Импорт XML-файла данных и привязка XML-элементов к сопоставленным ячейкам

Ввод данных, перемещение сопоставленных ячеек и использование функциональных возможностей Excel при сохранении структуры и определений XML.

Экспорт обработанных данных из сопоставленных ячеек в XML-файл данных

Работа с картами XML

Вы можете создать или открыть книгу в Excel, вложить файл схемы XML (XSD) в книгу и использовать область задач Источник XML для сопоставления XML-элементов схемы с отдельными ячейками или таблицами. Выполнив такое сопоставление, вы можете импортировать и экспортировать данные XML в ячейки таблицы и из них соответственно.

При добавлении файла схемы XML (XSD) в книгу создается карта XML. Как правило, карты XML используются для создания сопоставленных ячеек и управления взаимосвязью между такими ячейками и отдельными элементами схемы XML. Кроме того, эти карты используются для привязки содержимого сопоставленных ячеек к элементам схемы при импорте или экспорте файлов данных XML (XML).

Вы можете создавать сопоставленные ячейки двух видов: ячейки с точечным сопоставлением и повторяющиеся ячейки (отображаемые в виде XML-таблиц). Для более гибкой разработки книги вы можете перемещать сопоставленные ячейки в любое место на листе и в любой последовательности, даже отличающейся от последовательности, заданной в схеме XML. Вы также можете выбрать, какие элементы следует сопоставлять.

Важно знать такие правила использования карт XML:

  • книга может содержать одну или несколько карт XML;

  • одновременно можно сопоставить только один элемент с одним расположением в книге;

  • каждая карта XML независима от других, даже если несколько карт XML в одной книге относятся к одной и той же схеме;

  • карта XML может содержать только один корневой элемент. При добавлении схемы, определяющей более одного корневого элемента, появится запрос на выбор корневого элемента, который будет использоваться в новой карте XML.

Использование области задач источника XML

Используйте область задач Источник XML для управления картами XML. Чтобы ее открыть, на вкладке Разработчик в группе XML нажмите Источник. На следующей схеме показаны основные функциональные возможности этой области задач.

1.  Отображение карт XML, добавленных в книгу.

2.  Отображение иерархического списка XML-элементов в текущей карте XML.

3.  Установка параметров при работе с областью задач Источник XML и данными XML (например, параметров, отвечающих за предварительный просмотр данных и управление заголовками).

4.  Открытие диалогового окна Карты XML, которое служит для добавления, удаления или переименования карт XML.

5.  Проверка возможности экспорта данных XML через текущую карту XML.

К началу страницы

Типы элементов и их значки

В следующей таблице приведены все типы XML-элементов, с которыми может работать Excel, и значки, используемые для представления каждого типа элементов.

Тип элемента

Значок

Родительский элемент

Обязательный родительский элемент

Повторяющийся родительский элемент

Обязательный повторяющийся родительский элемент

Дочерний элемент

Обязательный дочерний элемент

Повторяющийся дочерний элемент

Обязательный повторяющийся дочерний элемент

Атрибут

Обязательный атрибут

Простое содержимое в сложной структуре

Обязательное простое содержимое в сложной структуре

К началу страницы

Работа с ячейками с точечным сопоставлением

Ячейка с точечным сопоставлением — это ячейка, сопоставленная с неповторяющимся XML-элементом. Такую ячейку вы можете создать, переместив неповторяющийся XML-элемент из области задач Источник XML в отдельную ячейку листа.

Название перемещаемого на лист неповторяющегося XML-элемента вы можете назначить заголовком сверху или слева от ячейки с точечным сопоставлением при помощи смарт-тега. В качестве заголовка также можно использовать текущее значение ячейки.

Кроме того, в ячейке с точечным сопоставлением вы можете использовать формулу, если ячейка сопоставлена с XML-элементом, который имеет тип данных определения схемы XML (XSD), интерпретируемый Excel как число, дата или время.

К началу страницы

Работа с повторяющимися ячейками в XML-таблицах

По внешнему виду и функциональным возможностям XML-таблицы подобны таблицам Excel. XML-таблицы являются таблицами Excel, сопоставленными с одним или несколькими повторяющимися XML-элементами. Каждый столбец XML-таблицы соответствует XML-элементу.

XML-таблица создается в следующих случаях:

  • при использовании команды Импорт (в группе XML на вкладке Разработчик) для импорта файла данных XML;

  • при использовании команды Открыть в Excel для открытия файла данных XML и дальнейшего выбора параметра XML-таблица в диалоговом окне Открытие XML;

  • при использовании команды Из импорта данных XML (кнопка команды Из других источников в группе Внешние данные на вкладке Данные) для импорта файла данных XML и дальнейшего выбора параметров XML-таблица на существующем листе или Новый лист в диалоговом окне Импорт данных;

  • при перетаскивании на лист одного или нескольких повторяющихся элементов из области задач Источник XML.

При создании XML-таблицы названия XML-элементов автоматически используются в качестве названий столбцов. Вы можете изменить эти названия. Но при экспорте данных из сопоставленных ячеек автоматически будут использоваться исходные названия XML-элементов.

При работе с XML-таблицами полезны два параметра, доступные с помощью кнопки Параметры в области задач Источник XML.

  • Автоматически объединять элементы при сопоставлении.     Если установлен соответствующий флажок, в Excel создается одна XML-таблица из нескольких полей, перенесенных на лист. Этот параметр работает, пока поля перемещаются в одну строку в виде последовательного ряда. Если флажок снят, каждый элемент отображается в виде отдельной XML-таблицы.

  • Данные с заголовками.     Если установлен соответствующий флажок, существующие данные заголовков используются в качестве названий столбцов для повторяющихся элементов, сопоставляемых на листе. Если флажок снят, названия XML-элементов используются в качестве названий столбцов.

С помощью XML-таблиц вы можете импортировать, экспортировать, сортировать, фильтровать и печатать данные, основанные на источнике данных XML. Но существуют некоторые ограничения относительно расположение XML-таблиц на листе.

  • XML-таблицы организованы по строкам, т. е. они растут вниз от строки заголовка. Невозможно добавить новые записи над существующими строками.

  • Невозможно транспонировать XML-таблицу так, чтобы новые записи добавлялись справа.

Вы можете использовать формулы в столбцах, сопоставленных с XML-элементами, которые имеют тип данных определения схемы XML (XSD), интерпретируемый Excel как число, дата или время. В XML-таблице, как и в таблице Excel, формулы копируются вниз по столбцу по мере добавления новых строк.

Обеспечение безопасности карт XML

Карта XML и содержащиеся в ней сведения об источнике данных сохраняются в книге Excel, а не на определенном листе. Злоумышленник может просмотреть эти данные карты с помощью макроса VBA (Microsoft Visual Basic для приложений). Более того, если книга сохранена в файле Excel формата Open XML с поддержкой макросов, данные карты можно просмотреть с помощью Блокнота или другого текстового редактора.

Если вы хотите по-прежнему использовать сведения о карте, но при этом скрыть конфиденциальные данные, вы можете удалить из книги определение источника данных схемы XML, не прекращая экспорт данных XML. Для этого снимите флажок Сохранять определение источника данных в книге в диалоговом окне Свойства карты XML, которое можно открыть, выбрав Свойства карты в группе XML на вкладке Разработчик.

Если удалить лист до удаления карты, сведения карты об источниках данных и, возможно, другие конфиденциальные сведения останутся в книге. При обновлении книги для удаления конфиденциальных сведений обязательно удалите карту XML до удаления листа, чтобы окончательно удалить данные карты из книги.

К началу страницы

Импорт данных XML

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

В диалоговом окне Свойства карты XML (на вкладке Разработчик в группе XML выберите пункт Свойства карты) расположены три параметра, используемые по умолчанию, с помощью которых вы можете управлять привязкой данных XML:

  • Проверять данные на соответствие схеме при импорте и экспорте   . Указывает, следует ли Excel проверять данные по карте XML при импорте. Установите флажок, если нужно, чтобы импортируемые данные XML соответствовали схеме XML.

  • Заменять существующие данные новыми   . Указывает, следует ли заменять данные при импорте. Установите флажок, если необходимо заменять текущие данные новыми (например, если в новом файле данных XML содержатся обновленные данные).

  • Добавлять новые данные в существующие XML-таблицы   . Указывает, следует ли добавлять содержимое источника данных к существующим данным на листе. Используйте этот параметр, если, например, вам необходимо объединить данные из нескольких похожих файлов данных XML в одну XML-таблицу или вы не хотите, чтобы содержимое ячейки с функцией было перезаписано.

При импорте данных XML вам может понадобиться заменить некоторые сопоставленные ячейки. Например, если сопоставленные ячейки содержат формулы и эти формулы не следует заменять при импорте XML-файла. Эту проблему можно решить двумя способами:

  • перед импортом данных XML отмените сопоставление элементов, которые не следует заменять. По завершении импорта данных XML вы можете повторно сопоставить XML-элементы ячейкам с формулами, чтобы экспортировать в файл данных XML результаты, полученные после применения формул;

  • создайте две карты XML на основе одной схемы XML. Используйте одну карту XML для импорта данных XML. В этой "карте импорта" не сопоставляйте элементы с ячейками, содержащим формулы или другие данные, которые не следует заменять. Другую карту XML используйте для экспорта данных. В этой "карте экспорта" сопоставьте с XML-файлом элементы, которые необходимо экспортировать.

Примечание : Возможность импорта данных XML из веб-службы с помощью файла подключения службы извлечения данных (UXDC) для подключения к источнику данных больше не поддерживается в пользовательском интерфейсе более новых версий, чем Excel 2003. Если вы откроете книгу, созданную в Excel 2003, вы сможете только просмотреть их, но не сможете изменить или обновить исходные данные.

Работа с полученной схемой

При импорте данных XML без добавления соответствующей схемы XML для создания карты XML Excel пытается получить схему, основываясь на тегах, определенных в файле данных XML. Полученная схема хранится в книге и позволяет работать с данными XML, даже если файл схемы XML не связан с книгой.

При работе с импортированными данными XML, которые имеют полученную схему, вы можете настроить область задач Источник XML. Выберите параметр Просмотреть данные в области задач, нажав кнопку Параметры, чтобы отобразить первую строку данных в качестве образца в списке элементов, если вы импортировали данные XML, связанные с картой XML, во время текущего сеанса Excel.

Полученную схему Excel невозможно экспортировать как отдельный файл данных схемы XML (XSD). Несмотря на наличие редакторов схем XML и других методов создания файлов схем XML, они могут оказаться недоступными или неудобными в работе. Вместо них вы можете воспользоваться надстройкой Excel 2003 XML Tools 1.1, с помощью которой можно создавать файлы схемы на основе карты XML. Подробнее см. в статье Использование надстройки Excel 2003 XML Tools 1.1 (на английском языке).

Экспорт данных XML

Экспорт данных XML осуществляется путем экспорта содержимого сопоставленных ячеек листа. При экспорте данных в Excel применяются такие правила для определения данных и способов их сохранения:

  • пустые элементы не создаются при наличии пустых ячеек для дополнительного элемента, но они создаются при наличии пустых ячеек для обязательного элемента;

  • запись данных производится в кодировке UTF-8;

  • все пространства имен определяются в корневом XML-элементе;

  • существующие префиксы пространства имен перезаписываются. По умолчанию пространству имен назначается префикс ns0. Последующим пространствам имен присваиваются префиксы ns1, ns2 и т. д. до ns<count>, где <count> — число пространств имен, указанное в XML-файле;

  • узлы комментариев не сохраняются.

В диалоговом окне Свойства карты XML (нажмите Свойства карты в группе XML на вкладке Разработчик) выберите параметр Проверять данные на соответствие схеме при импорте и экспорте (используется по умолчанию), чтобы указать, следует ли Excel проверять данные по карте XML при экспорте. Включите этот параметр, чтобы все экспортируемые данные XML точно соответствовали схеме XML.

Использование файла Excel формата Office Open XML с поддержкой макросов

Книгу Excel можно сохранять в различных форматах файла, включая файлы Excel формата Office Open XML (XLSM) с поддержкой макросов. Excel содержит схему XML, определяющую содержимое книги Excel, в том числе теги XML, в которых хранятся все сведения книги (например, данные и свойства), а также всю структуру книги. Файл Excel формата Office XML с поддержкой макросов может применяться в пользовательских приложениях. Например, разработчики могут создать приложение, которое выполняет поиск данных в нескольких книгах, сохраненных в этом формате, и создает систему отчетов на основании полученных данных.

К началу страницы

support.office.com


Смотрите также