Modèles définis par l'utilisateur
Les modèles définis par l’utilisateur sont des modèles pour des items générés par une expression XPath que vous spécifiez. Ces items peuvent être des valeurs atomiques ou des nœuds. Dans la capture d’écran ci-dessous, qui affiche trois modèles définis par l’utilisateur, notez l’icône du modèle défini par l’utilisateur à gauche des balises (un symbole de personne en vert). Les modèles définis par l’utilisateur sont très utiles car ils fournissent une flexibilité extraordinaire pour créer les modèles. Notez, toutefois, que le contenu généré par les modèles définis par l’utilisateur ne peuvent pas être édités dans le mode Authentic.

L’expression XPath des trois modèles définis par l’utilisateur affichés dans la capture d’écran ci-dessus fait les choses suivantes :
•Sélectionne un nœud dans le schéma de source. En utilisant une expression XPath, tout nœud dans les sources de schéma peut être atteint de l’intérieur de chaque nœud contextuel. Si StyleVision peut cibler sans ambiguïté le nœud spécifié, le modèle sera modifié automatiquement depuis un modèle défini par l’utilisateur vers un modèle normal, permettant l’édition de Authentic View. S’il s’agit d’un modèle défini par l’utilisateur, ceci sera indiqué par une icône de modèle défini par l’utilisateur en vert du côté gauche des balises de modèle.
•Sélectionne un nœud qui remplit une condition spécifiée par la construction pour de XPath 2.0 et XPath 3.0. De tels modèles ne peuvent jamais être résolus en modèles normaux (mais resteront des modèles définis par l’utilisateur) car la construction for n’autorise pas StyleVision à résoudre sans ambiguïtés la cible de l’information de schéma uniquement de l’information de schéma dont elle dispose actuellement.
•Sélectionne une séquence de valeurs atomiques {1, 2, 3}. Tandis qu’il est permis de créer un modèle pour une valeur atomique, vous ne pouvez pas utiliser l’espace réservé contents à l’intérieur d’un tel modèle. Ceci est dû au fait que l’instruction xsl:apply-templates (c’est ce que l’espace réservé contents génère) ne peut être appliquée qu’aux items de nœud (pas les valeurs atomiques). Vous devriez, toutefois, utiliser un calcul automatique en combinaison avec un élément de design tel qu’une liste. Par exemple, le modèle défini par l’utilisateur à gauche générerait la sortie à droite.


Note : si le fichier SPS utilise XSLT 1.0, alors l’expression XPath que vous saisissez doit retourner un ensemble de nœud. Autrement une erreur est reportée.
L’avantage d’utiliser XPath pour sélectionner un nœud modèle
L’avantage de sélectionner un nœud de schéma via une expression XPath (modèles définis par l’utilisateur) est que le mécanisme du sélecteur de chemin XPath peut être utilisé pour sélectionner tout nœud ou séquence d’items, de même que filtrer ou définir les conditions pour la sélection de nœud. Le résultat étant que des nœuds de document XML spécifiques peuvent être ciblés pour tout modèle donné. Par exemple, l’expression XPath //Office/Department[@Location="NY"] sélectionnera uniquement ces nœuds Department qui ont un attribut Location avec une valeur de NY. Voir également d’autres exemples dans cette section.
Note : si une expression XPath contient de multiples étapes du chemin de l’emplacement, alors elle est significative—en particulier pour regrouper et trier—afin de voir si les crochets pointus sont placés autour des multiples étapes du chemin de l’emplacement ou non. Par exemple, l’expression XPath /Org/Office/Dept sera traitée différemment que (/Org/Office/Dept). Pour l’expression précédente (sans crochets pointus), le processeur transite à travers l’étape de l’emplacement. Pour la dernière expression (avec des crochets pointus), tous les éléments Dept de tous les éléments Office sont renvoyés en un ensemble de nœud non différencié.
Crochets pointus | Mécanisme XSLT sous-jacent | Effet |
Non | <xsl:for-each select="Org"> <xsl:for-each select="Office"> <xsl:for-each select="Dept"> ... </xsl:for-each> </xsl:for-each> </xsl:for-each> | Chaque élément Office a sa propre population Dept . Donc regrouper et trier peut être effectué à l’intérieur de chaque Office. |
Oui | <xsl:for-each select="/Org/Office/Dept"> ... </xsl:for-each> | La population Dept s’élargit sur tous les éléments Office et à travers Org. |
La différence d’évaluation des expressions XPath peut être significative pour regrouper et trier.
Insérer un modèle défini par l’utilisateur.
Pour insérer un modèle défini par l'utilisateur, faites comme suit :
1.Cliquez sur l’icône Insérer modèle défini par l’utilisateur dans la barre d’outils Insérer éléments de design, puis cliquez dans l’emplacement du design là où vous souhaitez insérer le modèle. En alternative, cliquez avec la touche de droite dans l’emplacement de design où vous souhaitez insérer le modèle et, depuis le menu contextuel qui apparaît, sélectionnez la commande Insérer modèle défini par l’utilisateur.
2.Dans le dialogue Éditer expression XPath qui s’ouvre, saisissez l'expression XPath que vous souhaitez et cliquez sur OK. Notez que le nœud contextuel de l’expression XPath sera le nœud dans lequel vous avez cliqué. Un modèle de nœud vide sera créé. Dès fois, un nœud joint est créé. Lorsqu’un nœud est joint, les nœuds d’instance ciblés sont sélectionnés comme s’ils étaient à un seul niveau, tandis que si un nœud n’est pas joint (c’est-à-dire s’il est fractionné en de multiples niveaux hiérarchiques), alors la sélection du nœud est effectuée en passant à travers chaque instance à chaque niveau de fractionnement. L’ensemble de nœud dans les deux cas de la sélection (joint et fractionné) est le même sauf si le critère de groupement ou de tri est spécifié. Pour une discussion de l’effet qu’ont des nœuds joints sur le groupement et le tri des mécanismes, voir Opérations Nœud-Modèle.
Éditer une correspondance de modèle
La sélection du nœud de tout modèle de nœud (défini par l’utilisateur ou normal) peut être modifiée en utilisant une expression XPath pour sélectionner la nouvelle expression de correspondance. Pour éditer la correspondance de modèle d’un modèle de nœud, cliquez avec la touche de droite sur le modèle de nœud, puis sélectionnez la commande Éditer correspondance de modèle. Ceci ouvre le dialogue Éditer expression XPath, dans lequel vous saisissez l’expression XPath peut être saisie. Ensuite, cliquez sur OK.
Ajouter des nœuds aux modèles définis par l’utilisateur
Si un nœud de l’arborescence de schéma est ajouté à un modèle défini par l’utilisateur, le contexte pour un nouveau nœud ne sera pas connu si le modèle défini par l’utilisateur a été créé pour un nœud ou une séquence qui ne peut pas être placé dans le contexte de la source de schéma du SPS. Vous serez donc invité pour savoir comment le nouveau nœud (capture d’écran ci-dessous) doit être référencé: (i) par son nom (essentiellement, un chemin relatif), ou (ii) par un chemin entier de la racine à la source de schéma.

Le comportement par défaut est de demander un avis afin de voir comment procéder. Ce comportement par défaut peut être changé dans l’onglet de design du dialogue Outils | Options.