Привязка элемента управления содержимым к узлу в хранилище данных
Сопоставление XML — это функция Word, которая позволяет создать связь между документом и XML-файлом. Это создает истинное разделение данных и представлений между форматированием документа и пользовательскими XML-данными.
Сопоставление XML позволяет сопоставить элемент в пользовательской XML-части, присоединенной к документу. Хранилище данных предоставляет доступ ко всем настраиваемым XML-частям, хранящимся в открытом файле. Обратитесь к любому узлу в любой пользовательской XML-части в хранилище данных.
Дополнительные сведения об элементах управления содержимым см. в разделе Работа с элементами управления содержимым.
В этом примере используются следующие объекты:
- ContentControl
- ContentControls
- CustomXMLPart (основная объектная модель Microsoft Office)
- CustomXMLParts (базовая объектная модель Microsoft Office)
- XMLMapping
Пример
Следующие действия позволяют привязать элемент управления содержимым к узлу в хранилище данных документа.
- Создайте элемент управления содержимым для привязки к узлу в хранилище данных. Элементы управления содержимым — это предопределенные части содержимого. Существует несколько типов элементов управления содержимым, включая текстовые блоки, раскрывающееся меню, поля со списком, элементы управления календарем и рисунки. Эти элементы управления содержимым можно сопоставить с элементом в 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
- Задайте сопоставление 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 и обратная связь.