Progress-servis55.ru

Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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.

XML для начинающих

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

В этой статье

Пометки, разметка и теги

Для понимания языка XML он помогает понять смысл пометки данных. Люди создали документы для протяжении столетий, и пока они не пометили их в течение всего времени. Например, преподаватели замечают все время на учебные материалы для учащихся. Они указывают слушателям на то, что вы можете перемещать параграфы, прояснить предложения, исправлять опечатки и т. д. Пометка документа определяет структуру, значение и визуальное представление данных в документе. Если вы когда-нибудь использовали функцию «исправления» в Microsoft Office Word, вы использовали заметку, которая была установлена на компьютере.

В мире информационных технологий термин «пометка» превратился в термин «разметка». При разметке используются коды, называемые тегами (или иногда токенами), для определения структуры, визуального оформления и — в случае XML — смысла данных.

Текст этой статьи в формате HTML является хорошим примером применения компьютерной разметки. Если в Microsoft Internet Explorer щелкнуть эту страницу правой кнопкой мыши и выбрать команду Просмотр HTML-кода, вы увидите читаемый текст и теги HTML, например

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

) и местоположение рисунков.

Отличительные черты XML

Документы в форматах HTML и XML содержат данные, заключенные в теги, но на этом сходство между двумя языками заканчивается. В формате HTML теги определяют оформление данных — расположение заголовков, начало абзаца и т. д. В формате XML теги определяют структуру и смысл данных — то, чем они являются.

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

Учитывайте при работе следующее:

HTML нельзя использовать вместо XML. Однако XML-данные можно заключать в HTML-теги и отображать на веб-страницах.

Возможности HTML ограничены предопределенным набором тегов, общим для всех пользователей.

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

Как видно, по тегам XML понятно, какие данные вы просматриваете. Например, ясно, что это данные о коте, и можно легко определить его имя, возраст и т. д. Благодаря возможности создавать теги, определяющие почти любую структуру данных, язык XML является расширяемым.

Но не путайте теги в данном примере с тегами в HTML-файле. Например, если приведенный выше текст в формате XML вставить в HTML-файл и открыть его в браузере, то результаты будут выглядеть следующим образом:

Izzy Siamese 6 yes no Izz138bod Colin Wilcox

Веб-браузер проигнорирует теги XML и отобразит только данные.

Правильно сформированные данные

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

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

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

Читать еще:  Как сделать пароль на документ word

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

Схемы

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

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

Схемы могут быть сложными, и в данной статье невозможно объяснить, как их создавать. (Кроме того, скорее всего, в вашей организации есть ИТ-специалисты, которые знают, как это делать.) Однако полезно знать, как выглядят схемы. Следующая схема определяет правила для набора тегов . :

Не беспокойтесь, если в примере не все понятно. Просто обратите внимание на следующее:

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

Объявления являются мощным средством управления структурой данных. Например, объявление означает, что теги, такие как и
, должны следовать в указанном выше порядке. С помощью объявлений можно также проверять типы данных, вводимых пользователем. Например, приведенная выше схема требует ввода положительного целого числа для возраста кота и логических значений (TRUE или FALSE) для тегов ALTERED и DECLAWED.

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

Преобразования

Как говорилось выше, XML также позволяет эффективно использовать и повторно использовать данные. Механизм повторного использования данных называется преобразованием XSLT (или просто преобразованием).

Вы (или ваш ИТ-отдел) можете также использовать преобразования для обмена данными между серверными системами, например между базами данных. Предположим, что в базе данных А данные о продажах хранятся в таблице, удобной для отдела продаж. В базе данных Б хранятся данные о доходах и расходах в таблице, специально разработанной для бухгалтерии. База данных Б может использовать преобразование, чтобы принять данные от базы данных A и поместить их в соответствующие таблицы.

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

В следующем примере кода показан один из способов написания преобразования. Данные>

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

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

XML в системе Microsoft Office

Профессиональные выпуски Office обеспечивают всестороннюю поддержку XML. Начиная с Microsoft Office 2007, в Microsoft Office используются форматы файлов на основе XML, например DOCX, XLSX и PPTX. Поскольку XML-данные хранятся в текстовом формате вместо запатентованного двоичного формата, ваши клиенты могут определять собственные схемы и использовать ваши данные разными способами без лицензионных отчислений. Для получения дополнительных сведений о новых форматах ознакомьтесь с разрешениями в разделе форматы файлов Open XML и расширение имени файла. К другим преимуществам относятся:

Меньший размер файлов. Новый формат использует ZIP и другие технологии сжатия, поэтому размер файла на 75 процентов меньше, чем в двоичных форматах, применяемых в более ранних версиях Office.

Более простое восстановление данных и большая безопасность. Формат XML может быть легко прочитан пользователем, поэтому если файл поврежден, его можно открыть в Блокноте или другой программе для просмотра текста и восстановить хотя бы часть данных. Кроме того, новые файлы более безопасны, потому что они не могут содержать код Visual Basic для приложений (VBA). Если новый формат используется для создания шаблонов, то элементы ActiveX и макросы VBA находятся в отдельном, более безопасном разделе файла. Кроме того, можно удалять личные данные из документов с помощью таких средств, как инспектор документов. Дополнительные сведения об использовании инспектора документов можно найти в статье Удаление скрытых и персональных данных путем проверки документов.

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

Включение средств XML в Office

По умолчанию вкладка «Разработчик» не отображается. Ее необходимо добавить на ленту для использования команд XML в Office.

В Office 2016, Office 2013 или Office 2010: Отображение вкладки «Разработчик».

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

Освоение XML в среде Microsoft Word 2003

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

Читать еще:  Шаблоны word 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.

В 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-документы, соответствующие выбранным вами стандартам.

Как я разбирал docx с помощью XSLT

Задача обработки документов в формате 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 (фрагмент) текста
  • — сам текст
  • — описание страницы

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

word/_rels/document.xml.rels

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

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

Читать еще:  Конец абзаца в word

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 выглядит вот так:

Видно, что часть изменений связана с тем, что 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.

Ссылка на основную публикацию
Adblock
detector