Share via


Schémas XML et données dans les personnalisations au niveau du document

Important Les informations décrites dans cette rubrique concernant Microsoft Word sont présentées exclusivement pour l’avantage et l’utilisation d’individus et d’organisations situés en dehors du États-Unis et de ses territoires ou qui utilisent, ou qui développent des programmes qui s’exécutent sur, des produits Microsoft Word qui ont été concédés sous licence par Microsoft avant janvier 2010, lorsque Microsoft a supprimé une implémentation de fonctionnalités particulières liées au code XML personnalisé de Microsoft Mot. Ces informations relatives à Microsoft Word peuvent ne pas être lues ou utilisées par des personnes ou des organisations dans les États-Unis ou ses territoires qui utilisent, ou qui développent des programmes qui s’exécutent sur, des produits Microsoft Word qui ont été concédés sous licence par Microsoft après le 10 janvier 2010 ; ces produits ne se comportent pas comme les produits sous licence avant cette date ou achetés et concédés sous licence pour une utilisation en dehors du États-Unis.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets au niveau du document pour Excel et Word. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Microsoft Bureau Excel et Microsoft Bureau Word offrent la possibilité de mapper des schémas à vos documents. Cette fonctionnalité peut simplifier l’importation et l’exportation de données XML dans et hors du document.

Visual Studio expose les éléments de schéma mappés dans les personnalisations au niveau du document en tant que contrôles dans le modèle de programmation. Pour Excel, Visual Studio ajoute la prise en charge de la liaison des contrôles aux données dans les bases de données, les services Web et les objets. Pour Word et Excel, Visual Studio ajoute la prise en charge des volets Actions, qui peuvent être utilisés avec un document mappé par schéma pour créer une expérience utilisateur final améliorée pour vos solutions. Pour plus d’informations, consultez la vue d’ensemble du volet Actions.

Remarque

Vous ne pouvez pas utiliser de schémas XML multipart dans les solutions Excel.

Objets créés lorsque des schémas sont attachés aux classeurs Excel

Lorsque vous attachez un schéma à un classeur, Visual Studio crée automatiquement plusieurs objets et les ajoute à votre projet. Ces objets ne doivent pas être supprimés à l’aide des outils Visual Studio, car ils sont gérés par Excel. Pour les supprimer, supprimez les éléments mappés de la feuille de calcul ou détachez le schéma à l’aide d’outils Excel.

Il existe deux objets principaux :

  • Schéma XML (fichier XSD). Pour chaque schéma du classeur, Visual Studio ajoute un schéma au projet. Cela s’affiche en tant qu’élément de projet avec une extension XSD dans Explorateur de solutions.

  • Une classe DataSet typée. Cette classe est créée en fonction du schéma. Cette classe de jeu de données est visible en mode Classe.

Objets créés lorsque des éléments de schéma sont mappés à des feuilles de calcul Excel

Lorsque vous mappez un élément de schéma du volet Office Source XML à une feuille de calcul, Visual Studio crée automatiquement plusieurs objets et les ajoute à votre projet :

  • Contrôles. Pour chaque objet mappé dans le classeur, un XmlMappedRange contrôle (pour les éléments de schéma non répétitifs) ou un ListObject contrôle (pour les éléments de schéma répétitifs) est créé dans le modèle de programmation. Le ListObject contrôle peut être supprimé uniquement en supprimant les mappages et les objets mappés du classeur. Pour plus d’informations sur les contrôles, consultez la vue d’ensemble des éléments hôtes et des contrôles hôtes.

  • Bindingsource. Lorsque vous créez un XmlMappedRange élément de schéma non répétitif à la feuille de calcul, un BindingSource est créé et le XmlMappedRange contrôle est lié au BindingSource. Vous devez lier l’instance BindingSource de la source de données qui correspond au schéma mappé au document, par exemple une instance de la classe typée DataSet qui a été créée. Créez la liaison en définissant les DataSource propriétés et DataMember les propriétés qui sont exposées dans la fenêtre Propriétés .

    Remarque

    L’objet BindingSource n’est pas créé pour ListObject les objets. Vous devez lier ListObject manuellement la source de données en définissant les propriétés et DataMember les DataSource propriétés dans la fenêtre Propriétés.

Bureau schémas mappés et la fenêtre Sources de données Visual Studio

La fonctionnalité de schéma mappée de Bureau et la fenêtre Sources de données Visual Studio peuvent vous aider à présenter des données dans une feuille de calcul Excel pour la création de rapports ou la modification. Dans les deux cas, vous pouvez faire glisser des éléments de données dans la feuille de calcul Excel. Les deux méthodes créent des contrôles liés à des données via une BindingSource source de données telle qu’un DataSet ou un service web.

Remarque

Lorsque vous mappez un élément de schéma répétitif à une feuille de calcul, Visual Studio crée un ListObject. Le ListObject fichier n’est pas automatiquement lié aux données via le BindingSource. Vous devez lier ListObject manuellement la source de données en définissant les propriétés et DataMember les DataSource propriétés dans la fenêtre Propriétés.

Le tableau suivant présente certaines des différences entre les deux méthodes.

schéma XML Fenêtre Sources de données
Utilise Bureau interface. Utilise la fenêtre Sources de données dans Visual Studio.
Active les fonctionnalités de Bureau intégrées pour l’importation et l’exportation de données à partir de fichiers XML. Vous devez fournir des fonctionnalités d’importation et d’exportation par programme.
Vous devez écrire du code pour remplir les contrôles générés avec des données. Les contrôles ajoutés à partir de la fenêtre Sources de données ont du code généré automatiquement pour les remplir, ainsi que les chaîne de connexion nécessaires lorsque vous utilisez des serveurs de base de données.

Comportement lorsque les schémas sont attachés aux documents Word

Les objets de données ne sont pas créés lorsque vous attachez un schéma à un document Word utilisé dans un projet de Bureau au niveau du document. Toutefois, lorsque vous mappez un élément de schéma à votre document, les contrôles sont créés. Le type de contrôle dépend du type d’élément que vous mappez ; les éléments répétitifs génèrent des XMLNodes contrôles et les éléments non répétitifs génèrent des XMLNode contrôles. Pour plus d’informations, consultez contrôle XMLNodes et contrôle XMLNode.

Déploiement de solutions qui incluent des schémas XML

Vous devez créer un programme d’installation pour déployer une solution qui utilise un schéma XML mappé à un document. Le programme d’installation doit inscrire le schéma dans la bibliothèque de schémas sur l’ordinateur de l’utilisateur. Si vous n’inscrivez pas le schéma, la solution fonctionne toujours, car Word génère un schéma temporaire basé sur les éléments figurant dans le document lorsque l’utilisateur l’ouvre. Toutefois, l’utilisateur ne pourra pas effectuer de validation sur ou enregistrer le schéma utilisé pour créer le projet. Pour plus d’informations sur les programmes d’installation, consultez Déployer des applications, des services et des composants.

Vous pouvez également ajouter du code à votre projet pour case activée si le schéma se trouve dans la bibliothèque et inscrit. Si ce n’est pas le cas, vous pouvez avertir l’utilisateur.

// Ensure that the schema is in the library and registered with the document.
private bool CheckSchema()
{
    const string namespaceUri = "http://schemas.contoso.com/projects";
    bool namespaceFound = false;
    bool namespaceRegistered = false;

    foreach (Word.XMLNamespace n in Application.XMLNamespaces)
    {
        if (n.URI == namespaceUri)
        {
            namespaceFound = true;
        }
    }

    if (!namespaceFound)
    {
        MessageBox.Show("XML Schema is not in library.");
        return false;
    }

    foreach (Word.XMLSchemaReference r in this.XMLSchemaReferences) 
    {
        if (r.NamespaceURI == namespaceUri)
        {
            namespaceRegistered = true;
        }
    }

    if (!namespaceRegistered)
    {
        MessageBox.Show("XML Schema is not registered for this document.");
        return false;
    }
    
    return true;
}