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


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

Сопоставление XML — это функция Word, которая позволяет создать связь между документом и XML-файлом. Это создает истинное разделение данных и представлений между форматированием документа и пользовательскими XML-данными.

Сопоставление XML позволяет сопоставить элемент в пользовательской XML-части, присоединенной к документу. Хранилище данных предоставляет доступ ко всем настраиваемым XML-частям, хранящимся в открытом файле. Обратитесь к любому узлу в любой пользовательской XML-части в хранилище данных.

Дополнительные сведения об элементах управления содержимым см. в разделе Работа с элементами управления содержимым.

В этом примере используются следующие объекты:

  • ContentControl
  • ContentControls
  • CustomXMLPart (основная объектная модель Microsoft Office)
  • CustomXMLParts (базовая объектная модель Microsoft Office)
  • XMLMapping

Пример

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

  1. Создайте элемент управления содержимым для привязки к узлу в хранилище данных. Элементы управления содержимым — это предопределенные части содержимого. Существует несколько типов элементов управления содержимым, включая текстовые блоки, раскрывающееся меню, поля со списком, элементы управления календарем и рисунки. Эти элементы управления содержимым можно сопоставить с элементом в XML-файле. С помощью языка XML-пути (XPath) можно программно сопоставить содержимое в XML-файле с элементом управления содержимым. Это позволяет написать простое и короткое приложение для управления данными в документе и их изменения.

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

   Dim strTitle As String 
 strTitle = "MyTitle" 
 Dim oContentControl As Word.ContentControl 
 Set oContentControl = ActiveDocument.ContentControls.Add(wdContentControlText) 
 oContentControl.Title = strTitle
  1. Задайте сопоставление XML в элементе управления содержимым. Хранилище данных в документе в объектной модели Word содержится в свойстве CustomXMLParts объекта Document . Свойство CustomXMLParts возвращает коллекцию CustomXMLParts , содержащую объекты CustomXMLPart . Он указывает на все пользовательские XML-части, хранящиеся в документе.

Объект CustomXMLPart представляет одну настраиваемую XML-часть в хранилище данных. Чтобы загрузить пользовательские XML-данные, необходимо сначала добавить новую пользовательскую XML-часть в объект Document с помощью метода Add коллекции CustomXMLParts . При этом в документ добавляется новая пустая настраиваемая XML-часть. Так как он пуст, xml-код для сопоставления отсутствует.

Затем необходимо загрузить XML в только что определенную часть, вызвав метод Load объекта CustomXMLPart , используя допустимый путь к XML-файлу в качестве параметра или вызвав метод LoadXMLобъекта CustomXMLPart и передав XML напрямую. Пользовательские XML-части по умолчанию, хранящиеся в документе Word, содержат стандартные свойства документа. вы не можете удалить эти части. Вы всегда можете просмотреть содержимое пользовательской XML-части, вызвав в ней свойство XML только для чтения. При вызове свойства XML объекта CustomXMLPart возвращается строка, которая содержит XML-код в этом хранилище данных.

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

   <?xml version="1.0" encoding="utf-8" ?>
 <tree>
   <fruit>
     <fruitType>peach</fruitType>
     <fruitType>pear</fruitType>
     <fruitType>banana</fruitType>
   </fruit>
 </tree>

Теперь предположим, что элемент управления содержимым сопоставлен с <узлом fruitType> предыдущей пользовательской XML-части.

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

   ActiveDocument.CustomXMLParts.Add
 ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).Load ("c:\mySampleCustomXMLFile.xml")

Чтобы создать сопоставление XML, используйте выражение XPath, чтобы указать узел в пользовательской части xml-данных, с которым требуется сопоставить элемент управления содержимым. При задании сопоставления XML в элементе управления содержимым определяется узел в добавленной пользовательской XML-части с использованием этого выражения XPath.

После добавления пользовательской XML-части в документ (и после того, как пользовательская XML-часть содержит XML), вы можете сопоставить один из ее узлов с элементом управления содержимым. Для этого передайте string , содержащий допустимый XPath, в объект ContentControl с помощью метода SetMapping объекта XMLMapping (с помощью свойства XMLMapping объекта ContentControl ).

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

   Dim strXPath As String 
 strXPath = "tree/fruit/fruitType[1]" 
 ActiveDocument.ContentControls(1).XMLMapping.SetMapping strXPath 

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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.