Ajouter XInclude

www.altova.com Imprimer cette rubrique Page précédente Un niveau supérieur Page suivante

Accueil >  Manuel de l'utilisateur et référence > Commandes de menu  > Menu XML > Ajouter >

Ajouter XInclude

ic_app_xinclude

La commande XML | Ajouter | XInclude est uniquement disponible dans le Mode Grille et vous permet d'ajouter un élément XInclude après le dernier frère de tout nœud sélectionné autre qu'un nœud d'attribut. Si la sélection actuelle est un attribut, l'élément XInclude est ajouté après le dernier enfant de l'élément parent de l'attribut sélectionné. Sélectionner cette commande pour ouvrir le dialogue XInclude (capture d'écran ci-dessous).

 

dlg_xinclude

 

Le fichier XML à inclure est saisi dans le champ de texte href (en alternative, vous pouvez chercher le fichier en cliquant sur la touche Chercher (...) située à droite du champ de saisie). Le nom de fichier sera saisi dans le document XML en tant que la valeur de l'attribut href. Les attributs parse, xpointer et encoding  de l'élément XInclude (xi:include) et l'élément enfant fallback de xi:include peuvent aussi être insérés par le biais du dialogue. Veuillez tout d'abord cocher la case appropriée puis sélectionner/saisir les valeurs requises. Dans le cas de l'élément fallback, le fait de cocher sa case insère uniquement l'élément vide. Le contenu de l'élément fallback doit être ajouté ultérieurement dans un des modes d'édition.

 

L'attribut parse détermine si le document inclus doit être parsé en tant que XML ou texte. (XML est la valeur par défaut et ne doit donc pas être spécifiée.) L'attribut xpointer identifie un fragment spécifique du document situé avec l'attribut href ; c'est ce fragment qui sera inclus. L'attribut encoding spécifie l'encodage du document inclus de manière à ce que XMLSpy puisse transcoder ce document (ou la partie devant être incluse) dans l'encodage du document incluant. Les contenus de l'élément enfant fallback remplacent l'élément xi:include si le document à inclure ne peut pas être situé.

 

Voici un exemple d'un document XML qui utilise XInclude pour inclure deux documents XML :

 

<?xml version="1.0" encoding="UTF-16"?>

<AddressBook xsi:schemaLocation="http://www.altova.com/sv/myaddresses AddressBook.xsd"

 xmlns="http://www.altova.com/stylevision/tutorials/myaddresses"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xmlns:xi="http://www.w3.org/2001/XInclude">

 <xi:include href="BusinessAddressBook.xml"/>

 <xi:include href="PersonalAddressBook.xml"/>

</AddressBook>

 

Lorsque ce document XML est parsé, il remplacera les deux éléments XInclude avec les fichiers spécifiés dans les attributs href respectifs.

 

 

xml:base

Lorsque le validateur XML de XMLSpy lit un document XML et rencontre l'élément include dans l'espace de noms XInclude (dénommé ci-après xi:include), il remplace cet élément (xi:include) avec le document XML nommé dans l'attribut href de l'élément xi:include. L'élément de document (élément racine) du document XML inclus (ou de l'élément identifié par un XPointer) sera inclus avec un attribut de xml:base pour pouvoir préserver les URI de base de l'élément inclus. Si le document XML résultant (contenant le document XML inclus ou le fragment d'arborescence) doit être valide conformément à un schéma, alors l'élément de document du document inclus (ou l'élément de niveau supérieur du fragment d'arborescence) doit être créé avec un modèle de contenu qui permettra un attribut de xml:base. Si, conformément au schéma, l'attribut xml:base n'est pas autorisé sur cet élément, le document résultant sera invalide. Vous trouverez dans la section Attributs xml:Prefixed de la section Mode Schéma de la documentation une description pour définir un attribut xml:base dans un modèle de contenu d'un élément à l'aide du Mode de Schéma de XMLSpy .

 

XPointers

XMLSpy prend en charge les XPointers dans XInclude. Les recommandations W3C pertinentes sont les recommandations XPointer Framework et système XPointer element(). L'utilisation d'un XPointer dans un élément XInclude permet d'inclure une partie spécifique du document XML, au lieu de devoir inclure le document XML entier. Les XPointers sont utilisés dans un élément XInclude comme suit :

 

 <xi:include href="PersonalAddressBook.xml" xpointer="element(usa)"/>

 <xi:include href="BusinessAddressBook.xml" xpointer="element(/1/1)"/>

 <xi:include href="BobsAddressBook.xml" xpointer="element(usa/3/1)"/>

 <xi:include href="PatsAddressBook.xml" xpointer="element(usa)element(/1/1)"/>

 

Dans le système element() de XPointer, il est possible d'utiliser un NCName ou une séquence enfant dirigée par des entiers.

 

Dans le premier élément xi:include nommé ci-dessus, l'attribut xpointer utilise le système d'élément avec un NCName de usa. Selon les XPointer Framework, ce NCName identifie l'élément qui a une ID de usa.
Dans le second xi:include listé ci-dessus, l'attribut xpointer avec une valeur de element(/1/1) identifie, dans une première étape, le premier élément enfant de la racine de document (qui, si le document est bien formé, sera son élément de document (ou de racine)). Dans une seconde étape, le premier élément enfant de l'élément situé dans l'étape précédente est situé ; dans notre exemple, il s'agit du premier élément enfant de l'élément de document.
L'attribut xpointer du troisième xi:include listé ci-dessus utilise une combinaison de NCName et de la séquence enfant. Ce XPointer localise le premier élément enfant du troisième élément enfant ayant une ID de usa.
Si vous n'êtes pas sûr si votre premier XPointer fonctionnera, vous pouvez le compléter avec un second, comme montré dans le quatrième xi:include listé ci-dessus : xpointer="element(usa)element(/1/1)". Ici, s'il n'y a aucun élément avec une ID de usa, le XPointer de réserve spécifie que le premier élément enfant de l'élément de document doit être sélectionné. Des réserves supplémentaires sont autorisées. Des XPointers individuels ne doivent pas être séparés, ou bien ils peuvent être séparés par des espaces blancs, par exemple : xpointer="element(usa)element(addresses/1) element(/1/1)".

 

Note :Le contexte liant d'espace de noms n'est pas utilisé dans le système element() parce que celui-ci ne prend pas en charge les noms qualifiés.

 

 


© 2018 Altova GmbH