Elenco di controllo per la convalida printticket

Questo argomento non è aggiornato. Per le informazioni più aggiornate, vedere La specifica dello schema di stampa.

I provider PrintTicket devono convalidare PrintTicket prima di usarlo per qualsiasi scopo. Dopo aver convalidato PrintTicket, può essere restituito al client oppure può essere rimosso dopo l'uso. Questo elenco di controllo illustra le attività che il provider deve eseguire durante la convalida. Il processo di convalida modificherà spesso il contenuto di PrintTicket, anche se non modificherà un PrintTicket convalidato in precedenza.

La convalida viene sempre eseguita su un dispositivo specifico con un set di istanze Feature, Option e ParameterDef definite in un documento PrintCapabilities. Il codice di convalida deve avere accesso al set di istanze di Funzionalità (e alle istanze option contenute) e alle istanze ParameterDef per il dispositivo specifico e non deve accedere a PrintCapabilities. Le informazioni delle istanze Feature, Option e ParameterDef sono necessarie in determinate parti del processo di convalida.

  1. Durante i tentativi di individuare gli elementi corrispondenti o corrispondenti, si noti che gli spazi dei nomi degli elementi devono corrispondere prima che qualsiasi nome qualificato possa essere considerato una corrispondenza. Tutti i nomi degli elementi, i nomi degli attributi e i nomi delle istanze sono qualificati per lo spazio dei nomi. Per gli elementi annidati, le relative posizioni devono corrispondere prima che gli elementi vengano considerati una corrispondenza.

  2. Verificare che tutti i tag di elemento si trovino nello spazio dei nomi pubblico, siano definiti dallo schema PrintTicket, contengano gli attributi XML e i valori degli attributi appropriati e che la posizione di ogni tipo di elemento sia conforme all'utilizzo definito dallo schema PrintTicket.

  3. Determinare tutti gli spazi dei nomi segnalati dal documento PrintCapabilities. Rimuovere tutti gli elementi (e i relativi discendenti) da PrintTicket i cui nomi di istanza appartengono a spazi dei nomi non segnalati dal documento PrintCapabilities. Si noti la differenza tra questo caso e il caso seguente, che comporta nomi di istanza non riconosciuti all'interno di uno spazio dei nomi noto.

  4. A causa del fatto che gli schemi vengono continuamente estesi con l'aggiunta di nuove definizioni di istanza di elemento, il codice di convalida non deve essere scritto presupponendo che ogni nome di istanza in uno spazio dei nomi specificato sia noto. Il codice di convalida non può trattare i nomi di istanza non riconosciuti all'interno di uno spazio dei nomi noto come errori, né può eliminarli da PrintTicket.

  5. Se un'istanza di elemento ha un elemento di pari livello duplicato non consentito dallo schema PrintTicket, mantenere solo la prima occorrenza ed eliminare i duplicati, incluso il contenuto dell'elemento duplicato.

  6. Rimuovere da PrintTicket qualsiasi caratteristica o subfeature (e tutti i relativi elementi figlio) che non ha alcuna caratteristica corrispondente nel documento PrintCapabilities.

  7. Controllare la proprietà SelectionType definita nel documento PrintCapabilities per ognuna delle istanze di Feature rimanenti in PrintTicket. Qualsiasi caratteristica la cui proprietà SelectionType è impostata su PickOne deve avere esattamente un'istanza Option presente in PrintTicket, mentre una caratteristica la cui proprietà SelectionType è PickMany può avere più di una. Se una funzionalità PrintTicket non dispone di un'istanza option, specificare l'istanza di Option predefinita. Poiché si è il provider, si sa quale opzione è l'opzione predefinita per ogni funzionalità.

    Per una caratteristica la cui proprietà SelectionType è PickMany, con più opzioni selezionate in PrintTicket, verificare che nessuna opzione sia designata come IdentityOption. In caso affermativo, eliminare ogni altra opzione, lasciando solo l'opzione IdentityOption designata.

  8. Rimuovere qualsiasi istanza ParameterInit in PrintTicket senza un'istanza ParameterDef corrispondente nel documento PrintCapabilities.

    Per qualsiasi altra istanza di ParameterInit in PrintTicket, verificare che il valore per ognuno sia conforme all'istanza ParameterDef del documento PrintCapabilities. Se manca un valore, specificare il valore predefinito specificato in ParameterDef.

  9. Associare ogni istanza di Option in PrintTicket a un'opzione elencata nel documento PrintCapabilities corrispondente, in base ai risultati del processo di assegnazione dei punteggi. L'assegnazione dei punteggi è il processo di ricerca dell'opzione nel documento PrintCapabilities che corrisponde meglio all'opzione denominata in PrintTicket. Per una descrizione degli elementi presi in considerazione durante il processo di assegnazione dei punteggi, vedere Definizioni di opzioni. Sostituire ogni opzione di riferimento nell'oggetto PrintTicket in base all'opzione corrispondente corrispondente al documento PrintCapabilities candidato corrispondente. È anche possibile classificare tutti i candidati in base al punteggio e passare queste informazioni alla fase di risoluzione nel caso in cui un conflitto di vincoli impedisca l'uso del candidato migliore corrispondente. In questi casi, il processo di risoluzione può usare il secondo candidato migliore anziché scegliere un altro candidato in modo casuale.

  10. Per una caratteristica la cui proprietà SelectionType è impostata su PickMany e con più opzioni selezionate in PrintTicket, verificare che nessuna opzione sia designata come IdentityOption. Se esiste un'opzione di questo tipo, eliminare tutte le altre opzioni, lasciando solo quella designata IdentityOption. Questo passaggio deve essere eseguito prima e dopo l'applicazione del processo di assegnazione dei punteggi.

    Il motivo per cui questo passaggio deve essere eseguito due volte è che è possibile per il processo di assegnazione dei punteggi eseguire il mapping di più istanze di Option di riferimento alla stessa opzione candidata. In tal caso, eliminare eventuali istanze di opzione duplicate in modo che le opzioni elencate per una particolare funzionalità PickMany siano univoche.

  11. Aggiungere al printticket qualsiasi funzionalità presente nel documento PrintCapabilities che non viene visualizzato in PrintTicket. Per questo tipo di funzionalità, designare l'opzione predefinita come opzione selezionata.

  12. Determinare se sono presenti istanze ParameterDef che soddisfano tutti i criteri seguenti:

    • L'istanza ParameterDef viene visualizzata nel documento PrintCapabilities, ma non in PrintTicket.

    • La proprietà obbligatoria dell'istanza ParameterDef è impostata su Condizionale o Condizionale.

    • L'istanza ParameterDef fa riferimento a un'istanza ParameterRef in PrintTicket all'interno di un'istanza di Option.

    Per ogni istanza ParameterDef di questo tipo nel documento PrintCapabilities, aggiungere all'oggetto PrintTicket un'istanza ParameterInit corrispondente. Impostare il valore delle istanze ParameterInit appena aggiunte sul valore predefinito specificato dalle istanze ParameterDef corrispondenti.

  13. Eseguire il rilevamento dei conflitti di vincolo e modificare la configurazione per eliminare tali conflitti. In questo argomento non viene definito un processo specifico da utilizzare per risolvere i conflitti di vincolo. È necessario decidere quale istanza feature o ParameterInit può essere modificata e un'opzione o un valore appropriato, rispettivamente, per selezionare che abbia l'impatto minimo sulla finalità complessiva della configurazione specificata in PrintTicket. Come accennato in precedenza, è possibile usare il punteggio di mapping di ogni opzione e usare l'opzione con il secondo punteggio più alto. Per determinare quale caratteristica o ParameterInit modificare, è possibile definire una proprietà privata che il client può aggiungere a PrintTicket. Questa proprietà può definire una priorità per le istanze Feature e ParameterInit in modo che il processo del resolver sia informato delle istanze feature o ParameterInit importanti per il client (e che devono essere mantenute in PrintTicket) e che sono meno importanti.

  14. Se il processo di risoluzione dei vincoli ha causato modifiche in PrintTicket a qualsiasi istanza ParameterRef per cui la proprietà obbligatoria è impostata su Condizionale, aggiungere istanze ParameterInit con valori predefiniti per quelli visualizzati e rimuovere qualsiasi istanza ParameterInit per un'istanza ParameterRef che non viene più visualizzata.

  15. Rimuovere tutte le istanze di Property e il relativo contenuto che vengono visualizzati all'interno delle istanze di Option in PrintTicket. Gli elementi della proprietà non hanno alcun ruolo in PrintTicket. Se l'opzione convalidata per una particolare caratteristica corrisponde perfettamente all'opzione prevalidata, trasferire tutte le istanze di Property in tale opzione dal printticket prevalidation all'oggetto PrintTicket convalidato, in base alla condizione in cui gli spazi dei nomi delle istanze di Property vengono registrati nel documento PrintCapabilities. Si noti che per due istanze di Option deve essere considerata una corrispondenza perfetta, per ogni ScoredProperty presente in un'opzione deve essere presente un scoredProperty corrispondente nell'altra opzione e i valori di entrambe le istanze scoredProperty devono essere uguali.

  16. Se il provider PrintTicket riconosce e supporta tutte le istanze di Proprietà private o pubbliche che sono sopravvissute a questo punto, eseguirne la convalida. Non eliminare una proprietà a questo punto solo perché non la riconosci, potrebbe essere destinata a un'altra fase di elaborazione dei documenti.

Specifica dello schema di stampa