Compartir a través de


Introducción a la compatibilidad de marcado

En este tema se presentan las características de compatibilidad de marcado incluidas en el SDK de Open XML para Office.

Introducción

Imagine que tiene un documento de Microsoft Word 2013 que emplea una característica que se ha incorporado en Microsoft Office 2013. Cuando abre ese documento en Microsoft Word 2010, una versión anterior, ¿qué debería suceder? Lo perfecto sería que el documento fuera interoperable con Word 2010, aunque Word 2010 no comprendiera la nueva característica.

Considere también lo que debe suceder si abre ese documento en una versión posterior hipotética de Office. Aquí también quiere que el documento funcione según lo esperado. Es decir, quiere que la versión posterior de Office comprenda y admita una característica empleada en un documento producido por Word 2013.

Open XML se anticipa a estos escenarios. La especificación de formatos de archivo de Office Open XML describe recursos para lograr los resultados deseados anteriores en Tercera parte de la especificación ECMA-376, segunda edición: Compatibilidad de marcado y extensibilidad.

El SDK de Open XML admite la compatibilidad de marcado de forma que le resulte fácil lograr los resultados deseados anteriores para y Office 2013 sin tener que convertirse necesariamente en un experto en los detalles de la especificación.

¿Qué es la compatibilidad de marcado?

Open XML define formatos para procesamiento de texto, hojas de cálculo y documentos de presentación como lenguajes de marcado específicos, es decir, WordprocessingML, SpreadsheetML y PresentationML. Con respecto a los formatos de archivo de Open XML, la compatibilidad de marcado es la capacidad de un documento, expresada en uno de los lenguajes de marcado anteriores, de facilitar la interoperabilidad entre aplicaciones, o versiones de una aplicación, con distintos conjuntos de características. Para lograr la compatibilidad, se usa un conjunto definido de elementos y atributos XML en el espacio de nombres de compatibilidad de marcado de la especificación de Open XML. Tenga en cuenta que aunque el formato de documento admita el marcado, los productores y consumidores de marcado, como Microsoft Word, también deberán admitirlo. En otras palabras, la interoperabilidad es una función de compatibilidad tanto en el formato de archivo como en las aplicaciones.

Compatibilidad de marcado en la especificación de formatos de archivo Open XML

La compatibilidad de marcado se analiza en la Tercera parte de la especificación de ECMA-376, segunda edición: Compatibilidad de marcado y extensibilidad, que es una lectura recomendada para entender la compatibilidad de marcado. La especificación define atributos XML para expresar reglas de compatibilidad, y elementos XML para especificar contenido alternativo. Por ejemplo, el atributo Ignorable especifica espacios de nombres que se pueden ignorar cuando la aplicación de consumo no los entiende. Los elementos de contenido alternativo especifican las alternativas de marcado que puede elegir una aplicación en tiempo de ejecución. Por ejemplo, Word 2013 puede elegir solo la alternativa de marcado que reconoce. En la especificación, se puede encontrar la lista completa de atributos de reglas de compatibilidad y elementos de contenido alternativo y sus detalles.

Compatibilidad del SDK de Open XML con la compatibilidad de marcado

El trabajo que realiza el SDK de Open XML para la compatibilidad de marcado es detallado y sutil. Sin embargo, el objetivo puede resumirse como: mediante el uso de valores de configuración que se asignan al abrir el documento, se preprocesa el documento para:

  1. Filtrar o quitar todos los elementos de espacios de nombres que no se entenderán (por ejemplo, un documento de Office 2013 abierto en el contexto de Office 2010).
  2. Procesar todos los elementos y atributos de compatibilidad de marcado según la especificación de Open XML.

El preprocesamiento realizado es conforme con la especificación ECMA-376, segunda edición: parte 3.13.

La compatibilidad del SDK de Open XML con la compatibilidad de marcado se ofrece principalmente en forma de dos clases y en la forma en que el contenido se preprocesa de acuerdo con ECMA-376, Second Edition. Las dos clases son OpenSettings y MarkupCompatibilityProcessSettings. Use el primero para proporcionar una configuración que se aplique al comportamiento general del SDK. Use este último para proporcionar una parte de dicha configuración, específicamente aquellas que se aplican a la compatibilidad de marcado.

Establecer la fase al abrir

Al abrir un documento mediante el SDK de Open XML, tiene la opción de usar una sobrecarga con una firma que acepta una instancia de la clase OpenSettings como parámetro. Se usa la clase openSettings para proporcionar ciertos valores de configuración importantes que rigen el comportamiento del SDK. Un conjunto de valores en particular, almacenados en la propiedad MarkupCompatibilityProcessSettings , determina cómo se procesan los elementos y atributos de compatibilidad de marcado. La propiedad se establece en una instancia de la clase MarkupCompatibilityProcessSettings antes de abrir un documento.

La clase tiene las siguientes propiedades:

De manera predeterminada, los documentos no se preprocesan. Sin embargo, si especifica valores de configuración de apertura y proporciona valores de configuración para el proceso de compatibilidad de marcado, entonces el documento se preprocesa de acuerdo con dichos valores de configuración.

El siguiente ejemplo de código muestra cómo llamar al método Open con una instancia de la clase openSettings como parámetro. Tenga en cuenta que las propiedades ProcessMode y TargetFileFormatVersions se inicializan como parte del constructor MarkupCompatiblityProcessSettings.

    // Create instance of OpenSettings
    OpenSettings openSettings = new OpenSettings();

    // Add the MarkupCompatibilityProcessSettings
    openSettings.MarkupCompatibilityProcessSettings =
        new MarkupCompatibilityProcessSettings(
            MarkupCompatibilityProcessMode.ProcessAllParts, 
            FileFormatVersions.Office2007);

    // Open the document with OpenSettings
    using (WordprocessingDocument wordDocument = 
        WordprocessingDocument.Open(filename, 
            true,
            openSettings))
    {
        // ... more code here
    }

Qué ocurre durante el preprocesamiento

Durante el preprocesamiento, el SDK de Open XML quita los elementos y atributos del espacio de nombres de compatibilidad de marcado, quita el contenido de los elementos de contenido alternativo no seleccionados e interpreta los atributos de la regla de compatibilidad según corresponda. Este trabajo se guía por el modo de proceso y las propiedades de las versiones de formato de archivo de destino.

La propiedad ProcessMode determina los elementos que se preprocesarán. El contenido de esos elementos se filtra para contener solo elementos que se entienden por la versión de la aplicación indicada en la propiedad TargetFileFormatVersions .

Advertencia

[!PRECAUCIóN] El preprocesamiento afecta a lo que se guarda. Cuando se guarda un archivo, el único marcado que se guarda es el que permanece después del preprocesamiento.

Descripción del modo de proceso

El modo de proceso especifica qué elementos de documento deben preprocesarse. Esta propiedad se establece en un miembro de la enumeración MarkupCompatibilityProcessMode . El valor predeterminado, NoProcess, indica que no se realiza preprocesamiento. La aplicación debe entender y manejar todos los elementos y atributos presentes en el marcado del documento, incluyendo todos los elementos y atributos del espacio de nombres de compatibilidad de marcado.

Es posible que quiera trabajar en elementos específicos del documento mientras deja el resto intacto. Por ejemplo, puede que quiera asegurar que haya una modificación mínima en el archivo. En ese caso, especifique ProcessLoadedPartsOnly para el modo de proceso. Con esta configuración, el preprocesamiento y el filtrado asociado solo se aplican a los elementos cargados del documento, no al documento completo.

Finalmente, está ProcessAllParts, que especifica que se procesen todos los elementos. Cuando se elige este valor, se preprocesa el documento completo.

Establecer la versión de formato de archivo de destino

La propiedad de versiones del formato de archivo de destino permite procesar el contenido de compatibilidad de marcado en contexto de Office 2010 o Office 2013. Establezca la propiedad TargetFileFormatVersions en un miembro de la enumeración FileFormatVersions .

El valor predeterminado, Office2010, significa que el SDK supondrá que se entienden los espacios de nombres definidos en Office 2010, pero no los espacios de nombres definidos en Office 2013. De esta manera, durante el preprocesamiento, el SDK ignorará los espacios de nombres definidos en Office 2013 y elegirá el contenido alternativo compatible con Office 2010.

Al establecer la propiedad de versiones de formato de archivo de destino en Office2013, el SDK de Open XML supone que todos los espacios de nombres definidos en Office 2010 y Office 2013 se entienden, no omite ningún contenido definido en Office 2013 y elegirá el contenido alternativo compatible con Office 2013.