Как вставить xml в word

Как вставить xml в word

Содержание статьи

  • Как xml перевести в word
  • Как открыть документ формата docx
  • Как создать xml документ

Перевести xml в doc можно несколькими способами:

  • используя возможности программы word;
  • при помощи специальных онлайн-сервисов.

Подробнее разберем каждый из способов.

С помощью программы Word

Первым делом понадобится запустить Word. Сделать это можно через ярлык на рабочем столе или меню "Пуск". Затем необходимо открыть нужный xml файл. Чтобы сделать это, надо:

  1. Нажать на кнопку "Файл", расположенную в верхней левой части экрана.
  2. В открывшемся меню кликнуть на пункт "Открыть". Справа появится изображение папки с надписью "Обзор". При нажатии на нее откроется корневой каталог, в котором нужно найти xml-файл.

После этого потребуется снова кликнуть на кнопку "Файл" и щелкнуть мышкой на пункт "Сохранить как". Затем пользователь должен указать место для сохранения и в поле "Тип файла" выбрать "Документ word".

В указанном месте на компьютере появится файл с расширением doc. Теперь его можно спокойно открывать программой word или другим текстовым редактором.

При помощи онлайн-сервисов

Сделать это можно на специальных сайтах — конвертерах. Они предназначены для трансформации файлов из одного формата в другой. Таких сайтов в сети существует огромное множество, вот лишь некоторые из них:

  • onlineconvertfree.com;
  • coolutils.com;
  • online-converting.ru;
  • zamzar.com.

Рассмотрим процесс конвертации на примере сайте onlineconvertfree.com. Для этого потребуется зайти на ресурс и кликнуть по надписи "Конвертировать в", что находится сверху. Откроется выпадающее меню, в котором необходимо нажать на "Документы конвертер". Пользователь попадет на страницу, где расположена синяя кнопка "Выберите файл"

Дальнейший порядок действий будет выглядеть следующим образом:

  1. Нажать на кнопку и загрузить xml-файл.
  2. В появившемся окне выбрать пункт "в doc".
  3. Подождать, пока закончится процесс конвертации. Его скорость зависит от размера файла.
  4. Скачать готовый файл на компьютер.

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

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

Задача обработки документов в формате docx, а также таблиц xlsx и презентаций pptx является весьма нетривиальной. В этой статье расскажу как научиться парсить, создавать и обрабатывать такие документы используя только XSLT и ZIP архиватор.

Зачем?

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

  • библиотеки может просто не существовать
  • в проекте не нужен ещё один чёрный ящик
  • ограничения библиотеки по платформам и т.п.
  • проблемы с лицензированием
  • скорость работы

Поэтому в этой статье будем использовать только самые базовые инструменты для работы с docx документом.

Структура docx

Для начала разоберёмся с тем, что собой представляет docx документ. docx это zip архив который физически содержит 2 типа файлов:

  • xml файлы с расширениями xml и rels
  • медиа файлы (изображения и т.п.)

А логически — 3 вида элементов:

  • Типы (Content Types) — список типов медиа файлов (например png) встречающихся в документе и типов частей документов (например документ, верхний колонтитул).
  • Части (Parts) — отдельные части документа, для нашего документа это document.xml, сюда входят как xml документы так и медиа файлы.
  • Связи (Relationships) идентифицируют части документа для ссылок (например связь между разделом документа и колонтитулом), а также тут определены внешние части (например гиперссылки).

Они подробно описаны в стандарте ECMA-376: Office Open XML File Formats, основная часть которого — PDF документ на 5000 страниц, и ещё 2000 страниц бонусного контента.

Минимальный docx

Простейший docx после распаковки выглядит следующим образом

Давайте посмотрим из чего он состоит.

[Content_Types].xml

Находится в корне документа и перечисляет MIME типы содержимого документа:

_rels/.rels

Главный список связей документа. В данном случае определена всего одна связь — сопоставление с идентификатором rId1 и файлом word/document.xml — основным телом документа.

word/document.xml

  • — сам документ
  • — тело документа
  • — параграф
  • — run (фрагмент) текста
  • — сам текст
  • — описание страницы
Читайте также:  Wmshuasetup exe на русском

Если открыть этот документ в текстовом редакторе, то увидим документ из одного слова Test .

word/_rels/document.xml.rels

Здесь содержится список связей части word/document.xml . Название файла связей создаётся из названия части документа к которой он относится и добавления к нему расширения rels . Папка с файлом связей называется _rels и находится на том же уровне, что и часть к которой он относится. Так как связей в word/document.xml никаких нет то и в файле пусто:

Даже если связей нет, этот файл должен существовать.

docx и Microsoft Word

docx созданный с помощью Microsoft Word, да в принципе и с помощью любого другого редактора имеет несколько дополнительных файлов.

Вот что в них содержится:

  • docProps/core.xml — основные метаданные документа согласно Open Packaging Conventions и Dublin Core [1], [2].
  • docProps/app.xml — общая информация о документе: количество страниц, слов, символов, название приложения в котором был создан документ и т.п.
  • word/settings.xml — настройки относящиеся к текущему документу.
  • word/styles.xml — стили применимые к документу. Отделяют данные от представления.
  • word/webSettings.xml — настройки отображения HTML частей документа и настройки того, как конвертировать документ в HTML.
  • word/fontTable.xml — список шрифтов используемых в документе.
  • word/theme1.xml — тема (состоит из цветовой схемы, шрифтов и форматирования).

В сложных документах частей может быть гораздо больше.

Реверс-инжиниринг docx

Итак, первоначальная задача — узнать как какой-либо фрагмент документа хранится в xml, чтобы потом создавать (или парсить) подобные документы самостоятельно. Для этого нам понадобятся:

  • Архиватор zip
  • Библиотека для форматирования XML (Word выдаёт XML без отступов, одной строкой)
  • Средство для просмотра diff между файлами, я буду использовать git и TortoiseGit

Инструменты

Также понадобятся скрипты для автоматического (раз)архивирования и форматирования XML.
Использование под Windows:

  • unpack file dir — распаковывает документ file в папку dir и форматирует xml
  • pack dir file — запаковывает папку dir в документ file

Использование под Linux аналогично, только ./unpack.sh вместо unpack , а pack становится ./pack.sh .

Использование

Поиск изменений происходит следующим образом:

  1. Создаём пустой docx файл в редакторе.
  2. Распаковываем его с помощью unpack в новую папку.
  3. Коммитим новую папку.
  4. Добавляем в файл из п. 1. изучаемый элемент (гиперссылку, таблицу и т.д.).
  5. Распаковываем изменённый файл в уже существующую папку.
  6. Изучаем diff, убирая ненужные изменения (перестановки связей, порядок пространств имён и т.п.).
  7. Запаковываем папку и проверяем что получившийся файл открывается.
  8. Коммитим изменённую папку.

Пример 1. Выделение текста жирным

Посмотрим на практике, как найти тег который определяет форматирование текста жирным шрифтом.

  1. Создаём документ bold.docx с обычным (не жирным) текстом Test.
  2. Распаковываем его: unpack bold.docx bold .
  3. Коммитим результат.
  4. Выделяем текст Test жирным.
  5. Распаковываем unpack bold.docx bold .
  6. Изначально diff выглядел следующим образом:


Рассмотрим его подробно:

docProps/app.xml

Изменение времени нам не нужно.

docProps/core.xml

Изменение версии документа и даты модификации нас также не интересует.

word/document.xml

Изменения в w:rsidR не интересны — это внутренняя информация для Microsoft Word. Ключевое изменение тут

в параграфе с Test. Видимо элемент и делает текст жирным. Оставляем это изменение и отменяем остальные.

word/settings.xml

Также не содержит ничего относящегося к жирному тексту. Отменяем.

7 Запаковываем папку с 1м изменением (добавлением ) и проверяем что документ открывается и показывает то, что ожидалось.
8 Коммитим изменение.

Пример 2. Нижний колонтитул

Теперь разберём пример посложнее — добавление нижнего колонтитула.
Вот первоначальный коммит. Добавляем нижний колонтитул с текстом 123 и распаковываем документ. Такой diff получается первоначально:

Сразу же исключаем изменения в docProps/app.xml и docProps/core.xml — там тоже самое, что и в первом примере.

[Content_Types].xml

footer явно выглядит как то, что нам нужно, но что делать с footnotes и endnotes? Являются ли они обязательными при добавлении нижнего колонтитула или их создали заодно? Ответить на этот вопрос не всегда просто, вот основные пути:

  • Посмотреть, связаны ли изменения друг с другом
  • Экспериментировать
  • Ну а если совсем не понятно что происходит:


Идём пока что дальше.

word/_rels/document.xml.rels

Изначально diff выглядит вот так:

Читайте также:  Maxmedia urc 2010 инструкция

Видно, что часть изменений связана с тем, что Word изменил порядок связей, уберём их:

Опять появляются footer, footnotes, endnotes. Все они связаны с основным документом, перейдём к нему:

word/document.xml

Редкий случай когда есть только нужные изменения. Видна явная ссылка на footer из sectPr. А так как ссылок в документе на footnotes и endnotes нет, то можно предположить что они нам не понадобятся.

word/settings.xml

А вот и появились ссылки на footnotes, endnotes добавляющие их в документ.

word/styles.xml

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

word/footer1.xml

Посмотрим теперь собственно на сам нижний колонтитул (часть пространств имён опущена для читабельности, но в документе они должны быть):

Тут виден текст 123. Единственное, что надо исправить — убрать ссылку на .

В результате анализа всех изменений делаем следующие предположения:

  • footnotes и endnotes не нужны
  • В [Content_Types].xml надо добавить footer
  • В word/_rels/document.xml.rels надо добавить ссылку на footer
  • В word/document.xml в тег надо добавить

Уменьшаем diff до этого набора изменений:

Затем запаковываем документ и открываем его.
Если всё сделано правильно, то документ откроется и в нём будет нижний колонтитул с текстом 123. А вот и итоговый коммит.

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

Практика

Найдя интересующее нас изменение, логично перейти к следующему этапу, это может быть что-либо из:

  • Создания docx
  • Парсинг docx
  • Преобразования docx

Тут нам потребуются знания XSLT и XPath.

Давайте напишем достаточно простое преобразование — замену или добавление нижнего колонтитула в существующий документ. Писать я буду на языке Caché ObjectScript, но даже если вы его не знаете — не беда. В основном будем вызовать XSLT и архиватор. Ничего более. Итак, приступим.

Алгоритм

Алгоритм выглядит следующим образом:

  1. Распаковываем документ.
  2. Добавляем наш нижний колонтитул.
  3. Прописываем ссылку на него в [Content_Types].xml и word/_rels/document.xml.rels .
  4. В word/document.xml в тег добавляем тег или заменяем в нём ссылку на наш нижний колонтитул.
  5. Запаковываем документ.

Распаковка

В Caché ObjectScript есть возможность выполнять команды ОС с помощью функции $zf(-1, oscommand). Вызовем unzip для распаковки документа с помощью обёртки над $zf(-1):

Создаём файл нижнего колонтитула

На вход поступает текст нижнего колонтитула, запишем его в файл in.xml:

В XSLT (файл — footer.xsl) будем создавать нижний колонтитул с текстом из тега xml (часть пространств имён опущена, вот полный список):

В результате получится файл нижнего колонтитула footer0.xml :

Добавляем ссылку на колонтитул в список связей основного документа

Сссылки с идентификатором rId0 как правило не существует. Впрочем можно использовать XPath для получения идентификатора которого точно не существует.
Добавляем ссылку на footer0.xml c идентификатором rId0 в word/_rels/document.xml.rels :

Прописываем ссылки в документе

Далее надо в каждый тег добавить тег или заменить в нём ссылку на наш нижний колонтитул. Оказалось, что у каждого тега может быть 3 тега — для первой страницы, четных страниц и всего остального:

Добавляем колонтитул в [Content_Types].xml

Добавляем в [Content_Types].xml информацию о том, что /word/footer0.xml имеет тип application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml :

В результате

Весь код опубликован. Работает он так:

  • in.docx — исходный документ
  • out.docx — выходящий документ
  • TEST — текст, который добавляется в нижний колонтитул

Выводы

Используя только XSLT и ZIP можно успешно работать с документами docx, таблицами xlsx и презентациями pptx.

То, с чем легко справляются машины, зачастую сопряжено с трудностями для человека, и в этом смысле XML (eXtensible Markup Language — расширяемый язык разметки) не исключение. Однако XML позволяет многократно использовать документы и контент, а также автоматизировать деловые процедуры, поэтому накопление опыта и знаний в этой области оправдает себя. К счастью, задача существенно упростилась с появлением версии Microsoft Office 2003. Итак, приступим к делу.

Откройте Word 2003 и наберите в новом файле какую-нибудь строку текста. Сохраните его с помощью команды File / Save As (Файл / Сохранить как), но в качестве типа документа задайте XML. С помощью Проводника (Explorer) укажите местонахождение файла, щелкните на нем правой клавишей мыши, выберите вариант Open With (Открыть как), после чего обратитесь к редактору Notepad. В результате вы обнаружите, что в Word 2003 работать с XML можно на любом уровне. Для документов Word, сохраненных в XML-формате, применяется подготовленная в Microsoft схема под названием WordML (обратите внимание на третью строку своего XML-файла), которая описывает организацию XML-файла и набор допустимых тегов. (Все схемы определяют форму данных, порядок элементов или тегов, сколько тегов требуется и есть ли в них необходимость. Подробная информация о схемах изложена в статье «Structuring XML Documents» (Структурирование XML-документов) по адресу http://go.pcmag.com/structuringxml.) Просмотрев свой WordML-документ, вы увидите, что вся информация, касающаяся документа Word, — шрифты, стили, индивидуальные параметры и сам текст — хранится между XML-тегами w:wordDocument и /w: wordDocument.

Читайте также:  Esxi не видит диски

В WordML представлена лишь одна из схем, но для формирования данных в соответствии с определенными требованиями понадобятся другие схемы. К счастью, Word 2003 позволяет импортировать XSD-файлы, необходимые для построения и редактирования новых XML-документов. Допустим, что ваша организация планирует обеспечить пользователям возможность импорта материалов с новостями в XML-формате, подходящем для системы управления контентом. Воспользуемся файлом под названием Article.xsd, с выбранной нами готовой схемой и соответствующим его структуре образцом XML-документа под названием SampleArticle.xml. (См. подробности по адресу http://go.pcmag.com/samplexmldocs.) Этот информационный объект содержит поля, с обработкой которых справляется система управления онлайновой информацией, такие, как заголовки новостей, ключевые слова и фотографии.

Необходимо «сообщить» Word 2003, что будет использоваться выбранный нами специальный XSD-файл. Обратимся к команде File / New (Файл / Создать) и выберем вариант XML-документ. В правой панели XML Structure щелкнем на пункте Templates and Add-ins (Шаблоны и надстройки), затем на вкладке new XML Schema. Щелкнем после этого на кнопке Add Schema и найдем файл Article.xsd. И наконец, выберем для этой схемы URI-имя. В данном случае тип будет у нас обозначаться как «Article», что позволит «зарегистрировать» в Word новый XML-тип.

Начать работу с XML лучше всего с образца документа того типа, который вы хотели бы создать и который соответствует вашему XSD-файлу, например такого, как выбранный нами SampleArticle.xml. В качестве базового XML-редактора Word 2003 отлично справляется со своими функциями, ярко выделяя XML-теги с маркерами полей. Щелкнув на любом из полей, можно быстро выделить внутреннее содержимое любого тега или поля (вместе с вложенными полями и имеющимися в них иерархическими тегами). Можно скрыть эти поля или показать их на экране клавишной комбинацией Ctrl-Shift-X, а также добавлять или удалять теги.

После щелчка правой клавишей мыши и выбора пункта View XML Structure Word проанализирует известные теги в файле с XML-документом и выведет их список в правой части экрана в панели XML Structure.

Если XML-элементы в документе соответствуют XSD-схеме, файл называют допустимым XML-документом. Мы не рекомендуем наспех вводить в Word 2003 новые теги, так как это может нанести вред имеющемуся допустимому XML-документу. Но, если ваш XML-документ достаточно простой и у вас есть справочная распечатка допустимых в нем тегов и полей, вы, наверное, сможете размечать содержимое, исходя из особенностей этой XML-структуры.

Еще один аспект XML-конструкции — XML-атрибуты: если щелкнуть правой клавишей мыши на каком-либо поле, а затем выбрать пункт Attributes, можно будет просматривать и редактировать эти связанные с полями дополнительные элементы. Но широкое использование атрибутов в XML-схеме затрудняет рядовому пользователю редактирование XML-материалов.

На рисунке показан образец файла с XML-материалом, сформированного по такой же XSD-схеме, но содержащего только заполнитель. Создавая по XSD-«шаблону» подобный этому образец документа с заполнителем в каждом поле, вы превращаете обычную программу Word 2003 в редактор форм на базе XML. Вполне успешно применять Word в качестве инструмента ввода данных способен практически любой пользователь. Достаточно лишь ввести необходимые данные на место текста-заполнителя в соответствующем поле в рамках каждого тега (и сохранить файл под новым именем). Заполняя требующейся информацией поля между тегами, можно создавать новые XML-документы, соответствующие выбранным вами стандартам.

Ссылка на основную публикацию
Как влияют магнитные бури на клев рыбы
Здравствуйте, уважаемые читатели сайта Рыбалка.com Сегодня мы затронем одну очень интересную и спорную тему – влияние магнитного поля на повадки...
Как в питоне создать окно
В этом уроке рассмотрим основные настройки окон, в которых располагаются виджеты. Обычные окна в tkinter порождаются не только от класса...
Как в эксель сделать страницу формата а4
Как распечатать таблицу в excel на весь лист а4? Например, если шаблон игры выложен именно в excel, эта информация вам...
Как вставить xml в word
Содержание статьи Как xml перевести в word Как открыть документ формата docx Как создать xml документ Перевести xml в doc...
Adblock detector