Procédure : lier un contrôle de contenu à un nœud du magasin de données
Le mappage XML est une fonctionnalité de Word qui vous permet de créer un lien entre un document et un fichier XML. Une véritable séparation données/vue entre la mise en forme du document et les données XML personnalisées est créée.
Le mappage XML permet de mapper un élément dans une partie XML personnalisée jointe au document. Le magasin de données fournit l'accès à toutes les parties XML personnalisées stockées dans un fichier ouvert. Faites référence à n’importe quel nœud au sein d’une partie XML personnalisée à l’intérieur du magasin de données.
Pour plus d’informations sur les contrôles de contenu, voir Utilisation des contrôles de contenu.
Les objets utilisés dans cet exemple sont les suivants :
- ContentControl
- ContentControls
- CustomXMLPart (modèle d'objet principal de Microsoft Office)
- CustomXMLParts (modèle d'objet principal de Microsoft Office)
- XMLMapping
Échantillon
La procédure suivante permet de lier un contrôle de contenu à un nœud du magasin de données du document.
- Créez le contrôle de contenu à lier à un nœud dans le magasin de données. Les contrôles de contenu sont des éléments de contenu prédéfinis. Il existe plusieurs types de contrôles de contenu, notamment des blocs de texte, des menus déroulants, des zones de liste déroulante, des contrôles de calendrier et des images. Vous pouvez mapper ces contrôles de contenu à un élément dans un fichier XML. À l’aide du langage XPath (XML Path Language), vous pouvez mapper par programmation le contenu d’un fichier XML à un contrôle de contenu. Cela vous permet d’écrire une application simple et courte pour manipuler et modifier des données dans un document.
Pour plus d’informations sur les contrôles de contenu, voir Utilisation des contrôles de contenu. L’exemple de code suivant crée un contrôle de contenu en texte brut et lui donne le titre « MyTitle ».
Dim strTitle As String
strTitle = "MyTitle"
Dim oContentControl As Word.ContentControl
Set oContentControl = ActiveDocument.ContentControls.Add(wdContentControlText)
oContentControl.Title = strTitle
- Définissez le mappage XML sur le contrôle de contenu. Le magasin de données d’un document dans le modèle objet Word est contenu dans la propriété CustomXMLParts de l’objet Document . La propriété CustomXMLParts renvoie une collection CustomXMLParts qui contient des objets CustomXMLPart . Elle pointe vers toutes les parties XML personnalisées stockées dans un document.
Un objet CustomXMLPart représente une seule partie XML personnalisée du magasin de données. Pour charger des données XML personnalisées, vous devez d'abord ajouter une nouvelle partie XML personnalisée à un objet Document en utilisant la méthode Add de la collection CustomXMLParts. Cela ajoute une nouvelle partie XML vide au document. Comme elle est vide, vous ne pouvez pas encore mapper de XML.
Vous devez alors charger du XML dans la nouvelle partie définie en appelant la méthode Load de l'objet CustomXMLPart, en utilisant comme paramètre un chemin d'accès valide à un fichier XML ou en appelant la méthode LoadXML de l'objet CustomXMLPart et en transmettant directement le XML. Les parties XML personnalisées par défaut stockées avec un document Word contiennent les propriétés standard du document ; vous ne pouvez pas les supprimer. Vous pouvez toujours afficher le contenu d'une partie XML personnalisée en appelant sur elle la propriété XML en lecture seule. Si vous appelez la propriété XML d'un objet CustomXMLPart, une chaîne contenant le XML de ce magasin de données est renvoyée.
Créez un fichier XML personnalisé valide et enregistrez-le sur votre disque dur. Ajoutez au document une partie XML personnalisée contenant le contrôle de contenu à mapper sur les données XML personnalisées. Supposons que le contrôle de contenu doit être mappé sur l'exemple de fichier XML personnalisé suivant.
<?xml version="1.0" encoding="utf-8" ?>
<tree>
<fruit>
<fruitType>peach</fruitType>
<fruitType>pear</fruitType>
<fruitType>banana</fruitType>
</fruit>
</tree>
Supposons maintenant que le contrôle de contenu soit mappé à un <nœud fruitType> de la partie XML personnalisée précédente.
L'exemple de code suivant explique comment joindre un fichier XML à un document afin qu'il devienne un élément disponible du magasin de données.
ActiveDocument.CustomXMLParts.Add
ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).Load ("c:\mySampleCustomXMLFile.xml")
Pour créer un mappage XML, vous utilisez une expression XPath spécifiant le nœud dans la partie de données XML personnalisée sur laquelle vous voulez mapper un contrôle de contenu. Le fait de définir un mappage XML sur un contrôle de contenu à l'aide de cette expression XPath spécifie le nœud dans la partie XML personnalisée que vous avez ajoutée.
Une fois que vous avez ajouté une partie XML personnalisée à votre document (et que cette partie contient du XML), vous êtes prêt à mapper un de ses nœuds sur un contrôle de contenu. Pour ce faire, transmettez une chaîne contenant un XPath valide à un objet ContentControl à l’aide de la méthode SetMapping de l’objet XMLMapping (à l’aide de la propriété XMLMapping de l’objet ContentControl ).
Voici un exemple de cette opération avec un XPath qui fait référence à un nœud de magasin de données contenant la valeur du premier élément fruitType.
Dim strXPath As String
strXPath = "tree/fruit/fruitType[1]"
ActiveDocument.ContentControls(1).XMLMapping.SetMapping strXPath
Si vous omettez les éléments optionnels PrefixMappings et CustomXMLPart, Word effectue la recherche dans toutes les parties XML personnalisées dans l'ordre et mappe le contrôle sur la première partie qui parvient à extraire un nœud XML personnalisé en utilisant l'expression XPath spécifiée.
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.