Поделиться через


Структура документа 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. Типичная структура документа

Структура документа WordprocessingML