Структура документа WordprocessingML
В этом разделе обсуждается базовая структура документа WordprocessingML и рассматриваются важные классы пакета Open XML SDK, чаще всего используемые для создания документов WordprocessingML.
Базовая структура документа WordProcessingML состоит из <document>
элементов и <body>
, за которыми следуют один или несколько элементов уровня блока, таких как <p>
, который представляет абзац. Абзац содержит один или несколько <r>
элементов. Представляет <r>
собой область текста с общим набором свойств, таких как форматирование. Выполнение содержит один или несколько <t>
элементов. Элемент <t>
содержит диапазон текста.
Важные части WordprocessingML
API пакета SDK Open XML предоставляет строго типизированные классы в пространстве имен DocumentFormat.OpenXML.WordprocessingML, соответствующие элементам WordprocessingML .
В следующей таблице перечислены некоторые важные элементы WordprocessingML , часть пакета документа WordprocessingML , которой соответствует элемент (где это применимо), и управляемый класс, представляющий элемент в API пакета SDK Open XML.
Часть пакета | Элемент WordprocessingML | Класс пакета SDK Open XML | Описание |
---|---|---|---|
Основной документ | document | Document | Корневой элемент основной части документа. |
Комментарии | comments | Comments | Корневой элемент для части комментариев. |
Параметры документа | settings | Settings | Корневой элемент для части параметров документа. |
Концевые сноски | endnotes | Endnotes | Корневой элемент для части концевых сносок. |
Нижний колонтитул | ftr | Footer | Корневой элемент для части нижнего колонтитула. |
Сноски | footnotes | Footnotes | Корневой элемент для части сносок. |
Документ глоссария | glossaryDocument | GlossaryDocument | Корневой элемент для части документа глоссария. |
Заголовок | hdr | Header | Корневой элемент для части верхнего колонтитула. |
Определения стилей | styles | Styles | Корневой элемент для части определения стилей. |
Простейший случай документа
Документ WordprocessingML организован в виде статей. Статья это область содержимого в документе WordprocessingML. В WordprocessingML имеются следующие статьи:
comment
концевая сноска
нижний колонтитул
сноска
фрейм, документ глоссария
заголовок
основная статья
вложенный документ
текстовое поле
Чтобы документ WordprocessingML был допустимым, в нем необязательно должны присутствовать все статьи. Для самого простого допустимого документа WordprocessingML требуется только одна статья основная статья документа. В WordprocessingML основная статья документа представлена основной частью документа. Чтобы создать допустимый документ WordprocessingML в коде, как минимум добавьте в документ основную часть документа.
В следующей выдержке из стандарта ISO/IEC 29500 представляются элементы WordprocessingML, которые должны находиться в основной части документа, чтобы реализовать базовый сценарий работы с документом.
Основная статья документа простейшего документа WordprocessingML содержит следующие XML-элементы:
document
— корневой элемент main части документа WordprocessingML, которая определяет main историю документа.body
— контейнер для сбора блочных структур, составляющих main историю.p
— абзац.r
— запуск.t
— диапазон текста.
© ISO/IEC 29500: 2016
Пример кода Open XML SDK
Следующий код использует пакет SDK Open XML для создания простого документа WordprocessingML , содержащего текст, передаваемый в качестве второго параметра.
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
static void CreateWordDoc(string filepath, string msg)
{
using (WordprocessingDocument doc = WordprocessingDocument.Create(filepath, DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
{
// Add a main document part.
MainDocumentPart mainPart = doc.AddMainDocumentPart();
// Create the document structure and add some text.
mainPart.Document = new Document();
Body body = mainPart.Document.AppendChild(new Body());
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
// String msg contains the text from the msg parameter"
run.AppendChild(new Text(msg));
}
}
Создаваемый элемент WordprocessingML
После запуска кода пакета SDK Open XML в предыдущем разделе для создания документа можно просмотреть содержимое пакета .zip, чтобы просмотреть XML-код WordprocessingML . To view the .zip package, rename the extension on the minimum document from .docx to .zip. ZIP-пакет содержит составные части документа. В этом примере, так как код создал простейший документ WordprocessingML, файл содержит только одну часть — основную часть документа. На приведенном ниже рисунке показана структура папки word в ZIP-пакете простейшего документа.Замещающее изображениеФайл document.xml соответствует основной части документа WordprocessingML. Именно эта часть содержит основной текст документа. Следующий XML-код создается в файле document.xml при запуске кода пакета SDK Open XML в предыдущем разделе.
<?xml version="1.0" encoding="utf-8"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:p>
<w:r>
<w:t>The text passed as the second parameter goes here</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
Типичный случай документа
Обычный документ вряд ли будет пустым, базовым документом. Типовой документ может содержать, например комментарии, верхние и нижние колонтитулы, сноски и концевые сноски. Каждая из этих дополнительных частей содержится в ZIP-архиве документа WordprocessingML.
На следующем рисунке показаны многие из частей, которые находятся в типовом документе.
Рис. 1. Типичная структура документа