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

Supongamos que tiene un documento de Microsoft Word 365 que emplea una característica introducida en Microsoft Office 365. Al abrir ese documento en Microsoft Word 2016, una versión anterior, ¿qué debería suceder? Lo ideal es que el documento siga siendo interoperable con Word 2016, aunque Word 2016 no comprenda 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 365.

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 365 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 Ignorable atributo especifica espacios de nombres que se pueden omitir cuando la aplicación consumidora 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 elementos de espacios de nombres que no se entenderán (por ejemplo, Office 365 documento abierto en el contexto de Office 2016)
  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 con el SDK de Open XML, tiene la opción de usar una sobrecarga con una firma que acepta una instancia de la OpenSettings clase 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 MarkupCompatibilityProcessSettings propiedad, determina cómo se procesan los elementos y atributos de compatibilidad de marcado. La propiedad se establece en una instancia de la MarkupCompatibilityProcessSettings clase 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. Observe que las ProcessMode propiedades y TargetFileFormatVersions se inicializan como parte del MarkupCompatiblityProcessSettings constructor.

    // 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 ProcessMode propiedad determina los elementos que se van a preprocesar. 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 TargetFileFormatVersions propiedad .

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 MarkupCompatibilityProcessMode enumeración . El valor predeterminado, NoProcess, indica que no se realiza ningún 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.

Por último, hay ProcessAllParts, que especifica lo que implica el nombre. Cuando se elige este valor, se preprocesa el documento completo.

Establecer la versión de formato de archivo de destino

La propiedad de versiones de formato de archivo de destino le permite elegir procesar el contenido de compatibilidad de marcado en el contexto de una versión específica de Office, por ejemplo, Office 365. Establezca la TargetFileFormatVersions propiedad en un miembro de la FileFormatVersions enumeración.

El valor predeterminado, Office2007, significa que el SDK asumirá que se entienden los espacios de nombres definidos en Office 2007, pero no los espacios de nombres definidos en Office 2010 o posterior. Por lo tanto, durante el preprocesamiento, el SDK omitirá los espacios de nombres definidos en las versiones más recientes de Office y elegirá el contenido alternativo compatible con Office 2007.

Al establecer la propiedad Office2013de versiones de formato de archivo de destino en , 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.