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


Элементы управления содержимым в Word

Узнайте, как элементы управления содержимым в Microsoft Word 2013 расширяют возможности работы со структурированными документами.

В этой статье представлены сведения об изменениях элементов управления содержимым в Microsoft Word 2013 и сценариях работы с документами, которые становятся доступны в результате этих изменений.

Структурированные документы

Структурированные документы контролируют, в каком месте документа может отображаться содержимое, какие типы контента могут отображаться в документе и можно ли редактировать содержимое.

Ниже приведены некоторые распространенные сценарии для структурированного содержимого Microsoft Word.

  • Адвокатской конторе нужно создать документы с юридическими формулировками, которые пользователь не должен менять.

  • Организации нужно создать титульную страницу предложения, где пользователь вводит только заголовок, автора и дату.

  • Организации нужно создать накладные, где в заранее определенных областях указываются данные о клиентах.

Создание структуры документа с помощью элементов управления содержимым

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

Элементы управления содержимым идеально подходят для создания структурированных документов, ведь они помогают фиксировать расположение содержимого, задавать его тип (например, дату, рисунок или текст), ограничивать или разрешать редактирование, а также придавать содержимому семантическое значение.

Элементы управления содержимым в Word 2010

В Word 2010 доступны следующие элементы управления содержимым:

  • форматированный текст;

  • обычный текст;

  • рисунок;

  • коллекция стандартных блоков;

  • поле со списком;

  • раскрывающийся список;

  • дата;

  • флажок;

  • группа.

Элементы управления содержимым в Word 2010 предоставляют различные возможности для создания структурированных документов, но в Word 2013 они делают возможными еще больше сценариев.

Улучшения элементов управления содержимым в Word 2013

Элементы управления содержимым в Word 2013 включают три основных усовершенствования: улучшенную визуализацию, поддержку сопоставления XML для элементов управления содержимым "Форматированный текст", а также новый элемент управления содержимым для повторяющегося контента.

Улучшенные возможности визуализации

Word 2013 позволяет отображать отдельные элементы управления содержимым в одном из трех возможных состояний:

  • в виде ограничивающего прямоугольника;

  • в виде открывающего и закрывающего тегов;

  • невидимым.

Примечание.

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

Рис. 1. Диалоговое окно "Свойства элемента управления содержимым"

Диалоговое окно свойств элемента управления содержимым снимок экрана:

Вы также можете задать режим отображения для элемента управления содержимым с помощью объектной модели Word 2013 (рассматриваемой ниже в разделе Новые элементы объектной модели для элементов управления содержимым Word 2013).

Ограничивающий прямоугольник

По умолчанию элементы управления содержимым в Word 2013 отображаются так же, как в Word 2007 и Word 2010, то есть в виде ограничивающего прямоугольника. Если элемент управления содержимым отображается как ограничивающий прямоугольник, то режим отображения меняется в соответствии с действиями пользователя.

  • Если элемент не находится в фокусе, то он не визуализируется.

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

Рис. 2. Управление содержимым при наведении указателя мыши

Управление содержимым при наведении указателя

  • Если элемент управления содержимым находится в фокусе (когда пользователь выбирает его), он отображается как "ограничивающий прямоугольник" (с линией вокруг содержимого и заголовком, если он задан).

Рис. 3. Элемент управления содержимым в фокусе

Элемент управления с фокусом

в виде открывающего и закрывающего тегов;

Если элемент управления содержимым отображается как открывающий или закрывающий теги, то теги видны независимо от действий пользователя, а заголовок никогда не отображается. Однако кнопки (например, Раскрывающийся список) отображаются при наведении указателя мыши.

Рис. 4. Элемент управления содержимым, который отображается в виде начальных и конечных тегов

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

Нет

Если выбран вариант Нет, то элемент управления содержимым не отображается.

Окраска элемента управления содержимым

Помимо различных вариантов отображения, в Word 2013 также можно выбирать цвета отдельных элементов управления содержимым. Вы можете задать цвет элемента управления содержимым с помощью кнопки Цвет в диалоговом окне Свойства элемента управления содержимым.

Вы также можете задать цвет элемента управления содержимым с помощью объектной модели Word 2013 (рассматриваемой ниже в разделе Новые элементы объектной модели для элементов управления содержимым Word 2013).

Рис. 5. Диалоговое окно "Свойства элемента управления содержимым"

Диалоговое окно "

Поддержка сопоставления XML для элементов управления содержимым "Форматированный текст"

Word 2013 помогает сопоставлять содержимое элементов управления содержимым "Форматированный текст" и "Стандартный блок документа" с хранилищем данных XML. Для этого необходимо задать сопоставление XML для элемента управления содержимым. Вы можете задать это свойство с помощью имеющегося метода XMLMapping.SetMapping объектной модели. В пользовательской XML-части код XML хранится в виде плоской разметки Open XML, преобразованной в строку (с помощью стандартной кодировки XML), чтобы ее можно было сохранить в виде текстового узла в пользовательской XML-части. Однако сопоставление по-прежнему ограничено: успешно выполнить сопоставление можно только с листовыми узлами или атрибутами.

Примечание.

Элементы управления содержимым "Форматированный текст" не могут содержать другие элементы этого типа. Если один элемент управления содержимым находится внутри другого (например, по причине манипуляций с форматами файлов, копирования и вставки и т. д.), то он остается несвязанным, пока он находится внутри сопоставленного элемента управления содержимым "Форматированный текст".

Дополнительные сведения о том, как настраивать сопоставление XML, см. в разделе Новые элементы объектной модели для элементов управления содержимым Word 2013 далее в этой статье.

Поддержка повторяющегося содержимого

Помимо улучшений визуализации и поддержки сопоставления XML с элементами управления содержимым "Форматированный текст", в Word 2013 также добавлен новый элемент управления содержимым, позволяющий повторять содержимое. Элемент управления содержимым "Повторяющийся раздел" повторяет включенное в него содержимое, в том числе другие элементы управления содержимым.

Элемент управления содержимым "Повторяющийся раздел" вставляется вокруг целых абзацев или строк таблиц. Если элемент управления содержимым окружает раздел, вы можете вставить копии этого раздела над включенным в него разделом или под ним.

Рисунок 6. Контекстное меню элемента управления содержимым "Повторяющийся раздел"

Контекст элемента управления содержимым "

Вы можете повторить вставленный раздел с помощью элемента управления в конце элемента управления содержимым (отображается в виде кнопки со знаком "плюс" (знак плюса)) или выбрав команду в контекстном меню, как показано на рис. 6. Повторяющееся содержимое становится отдельным разделом элемента управления, которому можно назначить название с помощью диалогового окна Свойства элемента управления содержимым.

Рис. 7. Назначение заголовка раздела в диалоговом окне Свойства элемента управления содержимым

Снимок экрана: диалоговое окно "

Когда разделу будет назначено название, пользователи смогут добавлять и удалять его по имени, выбирая параметр Разрешить пользователям добавлять и удалять разделы в диалоговом окне Свойства элемента управления содержимым.

Рис. 8. Удаление раздела с помощью контекстного меню элемента управления содержимым "Повторяющийся раздел"

Контекст элемента управления содержимым " "

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

  • если дочерний элемент управления является повторяющимся разделом;

  • если дочерний элемент управления сопоставлен при помощи XML с узлом за пределами элемента управления содержимым "Повторяющийся раздел".

Рис 9. Элемент управления содержимым "Повторяющийся раздел", содержащий дочерние элементы управления перед повтором

Элемент управления содержимым

Рис. 10. Элемент управления содержимым повторяющегося раздела, содержащий дочерние элементы управления после повторения

Элемент управления содержимым

Элементы управления содержимым "Повторяющийся раздел" вокруг сопоставленных при помощи XML элементов управления

Ниже описано, как Word 2013 работает с сопоставлениями XML, содержащимися в повторяющемся разделе.

Если сопоставление не пересекается с элементом в узле, заданном в рамках родительской цепочки, то привязка является абсолютной и отображает одно и то же содержимое во всех элементах повторяющихся разделов.

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

  • Определяется абсолютная привязка к узлу (со сведением всех выражений запросов). Это должно произойти при первоначальном сопоставлении.

  • Ось привязки, пересекающаяся с набором узлов, удаляется.

  • Оставшаяся часть значения XPath оценивается относительно свойства XPath элемента содержимого повторяющегося раздела.

Например, могут быть созданы описанные ниже сопоставления.

  • Повторяющийся раздел сопоставляется с путем \root\next\path.

  • Элемент управления в примере элемента сопоставляется с путем \root\next\path[2]\baz.

  • Word сопоставляет путь \root\next\path[2] с элементом в наборе узлов.

Следовательно, привязка оценивается как .\baz, где основанием является узел элемента повторяющегося содержимого.

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

Работа с элементами управления содержимым "Повторяющийся раздел", которые сопоставлены с данными XML

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

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

Привязка элемента управления содержимым "Повторяющийся раздел" к таблице

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

Вложение элементов управления содержимым "Повторяющийся раздел" в таблице

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

Это можно предотвратить, добавив маркер абзаца между окончаниями элементов управления содержимым "Повторяющийся раздел". Чтобы скрыть маркер абзаца, отмените выбор параметра Показать или скрыть на вкладке Главная ленты.

Дополнения схемы формата файлов Open XML

В схему WordprocessingML формата файлов Open XML были добавлены перечисленные ниже элементы.

Таблица 1. Новые элементы в схеме формата файлов Open XML WordprocessingML для элементов управления содержимым

Элемент Описание
<w:appearance>
Элемент <w:appearance> является дочерним для элемента <w:sdtPr>. Поддерживаемые значения атрибута val:
<w:appearance val= boundingBox|tags|hidden. Значение по умолчанию — boundingBox.
<w:color>
Элемент <w:color> является дочерним для элемента <w:sdtPr>. Модель содержимого соответствует имеющемуся сложному типу CT_Color. Значение по умолчанию — цвет, используемый в Word 2010.

Новые элементы объектной модели для элементов управления содержимым Word 2013

В рамках новых улучшений и дополнений для элементов управления содержимым в Word 2013 была обновлена объектная модель для Word. Теперь разрешаются программные манипуляции с новым набором компонентов. Кроме того, были внесены изменения в базовый формат файлов Open XML для текстовых документов.

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

Улучшения визуализации

В Word 2013 включен ряд дополнений объектной модели, чтобы улучшить визуализацию элементов управления содержимым. В приведенной ниже таблице перечислены новые элементы объекта ContentControl для визуализации.

Табл. 2. Новые члены объекта ContentControl

Элемент Описание
. Appearance типа WdContentControlAppearance
Возвращает или задает вариант визуализации элемента управления содержимым.
. Color типа WdColor
Возвращает или задает цвет элемента управления содержимым.

В приведенной ниже таблице перечислены константы из нового перечисления WdContentControlAppearance.

Табл. 3. Новые константы перечисления WdContentControlAppearance

Константа Описание
wdContentControlBoundingBox
Представляет элемент управления содержимым, отображаемый в виде затененного или ограничивающего прямоугольника (с необязательным заголовком).
wdContentControlTags
Представляет элемент управления содержимым, отображаемый в виде маркеров начала и конца.
wdContentControlHidden
Представляет элемент управления содержимым, который не отображается.

Пример кода

В приведенном ниже примере кода показано, как создавать элементы управления содержимым "Форматированный текст" и задавать способ визуализации программным образом.

Sub testVisualization()
   Dim objcc As ContentControl
   Dim objRange As Range
   
   ' Get the first paragraph as a range object.
   Set objRange = ActiveDocument.Paragraphs(1).Range
   ' Create a rich text content control around the first paragraph.
   Set objcc = ActiveDocument.ContentControls.Add(wdContentControlRichText, objRange)
   objcc.Title = "Default Bounding Box"
   ' Set visualization to the default.
   objcc.Appearance = wdContentControlBoundingBox
   
   ' Create a new paragraph.
   objRange.InsertParagraphAfter
   Set objRange = ActiveDocument.Paragraphs(2).Range
   ' Create a rich text content control around the second paragraph.
   Set objcc = ActiveDocument.ContentControls.Add(wdContentControlRichText, objRange)
   objcc.Title = "Non Bounding"
   ' Set visualization to invisible.
   objcc.Appearance = wdContentControlHidden
   
   ' Create a new paragraph.
   objRange.InsertParagraphAfter
   Set objRange = ActiveDocument.Paragraphs(3).Range
   ' Create a rich text content control around the third paragraph.
   Set objcc = ActiveDocument.ContentControls.Add(wdContentControlRichText, objRange)
   objcc.Title = "Tags Only with Pink color"
   ' Set visualization to Start/End tags with pink color.
   objcc.Appearance = wdContentControlTags
   objcc.Color = wdColorPink
End Sub

Сопоставление XML

В объектную модель Word 2013 не были внесены никакие изменения для поддержки сопоставления форматированного текста с узлами XML в хранилище данных документа. Вместо этого используйте имеющуюся объектную модель, чтобы сопоставить элемент управления содержимым "Форматированный текст" с узлом XML в хранилище данных документа. Кроме того, в базовую схему WordprocessingML формата файлов Open XML в рамках недавно добавленной поддержки элементов управления содержимым "Форматированный текст" не были внесены никакие изменения специально для сопоставления XML.

Пример кода

В приведенном ниже примере кода показано, как программным способом сопоставить элемент управления содержимым "Форматированный текст" с узлом XML.

Sub testRichBinding()
   Dim objRange As Range
   Dim objcc As ContentControl
   Dim objCustomPart As CustomXMLPart
   Dim blnMap As Boolean
   
   ' Add a custom XML part to the data store.
   Set objCustomPart = ActiveDocument.CustomXMLParts.Add
   ' Load XML fragment into the custom XML part.
   objCustomPart.LoadXML ("<x>Rich Text Databinding</x>")
   ' Get the first paragraph as a range object.
   Set objRange = ActiveDocument.Paragraphs(1).Range
   ' Create a rich text content control around the first paragraph.
   Set objcc = ActiveDocument.ContentControls.Add(wdContentControlRichText, objRange)
   ' Bind the XML node to the rich text content control.
   blnMap = objcc.XMLMapping.SetMapping("/x")
   ' Return whether mapping worked.
   MsgBox objcc.XMLMapping.IsMapped
End Sub

Элементы управления содержимым "Повторяющийся раздел", представленные в объектной модели

Элемент управления содержимым "Повторяющийся раздел" доступен в объектной модели с использованием перечисленных ниже дополнений к объекту ContentControl и новым объектам RepeatingSectionItem и RepeatingSectionItemColl. В таблице 4 перечислены наиболее важные из новых элементов объекта ContentControl для элементов управления содержимым "Повторяющийся раздел".

Табл. 4. Элементы объекта ContentControl

Элемент Описание
AllowInsertDeleteSection типа Boolean
Возвращает или задает значение, указывающее, могут ли пользователи добавлять или удалять разделы из элемента управления содержимым с помощью пользовательского интерфейса. Если это свойство вызывается для элемента управления содержимым, не являющегося повторяющимся разделом, то вызов завершается ошибкой со следующим сообщением: "Это свойство можно использовать только с элементами управления содержимым «Повторяющийся раздел»".
RepeatingSectionItemTitle типа String
Возвращает или задает имена элементов повторяющихся разделов, используемых в контекстном меню. Если это свойство вызывается для элемента управления содержимым, не являющегося повторяющимся разделом, то вызов завершается со следующей ошибкой: "Это свойство можно использовать только с элементами управления содержимым «Повторяющийся раздел»".
InsertRepeatingSectionItemBefore типа ContentControl
Добавляет элемент повторяющегося раздела перед текущим элементом и возвращает этот новый элемент. Если этот метод вызывается для элемента управления содержимым, не являющегося элементом повторяющегося раздела, то вызов завершается со следующей ошибкой: "Это свойство можно использовать только с элементами управления содержимым «Элемент повторяющегося раздела»".
InsertRepeatingSectionItemAfter типа ContentControl
Добавляет элемент повторяющегося раздела после текущего элемента и возвращает этот новый элемент. Если этот метод вызывается для элемента управления содержимым, не являющегося элементом повторяющегося раздела, то вызов завершается со следующей ошибкой: "Это свойство можно использовать только с элементами управления содержимым «Элемент повторяющегося раздела»".

В таблице 5 перечислены наиболее важные элементы объекта RepeatingSectionItem.

Табл. 5. Элементы объекта RepeatingSectionItem

Элемент Описание
Range типа Range
Возвращает диапазон указанного элемента повторяющегося раздела за исключением открывающего и закрывающего тегов.
Delete
Удаляет указанный элемент повторяющегося раздела.
InsertItemAfter типа RepeatingSectionItem
Добавляет элемент повторяющегося раздела после указанного элемента и возвращает новый элемент.
InsertItemBefore типа RepeatingSectionItem
Добавляет элемент повторяющегося раздела перед указанным элементом и возвращает новый элемент.

В таблице 6 перечислены наиболее важные элементы объекта RepeatingSectionItemColl.

Табл. 6. Элементы объекта RepeatingSectionItemColl

Элемент Описание
Item типа RepeatingSectionItem
Возвращает отдельный элемент повторяющегося раздела.

В таблице 7 показан новый элемент перечисления WdContentControlType для элементов управления содержимым "Повторяющийся раздел".

Табл. 7. Добавление перечисления WdContentControlType

Константа Описание
wdContentControlRepeatingSection
Представляет элемент управления содержимым, который содержит отдельный элемент из повторяющегося раздела.

Пример кода

В приведенном ниже примере кода показано, как работать с элементами управления содержимым "Повторяющийся раздел" программным способом.

Sub testRepeatingSectionControl()
   Dim objRange As Range
   Dim objTable As Table
   Dim objCustomPart As CustomXMLPart
   Dim objCC As ContentControl
   Dim objCustomNode As CustomXMLNode
   
   Set objCustomPart = ActiveDocument.CustomXMLParts.Add
   objCustomPart.LoadXML ("<books>" & _
       "<book><title>Everyday Italian</title>" & _
       "<author>Giada De Laurentiis</author></book>" & _
       "<book><title>Harry Potter</title>" & _
       "<author>J K. Rowling</author></book>" & _
       "<book><title>Learning XML</title>" & _
       "<author>Erik T. Ray</author></book></books>")
   
   Set objRange = ActiveDocument.Paragraphs(1).Range
   Set objTable = ActiveDocument.Tables.Add(objRange, 2, 2)
   With objTable.Borders
       .InsideLineStyle = wdLineStyleSingle
       .OutsideLineStyle = wdLineStyleDouble
   End With
   Set objRange = objTable.Cell(1, 1).Range
   Set objCustomNode = objCustomPart.SelectSingleNode("/books[1]/book[1]/title[1]")
   Set objCC = ActiveDocument.ContentControls.Add(wdContentControlText, objRange)
   objCC.XMLMapping.SetMappingByNode objCustomNode
   Set objRange = objTable.Cell(1, 2).Range
   Set objCustomNode = objCustomPart.SelectSingleNode("/books[1]/book[1]/author[1]")
   Set objCC = ActiveDocument.ContentControls.Add(wdContentControlText, objRange)
   objCC.XMLMapping.SetMappingByNode objCustomNode
   Set objRange = objTable.Rows(1).Range
   Set objCC = ActiveDocument.ContentControls.Add(wdContentControlRepeatingSection, objRange)
   objCC.XMLMapping.SetMapping ("/books[1]/book")
End Sub

Формат файлов Open XML для элементов управления содержимым "Повторяющийся раздел"

В представлении форматов файлов для элемента управления содержимым "Повторяющийся раздел" обычно используются те же имена элементов, значения и т. д., что и в имеющейся разметке XML. Однако элемент <sdt>, представляющий внешний контейнер повторяющегося раздела, существует в пространстве имен Word 2013, чтобы обеспечить совместимость с более ранними версиями Word.

Отдельные повторяющиеся элементы в рамках элемента управления содержимым "Повторяющийся раздел" (окружающего каждый из этих элементов) сохраняются как элементы управления содержимым "Форматированный текст" с использованием имеющегося представления WordprocessingML. В таблице 8 перечислены новые элементы схемы WordprocessingML для элементов управления содержимым "Повторяющийся раздел".

Табл. 8. Новые элементы в схеме WordprocessingML для повторяющихся элементов управления содержимым раздела

Элемент Описание
<w15:repeatingSection>
Задает элемент управления содержимым "Повторяющийся раздел". Этот элемент и все остальные типы элементов управления являются взаимоисключающими. Он не содержит дочерних элементов и атрибутов.
<w15:repeatingSectionItem>
Задает элемент управления содержимым "Элемент повторяющегося раздела". Этот элемент и все остальные типы элементов управления являются взаимоисключающими. Он не содержит дочерних элементов и атрибутов.
<w15:doNotAllowInsertDeleteSection>
Указывает, что пользователь не может добавлять и удалять разделы с помощью пользовательского интерфейса Word 2013.
<w15:sectionTitle>
Задает имена элементов повторяющихся разделов (и используется в контекстном меню при выборе элемента управления).