Validation XMLNSC

L'analyseur syntaxique XMLNSC offre une validation de schéma XML haute performance et conforme aux normes à tout moment dans un flux de messages.

La validation du message XML d'entrée ou de l'arborescence de messages est effectuée par rapport aux schémas XML déployés.

Validation n'est pas identique à l' analyse syntaxique. Lors de l'analyse syntaxique, l'analyseur syntaxique XMLNSC vérifie toujours que le document d'entrée est un XML syntaxiquement correct, conformément à la spécification XML. Si la validation est activée, l'analyseur syntaxique XMLNSC vérifie également que le document XML respecte les règles du schéma XML.

Activation de la validation de schéma XML dans un flux de messages

Vous devez effectuer les tâches suivantes pour construire un flux de messages qui valide un document XML conformément à un schéma XML:

  • Activez la validation au point approprié dans le flux de messages. Cela est généralement réalisé en définissant la propriété Valider du noeud approprié sur Content and Value. Voir Validation des messages.
  • Vérifiez que tous les fichiers de schéma XML requis sont déployés. Voir Déploiement de schémas XML plus loin dans cette section.
  • Si les fichiers de schéma XML sont déployés dans un ensemble de messages, vous devez également indiquer le nom de l'ensemble de messages. En règle générale, vous spécifiez l'ensemble de messages en sélectionnant la propriété Modèle de message sur un noeud de flux de messages. Si l'analyseur syntaxique est appelé à partir d'un langage de programmation tel que ESQL ou Java™, l'ensemble de messages doit être spécifié dans les paramètres de l'appel de fonction.

Déploiement de schémas XML

Les schémas XML peuvent être déployés dans une application, dans une bibliothèque référencée par une application ou dans un ensemble de messages.

Si les schémas sont déployés dans le cadre de l'application, ils doivent être inclus dans l'un des projets référencés par l'application.

Si les schémas sont déployés dans une bibliothèque, l'application doit référencer cette bibliothèque, même si elle sera déployée dans le cadre d'une autre application.

Conseil : dans IBM® App Connect Enterprise, les fichiers de schéma de modèle de message contenus dans les applications, les services d'intégration et les bibliothèques constituent la méthode privilégiée pour modéliser les messages dans la plupart des formats de données. Les jeux de messages sont obligatoires si vous utilisez les domaines MRM ou IDOC. Pour plus d'informations sur la modélisation des messages, voir Concepts de modélisation des messages.

Si les schémas sont déployés dans un ensemble de messages, vous devez effectuer les étapes suivantes.

Tous les schémas XML utilisés par IBM App Connect Enterprise doivent être créés sous forme de fichiers de définition de message au sein d'un ensemble de messages.

Pour créer et déployer un ensemble de messages pour la validation de schéma XML:

  1. Créez un ensemble de messages ou localisez un ensemble de messages existant.
  2. Vérifiez que le Domaine de messages par défaut de l'ensemble de messages est défini sur XMLNSCou que la case à cocher XMLNSC sous Domaines de messages pris en charge est sélectionnée pour indiquer que l'ensemble de messages prend en charge le domaine XMLNSC.
  3. Créez un fichier de définition de message dans l'ensemble de messages pour représenter votre message. Si vous disposez d'un schéma XML ou d'une DTD existante qui décrit votre message, vous pouvez l'importer. Vous pouvez répéter cette étape pour chaque message que vous souhaitez valider.
  4. Ajoutez l'ensemble de messages à un fichier BAR , qui génère le schéma XML requis dans un fichier avec l'extension .xsdzip, puis déployez le fichier BAR sur le noeud d'intégration.

Validation conforme aux normes

La validation XMLNSC est entièrement conforme au schéma XML v1.0 tel que défini dans les spécifications disponibles à l'adresse http://www.w3.org/TR/xmlschema-1/ et http://www.w3.org/TR/xmlschema-2/, avec les exceptions mineures suivantes:

  • Toute valeur en virgule flottante inférieure à 10E-43 est traitée comme zéro.
  • Tout membre d'un groupe ou d'un type complexe ayant à la fois minOccurs > 1024 et maxOccurs > 1024 est validé comme si minOccurs = 0 et maxOccurs n'était pas borné.

Validation des documents XML v1.1

Vous pouvez valider des documents conformes à la spécification XML v1.1 , mais la prise en charge est limitée par le fait que les documents de schéma XML v1.0 doivent être conformes à XML v1.0.

Par exemple, vous ne pouvez pas toujours déclarer un nom de balise XML v1.1 dans le schéma XML v1.0. Cette limitation n'est pas imposée par l'implémentation de l'analyseur syntaxique XMLNSC ; il s'agit d'une limitation du schéma XML v1.0.

Interprétation des erreurs de validation

Une erreur de validation est une erreur qui se produit lorsque le document XML enfreint les règles définies dans le schéma XML. La norme de schéma XML indique exactement ce que sont ces règles et comment elles doivent être appliquées. Les erreurs de validation que l'analyseur syntaxique XMLNSC émet contiennent des informations qui relient l'erreur à la règle de schéma XML qui a été violée.

Toutes les erreurs de validation sont signalées dans les messages BIP5025 ou BIP5026 . Les deux messages commencent par le texte suivant:
XML schema validation error '[cvc-error key: error description]'
Exemples :
'cvc-minInclusive-valid: The value "2" is not valid with respect to the minInclusive facet 
with value "3" for type "po:itemCountType".' 
'cvc-complex-type.2.4.a: Expecting element with local name "numItems" but saw "totalValue".' 
Pour trouver la règle de schéma XML qui a été violée, ouvrez la spécification de schéma XML et recherchez la clé d'erreur.

Exemple 1 : Ouvrir http://www.w3.org/TR/xmlschema-1/ et rechercher ‘cvc-minInclusive-valid'. Suivez le lien vers les règles de schéma XML pour la facette minInclusive .

Exemple 2: Ouvrez http://www.w3.org/TR/xmlschema-1/ et recherchez'cvc-complex-type'. Suivez le lien vers les règles de schéma XML pour valider le contenu d'un type complexe. Dans ce cas, la clé d'erreur contient des informations supplémentaires. La ‘2.4.a'fait référence à la sous-règle exacte qui a été violée. Il ne doit pas être inclus lors de la recherche de la règle.

Si la spécification de schéma XML ne fournit pas suffisamment d'informations, vous pouvez trouver plus d'informations à l'aide d'un moteur de recherche. La norme de schéma XML est très largement utilisée, et de nombreux tutoriels en ligne et d'autres ressources sont disponibles.

Restriction de validation XMLNSC

N'utilisez pas de modèles qui incluent un caractère générique sans limite suivi d'une classe de caractères négatifs pour valider les éléments de chaîne car une erreur se produit et la validation échoue même si la chaîne d'entrée est valide.

Par exemple, la validation de la chaîne d'entrée <StringWithXSDPattern>ADDDDDA</StringWithXSDPattern> génère une erreur cvc-pattern-valid si un modèle au format suivant <xs:pattern value="A.*[ˆD]"/> est utilisé dans le schéma. Le caractère générique sans limite est .* et la classe de caractères négatifs est [ˆD]. Vous pouvez remplacer la classe de caractères négatifs par une classe non négative pour éviter cette erreur: l'utilisation d'un modèle au format suivant A.*[ABC] dans cet exemple entraînera une validation correcte. L'utilisation d'un caractère générique non délimité suivi d'un groupe de capture contenant un ou plusieurs quantificateurs échappés, tel que ".*(\+|-)" , peut ne pas être validée correctement, même si la chaîne d'entrée est valide. Ce problème peut être résolu en utilisant une classe de caractères non négatifs, telle que ".*[+-]" , afin de garantir une validation correcte.