Facettes
Un nouveau type simple (nommé ou anonyme) est créé en limitant le type de base du type simple (qui est un type simple existant). Une telle limitation est effectuée en ajoutant des facettes pour limiter les valeurs du type de base. Dans le Mode Schéma, l'Assistant de saisie Facettes (voir captures d'écran ci-dessous) vous permet d'éditer graphiquement en toute simplicité les facettes d'un type simple. Les facettes disponibles sont organisées dans les onglets de l'Assistant de saisie Facettes comme indiqué dans le tableau ci-dessous.
Onglet | Facettes disponibles |
minInclusive, maxInclusive, minExclusive, maxExclusive, length, minLength, maxLength, totalDigits, fractionDigits, whiteSpace, explicitTimezone | |
pattern | |
enumeration | |
assertion | |
altova:exampleValues est une annotation, ce n'est pas une facette. Cette annotation est utilisée pour générer des valeurs échantillon dans le document XML d'instance généré par XMLSpy à partir du Schéma XML. |
Chacun de ces onglets est décrit dans les sections ci-dessous.
Sélectionner le type simple dans le design
Un type simple (nommé ou anonyme) peut être sélectionné dans les environnements de design suivants :
•Dans l'Aperçu de Schéma (soit dans la liste des composants globaux soit dans l'onglet Attributs en-dessous de la liste des composants globaux), ou
•Dans le Mode de Modèle de contenu (soit dans le diagramme soit dans l'onglet Attributs en-dessous du diagramme).
Lorsqu'un type simple est sélectionné dans le design, dans un des environnements de design recensés ci-dessus, les Facettes applicables dans l'Assistant de saisie Facettes s'activent et peuvent être éditées dans l'Assistant de saisie Facettes.
Onglet Facettes
Dans l'onglet Facettes, seules les facettes applicables au type sélectionné dans le design seront affichées. Par exemple, si c'est le type xs:string qui est limité, les facettes non-applicables comme totalDigits ne seront pas affichées.
•Les quatre facettes liées (minInclusive, maxInclusive, minExclusive, maxExclusive) sont uniquement applicables aux types numérique et de date/heure et aux types dérivés de ces types.
•Les trois facettes de longueur (length, minLength, maxLength) sont uniquement applicables à des types string-based, aux types binaires, et à anyURI.
•La facette totalDigits s'applique à xs:decimal et aux types entiers, ainsi qu'aux types dérivés de ces types. La facette fractionDigits peut être uniquement appliquée à xs:decimal.
Pour saisir une valeur, soit sélectionner une valeur depuis la liste déroulante d'une liste de choix (si présente) ou double-cliquer le champ de valeur et saisir une valeur. Si une valeur invalide est saisie, les conflits résultants s'affichent en rouge. Les valeurs valides sont affichées en bleu. Par exemple, une facette minInclusive et une facette maxInclusive ne peuvent pas exister ensemble ; donc si une valeur est saisie pour la seconde de ces facettes, les valeurs des deux facettes sont affichées en rouge.
Afin de spécifier une facette fixe (donner à la facette une attribute-value de fixed="true"), cliquer sur le symbole du cadenas ouvert à la droite de la facette ; le symbole est maintenant fermé. Dans la capture d'écran ci-dessus, la facette totalDigits a été configurée en tant que facette fixe. Il est possible de fixer plus d'une seule facette. Pour annuler la fixation d'une facette, cliquer sur le symbole du cadenas fermé pour l'ouvrir.
Onglet Modèle
Dans l'onglet Modèles (capture d'écran ci-dessous), vous pouvez ajouter une ou plusieurs facettes pattern à une limitation. Le modèle (d'une facette pattern) est spécifié avec la syntaxe d'expression régulière. Le modèle dans la capture d'écran ci-dessous spécifie le modèle des adresses e-mail.
Si plusieurs facettes pattern sont spécifiées, la valeur d'instance XML doit correspondre à un des modèles spécifiés. Par exemple, un modèle destiné à limiter des codes postaux pourrait avoir deux facettes pattern, une pour un code postal US et un code postal UE. Une valeur d'instance XML doit alors correspondre à un des modèles pour qu'elle soit valide.
Ajouter une facette pattern en cliquant sur l'icône Ajouter ou Insérer située en haut à gauche puis saisir une expression régulière pour définir le modèle requis. Afin de supprimer un pattern, le sélectionner et cliquer sur l'icône Supprimer en haut à droite.
Onglet Énumérations
Dans l'onglet Énumérations (capture d'écran ci-dessous), vous pouvez ajouter une ou plusieurs facettes enumeration à une limitation. Chaque facette enumeration spécifie une valeur valide pour le type. Pris en groupe, un ensemble de facettes enumeration spécifie une gamme de valeurs autorisées. Dans la capture d'écran ci-dessous, les facettes enumeration spécifient la plage autorisée de valeurs de taille pour la limitation.
Ajouter une facette enumeration en cliquant sur l'icône Ajouter ou Insérer située en haut à gauche puis saisir la valeur enumeration. Pour supprimer une enumeration, la sélectionner et cliquer sur l'icône Supprimer en haut à droite.
Onglet Assertions
Les Assertions sont une fonction XSD 1.1. C'est pourquoi l'onglet Assertions ne sera activé que dans le mode XSD 1.1 . Les facettes d'assertion définies dans l'onglet d'Assertions des assistants de saisie Facettes sont des assertions pour des types simples —par opposition aux assertions pour des types complexes (qui peuvent être définis et édités dans l'Aperçu de schéma ou le Modèle de contenu, et non dans l'assistant de saisie Facettes).
Lorsqu'un type simple (élément ou attribut de contenu simple) est sélectionné dans le design, une assertion peut lui être spécifié en passant à l'onglet Assertions (voir capture d'écran ci-dessous), cliquer sur l'icône Ajouter ou Insérer située en haut à gauche puis saisir l'expression XPath 2.0 qui sera utilisée pour définir l'assertion. Une variable spéciale nommée $value doit être utilisée dans l'expression XPath pour contenir la valeur du type simple. (Veuillez noter que, puisqu'il n'y a pas de descendants à tester, mais uniquement une valeur, l'étape de chemin normale self::node() (ou l'abréviation de période de cette étape de chemin '.') ne peut pas être utilisée dans l'expression XPath.)
Par exemple, l'expression XPath string-length($value) = 6 (voir capture d'écran ci-dessous) teste si la valeur du type simple a six caractères. Si l'élément ou l'attribut dans le document d'instance a bien six caractères, il est valide conformément à l'assertion.
Note : | L'expression passe au rouge pour signaliser des erreurs de syntaxe dans l'expression XPath. Mais puisque le type de données est déterminé lors de la marche, les erreurs de type ne seront pas signalisées lorsque vous saisissez l'expression XPath. Vous devez prendre soin de construire les types selon vos besoins. Pour un exemple d'une construction de type, voir la troisième expression XPath dans la capture d'écran ci-dessus, qui convertit une valeur de string (en partant du principe que l'assertion est définie sur un type simple xs:string) en un nombre avant d'effectuer une comparaison numérique. |
Les assertions multiples peuvent être spécifiées sur un type simple unique, comme indiqué dans la capture d'écran ci-dessus. Dans ce cas, toutes les assertions doivent être satisfaites pour que l'élément ou l'attribut dans le document d'instance soit valide. Les assertions dans la capture d'écran ci-dessus spécifient que la valeur du document d'instance doit être un string de six caractères commençant avec les caractères EU et ayant des caractères numériques d'une valeur numérique de 0000 à 4999 pour ses quatre derniers chiffres. Pour éditer les détails d'une assertion, cliquer avec la touche de droite sur l'assertion dans l'Assistant de saisie Facettes puis cliquer sur Détails dans le menu qui s'affiche. La fenêtre Détails d'Assertion s'affiche (voir capture d'écran ci-dessous).
Il est toujours utile de proposer une explication de l'assertion avec sa définition de manière à ce qu'un message approprié puisse être affiché dans le cas ou une assertion n'est pas remplie lors de la validation d'un document d'instance XML. Puisque la spécification de Schéma XML n'impose aucun message, XMLSpy permet de fournir un message dans l'espace de noms https://www.altova.com/xml-schema-extensions Altova xml-schema-extensions (ou tout autre espace de noms) avec la définition de l'assertion et de l'utiliser dans la validation du document d'instance XML. Par exemple :
<xs:assert test="count(//MyNode) ge 1" altova:message="There must be at least one MyNode element"/> or
<xs:assertion test="count(//MyNode) ge 1" altova:message="There must be at least one MyNode element"/>
Si la restriction spécifiée dans l'assertion n'est pas remplie, le moteur de validation de XMLSpy s'affichera, ainsi qu'avec le message de validation-erreur, le message associé avec l'assertion en tant qu'indice. Le validateur rapportera la valeur d'un attribut assert/@message ou d'un attribut assertion/@message quels que soient les espaces de noms dans lesquels se trouvent l'attribut message. Néanmoins, dans le Mode Schéma, vous pouvez éditer uniquement les attributs message qui se trouvent dans l'espace de noms Altova xml-schema-extension. Pour éditer les attributs message dans d'autres espaces de noms, utiliser le Mode Texte.
Voir Assertion de Message pour plus de détails.
Note : | Il est recommandé de préférer l'utilisation d'autres facettes au lieu des assertions, lorsque possible. Par exemple, la restriction spécifiée par la première assertion dans la capture d'écran ci-dessus serait mieux spécifiée par la facette length (dans l'onglet Facettes). |
Onglet Échantillons
Dans l'onglet Échantillons (capture d'écran ci-dessous), vous pouvez spécifier les valeurs d'échantillon qui peuvent être utilisées lors de la génération d'un fichier XML depuis le Schéma XML(avec la commande de menu DTD/Schéma | Générer un fichier XML Échantillon). Si une valeur d'échantillon est invalide, un avertissement est indiqué en affichant la valeur d'échantillon en orange. Dans la capture d'écran ci-dessous, la première valeur est invalide parce qu'elle ne correspond pas à la facette pattern spécifiée pour les e-mails (voir onglet Échantillons ci-dessus).
Note : Cliquer sur l'icône Afficher avertissements de validation dans la barre d'outils pour passer à l'affichage des avertissements de valeur d'échantillon invalide. Une valeur d'échantillon invalide n'invalide pas le fichier XSD si le fichier est valide autrement.
Les valeurs échantillon sont placées dans un élément d'annotation altova:example qui se trouve dans l'espace de noms https://www.altova.com/xml-schema-extensions. Ajouter une annotation altova:example en cliquant sur l'icône Ajouter ou Insérer située en haut à gauche puis saisir la valeur altova:example. Pour supprimer une annotation altova:example, la sélectionner et cliquer sur l'icône Supprimer en haut à droite.