Überprüfungsprüfliste für PrintTicket

Dieses Thema ist nicht aktuell. Die aktuellsten Informationen finden Sie in der Druckschemaspezifikation.

PrintTicket-Anbieter müssen das PrintTicket überprüfen, bevor es für einen beliebigen Zweck verwendet wird. Nachdem das PrintTicket überprüft wurde, kann es an den Client zurückgegeben oder nach der Verwendung verworfen werden. Diese Checkliste deckt die Aufgaben ab, die der Anbieter während der Validierung ausführen muss. Der Überprüfungsprozess ändert häufig den Inhalt des PrintTicket, obwohl er kein zuvor überprüftes PrintTicket ändert.

Die Überprüfung wird immer für ein bestimmtes Gerät durchgeführt, das über einen Satz von Feature-, Option- und ParameterDef-Instanzen verfügt, die in einem PrintCapabilities-Dokument definiert sind. Der Validierungscode sollte Zugriff auf die Featureinstanzen (und die enthaltenen Option-Instanzen) und ParameterDef-Instanzen für das jeweilige Gerät haben und nicht auf printCapabilities zugreifen müssen. Die Informationen aus den Instanzen Feature, Option und ParameterDef werden in bestimmten Teilen des Validierungsprozesses benötigt.

  1. Beachten Sie beim Suchen nach entsprechenden oder übereinstimmenden Elementen, dass die Namespaces der Elemente übereinstimmen müssen, bevor ein qualifizierter Name als Übereinstimmung betrachtet werden kann. Alle Elementnamen, Attributnamen und instance Namen sind namespacequalifiziert. Bei elementen, die geschachtelt sind, müssen ihre Speicherorte übereinstimmen, bevor die Elemente als Übereinstimmung betrachtet werden.

  2. Stellen Sie sicher, dass sich alle Elementtags im öffentlichen Namespace befinden, durch das PrintTicket-Schema definiert sind, die richtigen XML-Attribute und Attributwerte enthalten und dass die Position der einzelnen Elementtypen der vom PrintTicket-Schema definierten Verwendung entspricht.

  3. Ermitteln Sie alle Namespaces, die vom PrintCapabilities-Dokument gemeldet werden. Entfernen Sie alle Elemente (und ihre Nachfolger) aus dem PrintTicket-Dokument, deren instance Namen zu Namespaces gehören, die nicht von PrintCapabilities gemeldet werden. Beachten Sie den Unterschied zwischen diesem Fall und dem folgenden Fall, der nicht erkannte instance Namen in einem bekannten Namespace umfasst.

  4. Da die Schemas ständig um neue Element- instance Definitionen erweitert werden, sollte der Validierungscode nicht unter der Annahme geschrieben werden, dass jeder instance Name in einem bestimmten Namespace bekannt ist. Der Validierungscode kann nicht erkannte instance Namen in einem bekannten Namespace nicht als Fehler behandeln und sie auch nicht aus dem PrintTicket löschen.

  5. Wenn ein Element instance ein doppeltes gleichgeordnetes Element aufweist, das vom PrintTicket-Schema nicht zulässig ist, behalten Sie nur das erste Vorkommen bei, und löschen Sie die Duplikate, einschließlich des Inhalts des duplizierten Elements.

  6. Entfernen Sie aus dem PrintTicket alle Features oder Unterfeatures (und alle untergeordneten Elemente), die über kein entsprechendes Feature im PrintCapabilities-Dokument verfügen.

  7. Überprüfen Sie die selectionType-Eigenschaft, die im PrintCapabilities-Dokument für jede der verbleibenden Featureinstanzen im PrintTicket definiert ist. Jedes Feature, dessen SelectionType-Eigenschaft auf PickOne festgelegt ist, muss genau eine Option instance im PrintTicket vorhanden sein, während ein Feature, dessen SelectionType-Eigenschaft PickMany ist, mehrere aufweisen kann. Wenn ein PrintTicket-Feature über keine Option instance verfügt, geben Sie den Standardoptions-instance an. Da Sie der Anbieter sind, wissen Sie, welche Option die Standardoption für jedes Feature ist.

    Vergewissern Sie sich bei einem Feature, dessen SelectionType-Eigenschaft PickMany ist und im PrintTicket mehr als eine Option ausgewählt ist, dass keine Option als IdentityOption festgelegt ist. Falls vorhanden, löschen Sie jede andere Option, wobei nur die angegebene IdentityOption belassen wird.

  8. Entfernen Sie alle ParameterInit-instance im PrintTicket, das keine entsprechende ParameterDef-instance im PrintCapabilities-Dokument enthält.

    Überprüfen Sie für alle anderen ParameterInit-Instanzen im PrintTicket, ob der Wert für jede der ParameterDef-instance des PrintCapabilities-Dokuments entspricht. Wenn ein Wert fehlt, geben Sie den Standardwert an, der im ParameterDef angegeben ist.

  9. Koppeln Sie jede Option instance im PrintTicket mit einer Option, die im entsprechenden Feature im PrintCapabilities-Dokument aufgeführt ist, basierend auf den Ergebnissen des Bewertungsprozesses. Bei der Bewertung wird die Option im PrintCapabilities-Dokument ermittelt, die am besten mit der Option im PrintTicket übereinstimmt. Eine Beschreibung, was beim Bewertungsprozess berücksichtigt wird, finden Sie unter Optionsdefinitionen. Ersetzen Sie jede Referenzoption im PrintTicket durch die entsprechende PrintCapabilities-Dokumentoption, die am besten geeignet ist. Sie können auch alle Kandidaten nach Bewertung bewerten und diese Informationen an die Auflösungsphase übergeben, falls ein Einschränkungskonflikt verhindert, dass der beste Abgleichskandidat verwendet wird. In solchen Fällen kann der Auflösungsprozess den zweitbesten Kandidaten verwenden, anstatt einen anderen Kandidaten nach dem Zufallsprinzip zu wählen.

  10. Vergewissern Sie sich bei einem Feature, dessen SelectionType-Eigenschaft auf PickMany festgelegt ist und bei dem mehrere Optionen im PrintTicket ausgewählt sind, dass keine Option als IdentityOption festgelegt ist. Wenn eine solche Option vorhanden ist, löschen Sie jede andere Option, wobei nur die angegebene IdentityOption belassen wird. Dieser Schritt muss vor und nach dem Anwenden des Bewertungsprozesses ausgeführt werden.

    Der Grund dafür, dass dieser Schritt zweimal ausgeführt werden muss, besteht darin, dass der Bewertungsprozess mehrere Verweisoptionsinstanzen derselben Kandidatenoption zuordnen kann. Löschen Sie in diesem Fall alle doppelten Optionsinstanzen, damit die für ein bestimmtes PickMany-Feature aufgeführten Optionen eindeutig sind.

  11. Fügen Sie dem PrintTicket ein beliebiges Feature hinzu, das im PrintCapabilities-Dokument vorhanden ist, das nicht im PrintTicket angezeigt wird. Legen Sie für ein solches Feature die Standardoption als ausgewählte Option fest.

  12. Ermitteln Sie, ob ParameterDef-Instanzen vorhanden sind, die alle folgenden Kriterien erfüllen:

    • Die ParameterDef-instance wird im PrintCapabilities-Dokument, aber nicht im PrintTicket-Dokument angezeigt.

    • Die obligatorische Eigenschaft des ParameterDef-instance ist entweder auf Bedingungslos oder Bedingt festgelegt.

    • Auf die ParameterDef-instance wird von einem ParameterRef-instance im PrintTicket in einem Option-instance verwiesen.

    Fügen Sie für jeden parameterDef-instance im PrintCapabilities-Dokument dem PrintTicket eine entsprechende ParameterInit-instance hinzu. Legen Sie den Wert der neu hinzugefügten ParameterInit-Instanzen auf den Standardwert value fest, der von den entsprechenden ParameterDef-Instanzen angegeben wird.

  13. Führen Sie die Erkennung von Einschränkungskonflikten durch, und ändern Sie die Konfiguration, um solche Konflikte zu beseitigen. In diesem Thema wird kein bestimmter Prozess definiert, der zum Auflösen von Einschränkungskonflikten verwendet werden soll. Sie müssen entscheiden, welche Feature- oder ParameterInit-instance geändert werden kann, und eine geeignete Option bzw. einen geeigneten Wert, um auszuwählen, der die geringsten Auswirkungen auf die Gesamtabsicht der im PrintTicket angegebenen Konfiguration hat. Wie bereits erwähnt, können Sie die Zuordnungsbewertung jeder Option verwenden und die Option mit der zweithöchsten Bewertung verwenden. Um zu bestimmen, welches Feature oder ParameterInit geändert werden soll, können Sie eine private Eigenschaft definieren, die der Client dem PrintTicket hinzufügen kann. Diese Eigenschaft kann eine Priorität für Feature- und ParameterInit-Instanzen definieren, sodass der Resolverprozess darüber informiert wird, welche Feature- oder ParameterInit-Instanzen für den Client wichtig sind (und im PrintTicket beibehalten werden müssen) und welche weniger wichtig sind.

  14. Wenn der Einschränkungsauflösungsprozess Änderungen im PrintTicket an ParameterRef-Instanzen verursacht hat, für die die obligatorische Eigenschaft auf Bedingt festgelegt ist, fügen Sie ParameterInit-Instanzen mit Standardwerten für die jetzt angezeigten hinzu, und entfernen Sie alle ParameterInit-instance für ein ParameterRef-instance, das nicht mehr angezeigt wird.

  15. Entfernen Sie alle Property-Instanzen und deren Inhalt, die in Option-Instanzen im PrintTicket angezeigt werden. Eigenschaftselemente haben keine Rolle im PrintTicket. Wenn die überprüfte Option für ein bestimmtes Feature perfekt mit der vorab überprüften Option übereinstimmt, übertragen Sie alle Property-Instanzen in dieser Option von der Vorabvalidierung PrintTicket in das jetzt überprüfte PrintTicket, vorbehaltlich der Bedingung, dass Namespaces von Property-Instanzen im PrintCapabilities-Dokument registriert sind. Beachten Sie, dass für zwei Option-Instanzen, die als perfekte Übereinstimmung angesehen werden können, für jede ScoredProperty in einer Option gefunden wird, ein entsprechendes ScoredProperty in der anderen Option vorhanden sein muss, und die Werte beider ScoredProperty-Instanzen müssen identisch sein.

  16. Wenn Ihr PrintTicket-Anbieter private oder öffentliche Property-Instanzen erkennt und unterstützt, die bis zu diesem Punkt erhalten sind, führen Sie eine Überprüfung für diese Instanzen durch. Löschen Sie eine Eigenschaft an diesem Punkt nicht, nur weil Sie sie nicht erkennen. Möglicherweise ist sie für eine andere Phase der Dokumentverarbeitung vorgesehen.

Druckschemaspezifikation