⌕ Поиск по атласу

Неофициальный полный русский перевод · Structure of a WordprocessingML document

Structure of a WordprocessingML document · Структура документа WordprocessingML

Structure of a WordprocessingML document

Карточка документа · Архив принятого перевода · Официальный источник

Содержание

Неофициальный русский перевод. Первоисточник: Microsoft Learn.

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

В этом разделе рассматривается базовая структура документа WordprocessingML и приводится обзор важных классов Open XML SDK, которые наиболее часто используются для создания документов WordprocessingML.

Базовая структура документа WordProcessingML состоит из элементов <document> и <body>, за которыми следуют один или несколько элементов блочного уровня, таких как <p>, представляющий абзац. Абзац содержит один или несколько элементов <r>. <r> означает фрагмент текста с общими свойствами — область текста с общим набором свойств, например форматированием. Фрагмент текста с общими свойствами содержит один или несколько элементов <t>. Элемент <t> содержит диапазон текста.

Важные части пакета WordprocessingML

API Open XML SDK предоставляет строго типизированные классы в пространстве имён DocumentFormat.OpenXML.WordprocessingML, соответствующие элементам WordprocessingML.

В следующей таблице перечислены некоторые важные элементы WordprocessingML, часть пакета документа WordprocessingML, которой соответствует элемент (где применимо), и управляемый класс, представляющий элемент в API Open XML SDK.

Часть пакета Элемент WordprocessingML Класс Open XML SDK Описание
Основной документ document Document Корневой элемент части основного документа.
Комментарии comments Comments Корневой элемент части комментариев.
Параметры документа settings Settings Корневой элемент части параметров документа.
Концевые сноски endnotes Endnotes Корневой элемент части концевых сносок.
Нижний колонтитул ftr Footer Корневой элемент части нижнего колонтитула.
Сноски footnotes Footnotes Корневой элемент части сносок.
Документ-глоссарий glossaryDocument GlossaryDocument Корневой элемент части документа-глоссария.
Верхний колонтитул hdr Header Корневой элемент части верхнего колонтитула.
Определения стилей styles Styles Корневой элемент части определений стилей.

Сценарий минимального документа

Документ WordprocessingML организован вокруг концепции областей содержимого (stories). Область содержимого (story) — это область содержимого в документе WordprocessingML. К областям содержимого (stories) WordprocessingML относятся:

  • комментарий

  • концевая сноска

  • нижний колонтитул

  • сноска

  • рамка, документ-глоссарий

  • верхний колонтитул

  • основная область содержимого

  • поддокумент

  • текстовое поле

Не все области содержимого (stories) должны присутствовать в допустимом документе WordprocessingML. Для простейшего допустимого документа WordprocessingML требуется только одна область содержимого (story) — область содержимого основного документа. В WordprocessingML область содержимого основного документа представлена частью основного документа. Как минимум, чтобы создать допустимый документ WordprocessingML с помощью кода, добавьте в документ часть основного документа.

Следующая информация из ISO/IEC 29500 представляет элементы WordprocessingML, требуемые в части основного документа для завершения сценария минимального документа.

Область содержимого основного документа простейшего документа WordprocessingML состоит из следующих XML-элементов:

  • document — корневой элемент части основного документа WordprocessingML, определяющий область содержимого основного документа.

  • body — контейнер для набора структур блочного уровня, образующих основную область содержимого.

  • p — абзац.

  • r — фрагмент текста с общими свойствами.

  • t — диапазон текста.

© ISO/IEC 29500: 2016

Пример кода Open XML SDK

Следующий код использует Open XML SDK для создания простого документа 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));
    }
}
Imports DocumentFormat.OpenXml.Packaging
Imports DocumentFormat.OpenXml.Wordprocessing

Module MyModule

    Sub Main(args As String())
        CreateWordDoc(args(0), args(1))
    End Sub

    Sub CreateWordDoc(filepath As String, msg As String)
        Using doc As WordprocessingDocument = WordprocessingDocument.Create(filepath, DocumentFormat.OpenXml.WordprocessingDocumentType.Document)
            ' Add a main document part. 
            Dim mainPart As MainDocumentPart = doc.AddMainDocumentPart()

            ' Create the document structure and add some text.
            mainPart.Document = New Document()
            Dim body As Body = mainPart.Document.AppendChild(New Body())
            Dim para As Paragraph = body.AppendChild(New Paragraph())
            Dim run As Run = para.AppendChild(New Run())

            ' String msg contains the text from the msg parameter
            run.AppendChild(New Text(msg))
        End Using
    End Sub
End Module

Созданный WordprocessingML

После запуска кода Open XML SDK из предыдущего раздела для создания документа можно изучить содержимое пакета .zip, чтобы просмотреть XML-код WordprocessingML. Чтобы просмотреть пакет .zip, переименуйте расширение минимального документа с .docx на .zip. Пакет .zip содержит части, из которых состоит документ. В данном случае, поскольку код создал минимальный документ WordprocessingML, имеется только одна часть — часть основного документа. На следующем рисунке показана структура в папке word пакета .zip для минимального документа, содержащего одну строку текста. Заполнитель иллюстрацииФайл document.xml соответствует части основного документа WordprocessingML, и именно эта часть содержит содержимое основной части документа. Следующий XML-код создаётся в файле document.xml при запуске кода Open XML SDK из предыдущего раздела.

<?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-пакете текстового документа.

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

Рисунок 1. Структура типичного документа

Структура документа WordprocessingML
Обозначения на схеме: Header — верхний колонтитул; Footer — нижний колонтитул; Foot notes — сноски; End notes — концевые сноски; Settings — параметры; Web settings — параметры веб-документа; Font table — таблица шрифтов; Glossary — глоссарий; Code — код; Custom XML — пользовательский XML; Styles — стили; Themes — темы; Document — документ.

Лицензия исходного репозитория Microsoft (оригинал)

    MIT License

    Copyright (c) Microsoft Corporation. All rights reserved.

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE