Controles de contenido en Word
Aprenda cómo los controles de contenido de Microsoft Word 2013 permiten una mayor variedad de escenarios de documentos estructurados.
En este artículo se ofrece información sobre los cambios en los controles de contenido en Microsoft Word 2013 y los escenarios de documentos que dichos cambios permiten.
Documentos estructurados
Los documentos estructurados son documentos que controlan dónde puede aparecer el contenido en un documento, el tipo de contenido que puede aparecer en el documento y si dicho contenido se puede editar.
Estos son algunos de los escenarios habituales de contenido estructurado en Microsoft Word:
Una asesoría jurídica necesita crear documentos que contienen lenguaje legal que no debería ser modificado por el usuario.
Una empresa necesita crear una portada de propuesta en la que el usuario solo escribe el título, el autor y la fecha.
Una empresa necesita crear facturas en las que los datos del cliente aparezcan en la factura en zonas predefinidas.
Uso de controles de contenido para estructurar un documento
Los controles de contenido son entidades de Microsoft Word que actúan como contenedores de contenido específico en un documento. Los controles de contenido individuales pueden incluir contenido como fechas, listas o párrafos de texto con formato. Estos controles de contenido le permiten crear bloques avanzados y estructurados de contenido, diseñados para su uso en plantillas que insertan bloques bien definidos en sus documentos, creando así documentos estructurados.
Los controles de contenido son ideales para crear documentos estructurados porque los controles de contenido le ayudan a fijar la posición de contenido, especificar el tipo de contenido (por ejemplo, una fecha, una imagen o texto), restringir o habilitar la edición, y agregar significado semántico al contenido.
Controles de contenido en Word 2010
Los siguientes controles de contenido están disponibles en Word 2010:
Texto enriquecido
Texto sin formato
Imagen
Galería de bloques de creación
Cuadro combinado
Lista desplegable
Fecha
Casilla de verificación
Grupo
Los controles de contenido de Word 2010 permiten varias posibles soluciones de documentos estructurados; sin embargo, es en Word 2013 donde los controles de contenido permiten una mayor variedad de escenarios.
Mejoras a los controles de contenido en Word 2013
En Word 2013, los controles de contenido proporcionan tres mejoras clave: visualización mejorada, compatibilidad con la asignación XML para controles de contenido de texto enriquecido y un nuevo control de contenido para el contenido de repetición.
Visualización mejorada
Word 2013 permite que un control de contenido individual aparezca en uno de estos tres estados posibles:
Rectángulo de selección
Etiquetas de inicio o finalización
Ninguno
Nota:
A menos que se indique lo contrario, en esta sección se explica la visualización de controles de contenido cuando el documento no se está viendo en Modo Diseño. El modo de presentación de un control de contenido se establece mediante el control de lista desplegable Mostrar como en el cuadro de diálogo Propiedades del control de contenido.
Figura 1. Cuadro de diálogo Propiedades del control de contenido
cuadro
También puede establecer el modo de presentación de un control de contenido mediante el modelo de objetos de Word 2013 (esto se explica más adelante, en la sección Nuevos miembros del modelo de objetos de controles de contenido de Word 2013).
Rectángulo de selección
La representación predeterminada para los controles de contenido en Word 2013 es conservar el aspecto de los controles de contenido tal como aparecen en Word 2007 y Word 2010: es decir, como un rectángulo de selección. Cuando un control de contenido está establecido para que aparezca como Rectángulo de selección, la visualización cambia según la interacción del usuario siguiente:
Cuando el control de contenido no tiene el foco, no se produce ninguna visualización
Al pasar el mouse sobre él, el control de contenido aparece como un rectángulo sombreado
Figura 2. Control de contenido al pasar el mouse sobre él.
- Cuando el control de contenido tiene el foco (cuando el usuario elige el control de contenido), el control aparece como un "rectángulo de selección" (con una línea alrededor del contenido y la exhibición de título, si se ha definido un título).
Figura 3. Control de contenido con foco
Etiquetas de inicio o finalización
Cuando se establece el control de contenido para que aparezca como Etiqueta de inicio o finalización, las etiquetas se muestran con independencia de la interacción del usuario y nunca aparecerá el título; sin embargo, los botones, como el botón Lista desplegable, aparecen al pasar el mouse sobre él.
Figura 4. Control de contenido establecido para aparecer como etiquetas de inicio o finalización
Ninguno
Cuando se establece el control de contenido para que aparezca como Ninguno, no se muestra el control de contenido.
Coloración del control de contenido
Además de permitir un tipo diferente de visualización para un control de contenido, Word 2013 también le ayuda a establecer el color de un control de contenido individual. Para configurar el color de un control de contenido, use el botón Color del cuadro de diálogo Propiedades del control de contenido.
También puede definir el color de un control de contenido mediante el modelo de objetos de Word 2013 (esto se explica más adelante, en la sección Nuevos miembros del modelo de objetos de controles de contenido de Word 2013).
Figura 5. Cuadro de diálogo Propiedades del control de contenido
contenido
Compatibilidad con la asignación XML para controles de contenido de texto enriquecido
Word 2013 le ayudará a asignar el contenido de los controles de contenido de texto enriquecido y los controles de contenido de los bloques de creación de documentos en el almacén de datos XML. Para ello, se establece la asignación XML para el control de contenido. Puede establecer esta propiedad usando el método existente XMLMapping.SetMapping del modelo de objetos. En el elemento XML personalizado, el XML personalizado se almacena como formato Open XML plano convertido en una cadena (mediante codificación estándar de XML), por lo que se puede almacenar como un nodo de texto en el elemento XML personalizado. Sin embargo, la asignación correcta sigue estando limitada a atributos o nodos de hoja.
Nota:
Los controles de contenido de texto enriquecido no pueden contener otros controles de contenido de texto enriquecido. Si uno existe dentro de otro (por ejemplo, debido a una manipulación del formato de archivo, mediante copiar y pegar, etc.), se desvincula hasta que deja de estar contenido dentro de un control de texto enriquecido.
Para obtener más información acerca de cómo configurar la asignación XML, consulte la sección Nuevos miembros del modelo de objetos de controles de contenido de Word 2013 más adelante en este tema.
Compatibilidad con contenido de repetición
Además de las mejoras de visualización y el soporte para la asignación XML a los controles de contenido de texto enriquecido, Word 2013 también agrega un nuevo control de contenido que le permite repetir el contenido. El control de contenido para repetición de secciones repite el contenido dentro del mismo, incluidos otros controles de contenido.
El control de contenido para repetición de secciones se inserta alrededor de párrafos enteros o de filas de tablas. Una vez que el control rodea una sección, puede insertar copias de la sección encima o debajo de la sección contenida.
Figura 6. Menú contextual del control de contenido para repetición de secciones
Puede repetir la sección insertada mediante el control al final del control de contenido (que se muestra como un botón con un signo más ()) o eligiendo un comando en el menú contextual, como se muestra en la figura 6. El contenido repetido pasa a ser una sección independiente del control a la que puede asignar un título a través del cuadro de diálogo Propiedades del control de contenido.
Figura 7. Asignar un título de sección en el cuadro de diálogo Propiedades del control de contenido
Una vez que ha asignado un título a la sección, si selecciona Permitir a usuarios agregar y quitar secciones en el cuadro de diálogo Propiedades del control de contenido, los usuarios podrán agregar o eliminar la sección por su nombre.
Figura 8. Usar el menú contextual del control de contenido para repetición de secciones para eliminar una sección
Contexto de
Cuando un control de contenido para repetición de secciones rodea a otros controles de contenido, los controles de contenido rodeados se repiten en cada nuevo elemento; pero el contenido de dichos controles de contenido se restablece a texto de marcador de posición. Hay dos excepciones en las que se conserva el contenido del control secundario:
Cuando un control secundario es un control para repetición de secciones.
Cuando un control secundario se asigna mediante XML a un nodo fuera del control de contenido para repetición de secciones.
Figura 9. Control de contenido para repetición de secciones que contiene controles secundarios antes de la repetición
control
Figura 10. Control de contenido para repetición de secciones que contiene controles secundarios después de la repetición
Controles de contenido de para repetición de secciones alrededor de los controles asignados XML
Para asignaciones XML que estén contenidas en una sección de repetición, Word 2013 las asigna como se muestra a continuación.
Si la asignación no interseca con un elemento del grupo de nodos como parte de su cadena primaria, el enlace es un "enlace absoluto" y muestra el mismo contenido en todos los elementos de sección de repetición.
Si la asignación sí interseca con un elemento del grupo de nodos como parte de su cadena primaria, el enlace es un "enlace relativo" y se reasigna de la siguiente manera:
Se determina el enlace absoluto del nodo (reduciendo cualquier expresión de consulta), esto debería suceder en la asignación inicial.
Se quita el eje del enlace que interseca con el grupo de nodos.
El resto de la XPath se evalúa en relación con la XPath del elemento de contenido de la sección de repetición.
Por ejemplo, podrían producirse las siguientes asignaciones:
La sección de repetición se asigna a \root\next\path.
El control en el elemento de ejemplo se asigna a \root\next\path[2]\baz.
Word hace coincidir \root\next\path[2] con un elemento del grupo de nodos.
Por lo tanto, el enlace se evalúa como .\baz, donde la base es el nodo del elemento de contenido de repetición.
Las siguientes sugerencias para trabajar con controles para repetición de contenido pueden ayudar a evitar la pérdida de datos y evitar frustraciones.
Trabajo con controles de contenido para repetición de secciones que están asignados a datos XML
Si inserta un control de contenido para repetición de secciones que está asignado a datos XML, cada vez que el usuario vuelva a abrir el documento, Word recrea los elementos de sección de repetición, según la información del almacén de datos. Incluso si guarda el documento, se perderán los cambios realizados por el usuario en los elementos de sección de repetición del documento que no se hayan asignado también en el almacén de datos.
Para impedir que esto ocurra, bloquee el control de contenido para repetición de secciones y permita que el usuario solo pueda modificar los controles de contenido secundarios desbloqueados que también estén asignados al XML.
Enlace de un control de contenido para repetición de secciones a una tabla
Si desea enlazar un control de contenido para repetición de secciones a una tabla, inserte la tabla y después inserte el control de contenido para repetición de secciones y no al revés. (De lo contrario, no podrá seleccionar solo la tabla).
Anidamiento de controles de contenido para repetición de secciones dentro de una tabla
El anidamiento ajustado de controles de contenido para repetición de secciones dentro de una tabla (por ejemplo, cuando el final del control de contenido para repetición de secciones principal y el secundario se encuentran en la misma celda) provoca que la sección de repetición externa se elimine cuando se agregue o se quite algún elemento de la sección interna.
Puede evitar que esto ocurra agregando un marcador de párrafo entre el final de un control de contenido para repetición de secciones y el siguiente. Para ocultar el marcador de párrafo, anule la selección de la opción Mostrar u ocultar de la ficha Inicio en la cinta de opciones.
Adiciones al esquema de formato de archivo Open XML
Se han agregado los siguientes elementos al esquema de formato de archivo Open XML de WordprocessingML.
Tabla 1. Nuevos elementos en el esquema de formato de archivo Open XML de WordprocessingML para controles de contenido
Elemento | Description |
---|---|
<w:appearance> |
<w:appearance> es un elemento secundario de <w:sdtPr>. Los valores siguientes son válidos para el atributo val: <w:appearance val= boundingBox|tags|hidden. El valor predeterminado es boundingBox. |
<w:color> |
<w:color> es un elemento secundario de <w:sdtPr>. El modelo de contenido coincide con el tipo complejo CT_Color existente. El valor predeterminado es el color utilizado en Word 2010. |
Nuevos miembros del modelo de objetos de controles de contenido de Word 2013
Con las nuevas mejoras y adiciones en los controles de contenido en Word 2013, se ha actualizado el modelo de objetos de Word para permitir la manipulación del nuevo conjunto de características mediante programación. Además, también se han realizado cambios en el formato de archivo Open XML subyacente para documentos de procesamiento de texto.
Las secciones siguientes proporcionan más información acerca de los cambios específicos al modelo de objetos relacionados con cada mejora de los controles de contenido.
Mejoras de visualización
Las mejoras de control de contenido de visualización incluyen varias adiciones al modelo de objetos en Word 2013. La siguiente tabla enumera nuevos miembros del objeto ContentControl para la visualización.
Tabla 2. Nuevos miembros del objeto ContentControl
Miembro | Description |
---|---|
.
Appearance como WdContentControlAppearance |
Obtiene o establece la visualización del control de contenido. |
.
Color como WdColor |
Obtiene o establece el color del control de contenido. |
En la siguiente tabla se muestran las constantes en la nueva enumeración WdContentControlAppearance.
Tabla 3. Nuevas constantes de la enumeración WdContentControlAppearance
Constante | Description |
---|---|
wdContentControlBoundingBox |
Representa un control de contenido que se muestra como un cuadro rectangular o un cuadro de selección sombreado (con título opcional). |
wdContentControlTags |
Representa un control de contenido que se muestran como marcadores de inicio o finalización. |
wdContentControlHidden |
Representa un control de contenido que no se muestra. |
Ejemplo de código
El siguiente ejemplo de código muestra cómo crear controles de contenido de texto enriquecido y establecer la visualización mediante programación.
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
Asignación XML
No se han hecho adiciones al modelo de objetos de Word 2013 para dar cabida a la asignación de texto enriquecido a los nodos XML en el almacén de datos del documento. En su lugar, puede usar el modelo de objetos existente para asignar un control de contenido de texto enriquecido a un nodo XML en el almacén de datos del documento. Tampoco se ha modificado el esquema WordprocessingML de formato de archivo Open XML subyacente como parte de la compatibilidad con el control de contenido de texto enriquecido incluida recientemente, específicamente para la asignación XML.
Ejemplo de código
El siguiente ejemplo de código muestra cómo asignar un control de contenido de texto enriquecido a un nodo XML mediante programación.
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
Controles de contenido para repetición de secciones representados en el modelo de objetos
El control de contenido para repetición de secciones está disponible en el modelo de objetos mediante las siguientes adiciones al objeto ContentControl y los nuevos objetos RepeatingSectionItem y RepeatingSectionItemColl. En la tabla 4 se enumeran los nuevos miembros más importantes del objeto ContentControl para controles de contenido para la repetición de secciones.
Tabla 4. Miembros del objeto ContentControl
Miembro | Description |
---|---|
AllowInsertDeleteSection como Boolean |
Obtiene o establece si los usuarios pueden agregar o quitar secciones del control de contenido mediante la interfaz de usuario. Si se llama a esta propiedad para un control de contenido que no es del tipo de sección de repetición, se produce el siguiente error en la llamada: "Esta propiedad solo se puede usar con controles de contenido de sección de repetición". |
RepeatingSectionItemTitle como String |
Obtiene o establece el nombre de elementos de sección de repetición utilizados en el menú contextual. Si se llama a esta propiedad para un control de contenido que no es del tipo de sección de repetición, se produce el siguiente error en la llamada: "Esta propiedad solo se puede usar con controles de contenido de sección de repetición". |
InsertRepeatingSectionItemBefore como ContentControl |
Agrega un elemento de sección de repetición antes del elemento actual y devuelve el nuevo elemento de sección de repetición. Si se llama a esta propiedad para un control de contenido que no es del tipo de elemento de sección de repetición, se produce el siguiente error en la llamada: "Esta propiedad solo se puede usar con controles de contenido del elemento de sección de repetición". |
InsertRepeatingSectionItemAfter como ContentControl |
Agrega un elemento de sección de repetición después del elemento actual y devuelve el nuevo elemento de sección de repetición. Si se llama a esta propiedad para un control de contenido que no es del tipo de elemento de sección de repetición, se produce el siguiente error en la llamada: "Esta propiedad solo se puede usar con controles de contenido del elemento de sección de repetición". |
En la tabla 5 se muestran los miembros más importantes del objeto RepeatingSectionItem.
Tabla 5. Miembros del objeto RepeatingSectionItem
Miembro | Description |
---|---|
Range como Range |
Devuelve el intervalo del elemento de sección de repetición especificado, excepto las etiquetas de inicio y finalización. |
Delete |
Elimina el elemento de sección de repetición especificado. |
InsertItemAfter como RepeatingSectionItem |
Agrega un elemento de la sección de repetición después del elemento especificado y devuelve el elemento nuevo. |
InsertItemBefore como RepeatingSectionItem |
Agrega un elemento de sección de repetición antes del elemento especificado y devuelve el elemento nuevo. |
En la tabla 6 se muestran los miembros más importantes del objeto RepeatingSectionItemColl.
Tabla 6. Miembros del objeto RepeatingSectionItemColl
Miembro | Description |
---|---|
Elemento como RepeatingSectionItem |
Devuelve un elemento individual de sección de repetición. |
La tabla 7 muestra el nuevo miembro de la enumeración WdContentControlType para controles de contenido para repetición de secciones.
Tabla 7. Adición a la enumeración WdContentControlType
Constante | Description |
---|---|
wdContentControlRepeatingSection |
Representa un control de contenido que contiene un elemento único en una sección de repetición. |
Ejemplo de código
El siguiente ejemplo de código muestra cómo usar controles de contenido para repetición de secciones mediante programación.
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
Cambios al formato de archivo Open XML para controles de contenido para repetición de secciones
La representación del formato de archivo de un control de contenido para repetición de secciones generalmente usa los mismos nombres de elemento, los valores, etc., que el formato XML existente; sin embargo, el elemento <sdt> que representa el contenedor de sección de repetición exterior existe en el espacio de nombres de Word 2013, para garantizar la compatibilidad con versiones anteriores de Word.
Los elementos individuales de repetición dentro del control de contenido para repetición de secciones (que rodean a cada elemento individual) se guardan como controles de contenido de texto enriquecido con la representación de WordprocessingML existente. En la tabla 8 se enumeran los elementos nuevos en el esquema WordprocessingML para controles de contenido para repetición de secciones.
Tabla 8. Elementos nuevos en el esquema WordprocessingML para controles de contenido para repetición de secciones
Elemento | Description |
---|---|
<w15:repeatingSection> |
Especifica un control de contenido para repetición de secciones. Este elemento es mutuamente exclusivo con todos los demás tipos de controles y no tiene elementos secundarios ni atributos. |
<w15:repeatingSectionItem> |
Especifica un control de contenido de elemento de sección de repetición. Este elemento es mutuamente exclusivo con todos los demás tipos de controles y no tiene elementos secundarios ni atributos. |
<w15:doNotAllowInsertDeleteSection> |
Especifica que el usuario no puede agregar ni eliminar secciones mediante la interfaz de usuario en Word 2013. |
<w15:sectionTitle> |
Especifica el nombre de los elementos de sección de repetición (y se usa en el menú contextual cuando se elige el control). |