Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique n’est pas actuelle. Pour obtenir les informations les plus actuelles, consultez La spécification du schéma d’impression.
Les fournisseurs PrintTicket doivent valider le PrintTicket avant de l’utiliser à quelque fin que ce soit. Une fois le PrintTicket validé, il peut être retourné au client ou ignoré après utilisation. Cette liste de contrôle décrit les tâches que le fournisseur doit effectuer pendant la validation. Le processus de validation modifie fréquemment le contenu du PrintTicket, bien qu’il ne modifie pas un PrintTicket précédemment validé.
La validation est toujours effectuée sur un appareil spécifique qui a un ensemble d’instances Feature, Option et ParameterDef définies dans un document PrintCapabilities. Le code de validation doit avoir accès à l’ensemble d’instances de fonctionnalité (et aux instances Option contenues) et aux instances ParameterDef pour l’appareil spécifique, et ne doit pas avoir besoin d’accéder à PrintCapabilities. Les informations des instances Feature, Option et ParameterDef sont nécessaires dans certaines parties du processus de validation.
Lors des tentatives de localisation des éléments correspondants ou correspondants, notez que les espaces de noms des éléments doivent correspondre avant qu’un nom qualifié puisse être considéré comme une correspondance. Tous les noms d’éléments, les noms d’attribut et les noms de instance sont qualifiés pour l’espace de noms. Pour les éléments imbriqués, leurs emplacements doivent correspondre avant que les éléments soient considérés comme une correspondance.
Vérifiez que toutes les balises d’élément se trouvent dans l’espace de noms public, qu’elles sont définies par le schéma PrintTicket, qu’elles contiennent les attributs XML et les valeurs d’attribut appropriés, et que l’emplacement de chaque type d’élément est conforme à l’utilisation définie par le schéma PrintTicket.
Déterminez tous les espaces de noms signalés par le document PrintCapabilities. Supprimez tous les éléments (et leurs descendants) du PrintTicket dont les noms instance appartiennent à des espaces de noms non signalés par le document PrintCapabilities. Notez la différence entre ce cas et le cas suivant, qui implique des noms de instance non reconnus dans un espace de noms connu.
Étant donné que les schémas sont continuellement étendus avec l’ajout de nouveaux éléments instance définitions, le code de validation ne doit pas être écrit en supposant que chaque nom instance dans un espace de noms donné est connu. Le code de validation ne peut pas traiter les noms de instance non reconnus au sein d’un espace de noms connu en tant qu’erreurs, ni les supprimer du PrintTicket.
Si un élément instance a un frère en double qui n’est pas autorisé par le schéma PrintTicket, conservez uniquement la première occurrence et supprimez les doublons, y compris le contenu de l’élément dupliqué.
Supprimez du PrintTicket toute fonctionnalité ou sous-section (et tous ses enfants) qui n’a aucune fonctionnalité correspondante dans le document PrintCapabilities.
Vérifiez la propriété SelectionType définie dans le document PrintCapabilities pour chacune des instances de fonctionnalité restantes dans le PrintTicket. Toute fonctionnalité dont la propriété SelectionType est définie sur PickOne doit avoir exactement une option instance présente dans le PrintTicket, tandis qu’une fonctionnalité dont la propriété SelectionType est PickMany peut en avoir plusieurs. Si une fonctionnalité PrintTicket n’a pas d’option instance, indiquez l’option par défaut instance. Étant donné que vous êtes le fournisseur, vous savez quelle option est l’option par défaut pour chaque fonctionnalité.
Pour une fonctionnalité dont la propriété SelectionType est PickMany, avec plusieurs options sélectionnées dans le PrintTicket, vérifiez qu’aucune option n’est désignée comme IdentityOption. Le cas échéant, supprimez toutes les autres options, en ne laissant qu’une seule IdentityOption désignée.
Supprimez toute instance ParameterInit dans le PrintTicket qui n’a aucun instance ParameterDef correspondant dans le document PrintCapabilities.
Pour toutes les autres instances ParameterInit dans printTicket, vérifiez que la valeur de chacune d’elles est conforme à la instance ParameterDef du document PrintCapabilities. S’il manque une valeur, indiquez la valeur par défaut fournie dans parameterDef.
Associez chaque option instance dans printTicket avec une option répertoriée dans la fonctionnalité correspondante dans le document PrintCapabilities, en fonction des résultats du processus de scoring. Le scoring est le processus de recherche de l’option dans le document PrintCapabilities qui correspond le mieux à l’option nommée dans le PrintTicket. Pour obtenir une description de ce qui est pris en compte pendant le processus de scoring, consultez Définitions d’options. Remplacez chaque option de référence dans printTicket par l’option de document PrintCapabilities candidat correspondant le mieux correspondant. Vous pouvez également classer tous les candidats par score et passer ces informations à l’étape de résolution au cas où un conflit de contraintes empêche l’utilisation du meilleur candidat correspondant. Dans ce cas, le processus de résolution peut utiliser le deuxième meilleur candidat plutôt que de choisir un autre candidat au hasard.
Pour une fonctionnalité dont la propriété SelectionType est définie sur PickMany et dont plusieurs options sont sélectionnées dans printTicket, vérifiez qu’aucune option n’est désignée comme IdentityOption. S’il existe une telle option, supprimez toutes les autres options, en ne laissant qu’une seule IdentityOption désignée. Cette étape doit être effectuée avant et après l’application du processus de scoring.
La raison pour laquelle cette étape doit être effectuée deux fois est qu’il est possible pour le processus de scoring de mapper plusieurs instances d’option de référence à la même option candidate. Si cela se produit, supprimez toutes les instances d’option en double afin que les options répertoriées pour une fonctionnalité PickMany particulière soient uniques.
Ajoutez au PrintTicket toute fonctionnalité présente dans le document PrintCapabilities qui n’apparaît pas dans le PrintTicket. Pour une telle fonctionnalité, désignez l’option par défaut comme option sélectionnée.
Déterminez s’il existe des instances ParameterDef qui répondent à tous les critères suivants :
Le instance ParameterDef apparaît dans le document PrintCapabilities, mais pas dans le PrintTicket.
La propriété Obligatoire de l’instance ParameterDef est définie sur Conditionnalité ou Condition.
Le instance ParameterDef est référencé par un instance ParameterRef dans le PrintTicket d’un instance Option.
Pour chaque instance ParameterDef de ce type dans le document PrintCapabilities, ajoutez au PrintTicket une instance ParameterInit correspondante. Définissez la Valeur des instances ParameterInit nouvellement ajoutées sur la Valeur par défaut spécifiée par les instances ParameterDef correspondantes.
Effectuez la détection des conflits de contraintes et modifiez la configuration pour éliminer de tels conflits. Cette rubrique ne définit pas de processus particulier à utiliser pour résoudre les conflits de contraintes. Vous devez décider de la fonctionnalité ou du paramètreInit instance qui peuvent être modifiés, et une option ou une valeur appropriée, respectivement, à sélectionner qui a le moins d’impact sur l’intention globale de la configuration spécifiée dans le PrintTicket. Comme mentionné précédemment, vous pouvez utiliser le score de mappage de chaque option et utiliser l’option avec le deuxième score le plus élevé. Pour déterminer la fonctionnalité ou parameterInit à modifier, vous pouvez définir une propriété privée que le client peut ajouter au PrintTicket. Cette propriété peut définir une priorité pour les instances Feature et ParameterInit afin que le processus de résolution soit informé des instances Feature ou ParameterInit qui sont importantes pour le client (et doivent être conservées dans le PrintTicket) et celles qui sont les moins importantes.
Si le processus de résolution de contrainte a entraîné des modifications dans le PrintTicket pour toutes les instances ParameterRef pour lesquelles la propriété obligatoire est définie sur Conditionnel, ajoutez des instances ParameterInit avec des valeurs par défaut pour celles qui s’affichent et supprimez les instance ParameterInit pour un instance ParameterRef qui n’apparaît plus.
Supprimez toutes les instances de propriété et leur contenu qui s’affichent dans les instances d’option dans le PrintTicket. Les éléments de propriété n’ont aucun rôle dans le PrintTicket. Si l’option validée pour une fonctionnalité particulière correspond parfaitement à l’option prévalidée, transférez toutes les instances property de cette option du PrintTicket de prévalidation vers le PrintTicket maintenant validé, sous réserve de la condition que les espaces de noms des instances de propriété soient inscrits dans le document PrintCapabilities. Notez que pour que deux instances d’option soient considérées comme une correspondance parfaite, pour chaque ScoredProperty trouvée dans une option, il doit y avoir un ScoredProperty correspondant dans l’autre option, et les valeurs des deux instances ScoredProperty doivent être les mêmes.
Si votre fournisseur PrintTicket reconnaît et prend en charge toutes les instances de propriété privées ou publiques qui ont survécu à ce stade, effectuez une validation sur celles-ci. Ne supprimez pas une propriété à ce stade simplement parce que vous ne la reconnaissez pas. Elle peut être destinée à une autre phase de traitement de document.
Rubriques connexes