Compartir a través de


Enlazar un control de contenido a un nodo del almacén de datos

La asignación XML es una característica de Word que le permite crear un vínculo entre un documento y un archivo XML. Esto crea una verdadera separación de datos y vistas entre el formato del documento y los datos XML personalizados.

La asignación de XML permite asignar un elemento de un fragmento XML personalizado adjunto al documento. El almacén de datos proporciona acceso a todos los fragmentos XML personalizados de un archivo abierto. Consulte cualquier nodo dentro de cualquier elemento XML personalizado dentro del almacén de datos.

Para obtener más información sobre controles de contenido, vea Trabajar con controles de contenido.

Los objetos usados en este ejemplo son:

Muestra

Los siguientes pasos le permiten enlazar un control de contenido a un nodo del almacén de datos del documento.

  1. Cree el control de contenido para enlazarlo a un nodo del almacén de datos. Los controles de contenido son elementos de contenido predefinidos. Hay varios tipos de controles de contenido, incluidos bloques de texto, menús desplegables, cuadros combinados, controles de calendario e imágenes. Puede asignar estos controles de contenido a un elemento en un archivo XML. Mediante el lenguaje de ruta de acceso XML (XPath), puede asignar mediante programación contenido de un archivo XML a un control de contenido. Esto le permite escribir una aplicación sencilla y corta para manipular y modificar datos en un documento.

Para obtener más información sobre controles de contenido, vea Trabajar con controles de contenido. En el ejemplo de código siguiente se crea un control de contenido de texto sin formato y se le proporciona un título de "MyTitle".

   Dim strTitle As String 
 strTitle = "MyTitle" 
 Dim oContentControl As Word.ContentControl 
 Set oContentControl = ActiveDocument.ContentControls.Add(wdContentControlText) 
 oContentControl.Title = strTitle
  1. Establecer la asignación XML del control de contenido. El almacén de datos de un documento del modelo de objetos de Word se encuentra en la propiedad CustomXMLParts del objeto Document . La propiedad CustomXMLParts devuelve una colección CustomXMLParts que contiene objetos CustomXMLPart . Señala a todos los fragmentos XML personalizados que están almacenados en un documento.

Un objeto CustomXMLPart representa un solo fragmento XML personalizado del almacén de datos. Para cargar datos XML personalizados, primero debe agregar un nuevo fragmento XML personalizado a un objeto Document mediante el uso del método Add de la colección CustomXMLParts. De esta forma, se anexa un nuevo fragmento XML personalizado vacío al documento. Dado que está vacío no hay XML para asignar.

A continuación, debe cargar XML en el fragmento recién definido llamando al método Load del objeto CustomXMLPart, utilizando una ruta válida a un archivo XML como parámetro o llamando al método LoadXML de CustomXMLPart y pasando el XML directamente. Los fragmentos XML personalizados predeterminados almacenados en un documento de Word contienen las propiedades del documento estándar del documento; no puede eliminar dichos fragmentos. Siempre puede ver el contenido de un fragmento XML personalizado llamando a la propiedad XML de sólo lectura en él. Si llama a la propiedad XML de un objeto CustomXMLPart, se devuelve una cadena, que contiene el código XML de ese almacén de datos.

Cree un archivo XML personalizado válido y guárdelo en la unidad de disco. Agregue un fragmento XML personalizado al documento que contiene el control de contenido al que desee asignar datos XML personalizados. Suponga que el control de contenido se asignará al siguiente archivo XML personalizado de ejemplo.

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

Now, suppose the content control is mapped to a <fruitType> node of the previous custom XML part.

En el siguiente código de ejemplo se muestra cómo adjuntar un archivo XML a un documento para que se convierta en un elemento del almacén de datos disponible.

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

Para crear una asignación XML, use una expresión XPath para especificar el nodo del fragmento de datos XML personalizado al que desee asignar un control de contenido. Al establecer una asignación XML de un control de contenido se especifica el nodo del fragmento XML personalizado agregado, mediante dicha expresión XPath.

Después de agregar un fragmento XML personalizado al documento (y una vez que el fragmento XML personalizado contenga XML), ya está preparado para asignar uno de sus nodos a un control de contenido. Para ello, pase una cadena que contenga un XPath válido a un objeto ContentControl mediante el método SetMapping del objeto XMLMapping (mediante la propiedad XMLMapping del objeto ContentControl ).

A continuación se muestra un ejemplo de cómo hacerlo con un XPath que hace referencia a un nodo de almacén de datos que contiene el valor del primer elemento fruitType.

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

Si omite los argumentos opcionales PrefixMappings y CustomXMLPart, Word busca cada uno de los fragmentos XML personalizados en orden y asigna el control al primer fragmento que recupera correctamente un nodo XML personalizado utilizando el XPath especificado.

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.