Présentation de la compatibilité du balisage

Cette rubrique présente les fonctionnalités de compatibilité de balisage incluses dans le Kit de développement logiciel (SDK) Open XML pour Office.

Introduction

Supposons que vous disposez d’un document Microsoft Word 2013 qui utilise une fonctionnalité introduite dans Microsoft Office 2013. Lorsque vous ouvrez ce document dans Microsoft Word 2010, une version antérieure, que doit-il se passer ? Dans l’idéal, vous souhaitez que le document reste interopérable avec Word 2010, même si Word 2010 ne comprend pas la nouvelle fonctionnalité.

Réfléchissez également à ce qui doit se passer si vous ouvrez ce document dans une version ultérieure hypothétique d’Office. Là encore, il faudrait que le document fonctionne comme prévu. Autrement dit, vous souhaitez que la version ultérieure d’Office comprenne et prend en charge une fonctionnalité utilisée dans un document produit par Word 2013.

Open XML prévoit ces scénarios. La spécification Des formats de fichier Office Open XML décrit les fonctionnalités permettant d’atteindre les résultats souhaités ci-dessus dans ECMA-376, Deuxième édition, Partie 3 - Compatibilité et extensibilité des marques.

Le Kit de développement logiciel (SDK) Open XML prend en charge la compatibilité du balisage d’une manière qui vous permet d’atteindre facilement les résultats souhaités ci-dessus pour et Office 2013 sans avoir à nécessairement devenir un expert dans les détails de la spécification.

Qu’est-ce que la compatibilité des marques ?

Open XML définit des formats pour les documents de traitement de texte, de feuilles de calcul et de présentation sous la forme de langages de balisage spécifiques nommés WordprocessingML, SpreadsheetML et PresentationML. En ce qui concerne les formats de fichiers Open XML, la compatibilité du balisage est la capacité d’un document exprimé dans l’un des langages mentionnés ci-dessus à faciliter l’interopérabilité entre des applications, ou des versions d’une application, avec différents jeux de fonctionnalités. Ceci est pris en charge grâce à l’utilisation d’un ensemble défini d’éléments et d’attributs XML dans l’espace de noms de Compatibilité du balisage de la spécification Open XML. Notez que bien que le balisage soit pris en charge dans le format de document, les producteurs et consommateurs (tels que Microsoft Word) doivent également le prendre en charge. Autrement dit, l’interopérabilité est une fonction de prise en charge à la fois dans le format de fichier et par les applications.

Compatibilité des marques dans la spécification des formats de fichier Open XML

La compatibilité des marques est abordée dans ECMA-376, Deuxième édition, Partie 3 - Compatibilité et extensibilité des marques, qui est recommandée pour comprendre la compatibilité des marques. La spécification définit des attributs XML pour exprimer des règles de compatibilité et des éléments XML pour spécifier un autre contenu. Par exemple, l’attribut Ignorable spécifie des espaces de noms qui peuvent être ignorés lorsqu’ils ne sont pas compris par l’application consommatrice. Les éléments Alternate-Content spécifient des alternatives de balisage qui peuvent être choisies par une application au moment de l’exécution. Par exemple, Word 2013 peut choisir uniquement l’alternative de balisage qu’il reconnaît. Pour plus de détails et pour obtenir la liste complète des attributs de règles de compatibilité et des éléments alternate-content, consultez la spécification.

Prise en charge du Kit de développement logiciel (SDK) Open XML pour la compatibilité des marques

Le travail du Kit de développement logiciel (SDK) Open XML pour la compatibilité du balisage est détaillé et subtil. Toutefois, l’objectif peut être résumé comme suit : à l’aide de paramètres que vous assignez lors de l’ouverture d’un document, prétraiter le document de façon à :

  1. Filtrer ou supprimer des éléments d’espaces de noms qui ne seront pas compris (par exemple, un document Office 2013 ouvert dans le contexte Office 2010)
  2. traiter tout élément et attribut de compatibilité du balisage comme indiqué dans la spécification Open XML.

Le prétraitement effectué est conforme à la spécification ECMA-376, Seconde édition : Partie 3.13.

La prise en charge du Kit de développement logiciel (SDK) Open XML pour la compatibilité des balisages se présente principalement sous la forme de deux classes et de la manière dont le contenu est prétraité conformément à ECMA-376, Second Edition. Les deux classes sont OpenSettings et MarkupCompatibilityProcessSettings. Utilisez la première pour fournir des paramètres qui s’appliquent au comportement global du kit SDK. Utilisez la seconde pour fournir une partie de ces paramètres, plus précisément ceux qui s’appliquent à la compatibilité du balisage.

Définir l’étape à l’ouverture

Lorsque vous ouvrez un document à l’aide du Kit de développement logiciel (SDK) Open XML, vous avez la possibilité d’utiliser une surcharge avec une signature qui accepte un instance de la classe OpenSettings en tant que paramètre. Vous utilisez la classe de paramètres d’ouverture pour fournir certains paramètres importants qui régissent le comportement du kit SDK. Un ensemble de paramètres en particulier, stocké dans la propriété MarkupCompatibilityProcessSettings , détermine la façon dont les éléments et attributs de compatibilité de balisage sont traités. Vous définissez la propriété sur un instance de la classe MarkupCompatibilityProcessSettings avant d’ouvrir un document.

La classe possède les propriétés suivantes :

Par défaut, les documents ne sont pas prétraités. Si toutefois vous spécifiez des paramètres d’ouverture et des paramètres de traitement de compatibilité du balisage, le document est prétraité conformément à ces paramètres.

L’exemple de code suivant montre comment appeler la méthode Open avec une instance de la classe de paramètres d’ouverture comme paramètre. Notez que les propriétés ProcessMode et TargetFileFormatVersions sont initialisées dans le cadre du constructeur 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
    }

Que se passe-t-il pendant le prétraitement

Pendant le prétraitement, le Kit de développement logiciel (SDK) Open XML supprime les éléments et les attributs dans l’espace de noms de compatibilité du balisage, supprime le contenu des éléments de contenu de substitution non sélectionnés et interprète les attributs de règle de compatibilité le cas échéant. Ce travail est guidé par les propriétés de mode de traitement et de versions de formats de fichiers cibles.

La propriété ProcessMode détermine les composants à prétraiter. Le contenu de ces composants est filtré de façon à contenir uniquement des éléments qui sont compris par la version d’application indiquée par la propriété TargetFileFormatVersions.

Avertissement

Le prétraitement affecte ce qui est enregistré. Lorsque vous enregistrez un fichier, le seul balisage enregistré est celui qui reste une fois le prétraitement effectué.

Comprendre le mode de processus

Le mode de traitement spécifie les composants de document qui doivent être prétraités. Vous définissez cette propriété sur un membre de l’énumération MarkupCompatibilityProcessMode . La valeur par défaut, NoProcess, indique qu’aucun prétraitement n’est effectué. Votre application doit être en mesure de comprendre et de gérer tous les éléments et attributs présents dans le balisage de document, y compris ceux de l’espace de noms de Compatibilité du balisage.

Vous souhaiterez peut-être travailler sur des parties de document spécifiques tout en laissant le reste intact. Par exemple, vous souhaiterez peut-être garantir une modification minimale du fichier. Dans ce cas, spécifiez ProcessLoadedPartsOnly pour le mode de processus. Avec ce paramètre, le prétraitement et le filtrage associé sont appliqués uniquement aux parties de document chargées, et non à l’intégralité du document.

Enfin, il existe ProcessAllParts, qui spécifie ce que le nom implique. Lorsque vous choisissez cette valeur, l’intégralité du document est prétraitée.

Définir la version du format de fichier cible

La propriété versions du format de fichier cible vous permet de choisir de traiter le contenu de compatibilité des marques dans le contexte Office 2010 ou Office 2013. Définissez la propriété TargetFileFormatVersions sur un membre de l’énumération FileFormatVersions .

La valeur par défaut, Office2010, signifie que le Kit de développement logiciel (SDK) suppose que les espaces de noms définis dans Office 2010 sont compris, mais pas les espaces de noms définis dans Office 2013. Ainsi, pendant le prétraitement, le SDK ignore les espaces de noms définis dans Office 2013 et choisit le contenu de remplacement compatible Office 2010.

Lorsque vous définissez la propriété versions de fichier cible sur Office2013, le Kit de développement logiciel (SDK) Open XML part du principe que tous les espaces de noms définis dans Office 2010 et Office 2013 sont compris, n’ignore aucun contenu défini sous Office 2013 et choisit le contenu de remplacement compatible avec Office 2013.