Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema no está actualizado. Para obtener la información más reciente, consulte especificación de esquema de impresión.
Los proveedores de PrintTicket deben validar printTicket antes de usarlo para cualquier propósito. Después de validar printTicket, se puede devolver al cliente o se puede descartar después de su uso. Esta lista de comprobación abarca las tareas que el proveedor debe realizar durante la validación. El proceso de validación modificará con frecuencia el contenido de PrintTicket, aunque no modificará un PrintTicket validado previamente.
La validación siempre se realiza en un dispositivo específico que tiene un conjunto de instancias Feature, Option y ParameterDef definidas en un documento PrintCapabilities. El código de validación debe tener acceso al conjunto de instancias de característica (y a las instancias de Option contenidas) y ParameterDef para el dispositivo específico y no debe tener acceso a PrintCapabilities. La información de las instancias Feature, Option y ParameterDef es necesaria en determinadas partes del proceso de validación.
Durante los intentos de buscar los elementos correspondientes o coincidentes, tenga en cuenta que los espacios de nombres de los elementos deben coincidir antes de que cualquier Nombre calificado se pueda considerar una coincidencia. Todos los nombres de elementos, los nombres de atributo y los nombres de instancia están calificados para el espacio de nombres. Para los elementos anidados, sus ubicaciones deben coincidir antes de que los elementos se consideren una coincidencia.
Compruebe que todas las etiquetas de elemento están en el espacio de nombres público, se definen mediante el esquema PrintTicket, contienen los atributos XML y los valores de atributo adecuados, y que la ubicación de cada tipo de elemento se ajusta al uso definido por el esquema PrintTicket.
Determine todos los espacios de nombres notificados por el documento PrintCapabilities. Quite todos los elementos (y sus descendientes) del documento PrintTicket cuyos nombres de instancia pertenecen a espacios de nombres no notificados por PrintCapabilities. Tenga en cuenta la diferencia entre este caso y el caso siguiente, lo que implica nombres de instancia no reconocidos dentro de un espacio de nombres conocido.
Debido al hecho de que los esquemas se extienden continuamente con la adición de nuevas definiciones de instancia de elemento, el código de validación no debe escribirse bajo la suposición de que se conoce cada nombre de instancia en un espacio de nombres determinado. El código de validación no puede tratar los nombres de instancia no reconocidos dentro de un espacio de nombres conocido como errores, ni puede eliminarlos de PrintTicket.
Si alguna instancia de elemento tiene un elemento relacionado duplicado que no está permitido por el esquema PrintTicket, mantenga solo la primera aparición y elimine los duplicados, incluido el contenido del elemento duplicado.
Quite de PrintTicket cualquier característica o subfeature (y todos sus elementos secundarios) que no tenga ninguna característica correspondiente en el documento PrintCapabilities.
Compruebe la propiedad SelectionType definida en el documento PrintCapabilities para cada una de las instancias de característica restantes de PrintTicket. Cualquier característica cuya propiedad SelectionType esté establecida en PickOne debe tener exactamente una instancia option presente en PrintTicket, mientras que una característica cuya propiedad SelectionType es PickMany puede tener más de una. Si una característica PrintTicket no tiene ninguna instancia de Option, proporcione la instancia de Option predeterminada. Dado que es el proveedor, sabe qué opción es la opción predeterminada para cada característica.
Para una característica cuya propiedad SelectionType es PickMany, con más de una opción seleccionada en PrintTicket, compruebe que ninguna opción se designe como IdentityOption. Si existe, elimine todas las demás opciones, dejando solo la designada IdentityOption.
Quite cualquier instancia de ParameterInit en printTicket que no tenga ninguna instancia ParameterDef correspondiente en el documento PrintCapabilities.
Para cualquier otra instancia de ParameterInit de PrintTicket, compruebe que el valor de cada uno se ajusta a la instancia ParameterDef del documento PrintCapabilities. Si falta un valor, proporcione el valor predeterminado proporcionado en ParameterDef.
Empareje cada instancia de Option en PrintTicket con una opción enumerada en la característica correspondiente en el documento PrintCapabilities, en función de los resultados del proceso de puntuación. La puntuación es el proceso de buscar la opción en el documento PrintCapabilities que mejor coincida con la opción denominada en PrintTicket. Para obtener una descripción de lo que se tiene en cuenta durante el proceso de puntuación, consulte Definiciones de opciones. Reemplace cada opción de referencia en PrintTicket por la opción del documento PrintCapabilities candidata correspondiente. También puede clasificar todos los candidatos por puntuación y pasar esta información a la fase de resolución en caso de que un conflicto de restricción impida que se use el mejor candidato coincidente. En tales casos, el proceso de resolución puede usar el segundo mejor candidato en lugar de elegir otro candidato de forma aleatoria.
Para una característica cuya propiedad SelectionType esté establecida en PickMany y que tenga más de una opción seleccionada en PrintTicket, compruebe que ninguna opción se designe como IdentityOption. Si existe dicha opción, elimine todas las demás opciones, dejando solo la designada IdentityOption. Este paso debe realizarse antes y después de aplicar el proceso de puntuación.
El motivo por el que este paso se debe realizar dos veces es que es posible que el proceso de puntuación asigne varias instancias de option de referencia a la misma opción candidata. Si esto sucede, elimine las instancias de Option duplicadas para que las opciones enumeradas para una característica PickMany determinada sean únicas.
Agregue a PrintTicket cualquier característica presente en el documento PrintCapabilities que no aparezca en PrintTicket. Para esta característica, designe la opción predeterminada como opción seleccionada.
Determine si hay instancias parameterDef que cumplan todos los criterios siguientes:
La instancia parameterDef aparece en el documento PrintCapabilities, pero no en PrintTicket.
La propiedad mandatory de la instancia ParameterDef se establece en Incondicional o Condicional.
La instancia parameterDef se hace referencia a la instancia de ParameterRef en PrintTicket dentro de una instancia de Option.
Para cada instancia de ParameterDef del documento PrintCapabilities, agregue a PrintTicket una instancia parameterInit correspondiente. Establezca el valor de las instancias de ParameterInit recién agregadas en el valor predeterminado especificado por las instancias parameterDef correspondientes.
Realice la detección de conflictos de restricciones y modifique la configuración para eliminar dichos conflictos. En este tema no se define un proceso determinado que se va a usar para resolver conflictos de restricciones. Debe decidir qué característica o instancia de ParameterInit se puede cambiar y una opción o un valor adecuados, respectivamente, para seleccionar que tenga el menor impacto en la intención general de la configuración especificada en PrintTicket. Como se mencionó anteriormente, es posible que desee usar la puntuación de asignación de cada opción y usar la opción con la segunda puntuación más alta. Para determinar qué característica o ParameterInit se va a cambiar, es posible que desee definir una propiedad privada que el cliente pueda agregar a PrintTicket. Esta propiedad puede definir una prioridad para las instancias feature y ParameterInit para que el proceso de resolución se informe de qué características o instancias parameterInit son importantes para el cliente (y deben conservarse en PrintTicket) y cuáles son menos importantes.
Si el proceso de resolución de restricciones ha provocado cambios en PrintTicket en las instancias de ParameterRef para las que la propiedad obligatoria está establecida en Condicional, agregue instancias parameterInit con los valores predeterminados para los que ahora aparecen y quite cualquier instancia de ParameterInit para una instancia de ParameterRef que ya no aparezca.
Quite todas las instancias de Property y su contenido que aparecen dentro de las instancias de Option en PrintTicket. Los elementos property no tienen ningún rol en PrintTicket. Si la opción validada para una característica determinada coincide perfectamente con la opción prevalidada, transfiera todas las instancias de Property de esa opción de la printTicket de validación previa a printTicket validada ahora, sujeto a la condición de que los espacios de nombres de las instancias de Property se registren en el documento PrintCapabilities. Tenga en cuenta que, para que dos instancias de Option se consideren una coincidencia perfecta, para cada ScoredProperty encontrada en una opción, debe haber una propiedad scoredproperty correspondiente en la otra opción y los valores de ambas instancias scoredProperty deben ser iguales.
Si el proveedor printTicket reconoce y admite instancias privadas o públicas de property que han sobrevivido hasta este momento, realice la validación en ellas. No elimine una propiedad en este momento solo porque no la reconoce, podría estar pensada para otra fase del procesamiento de documentos.
Temas relacionados