Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini tidak terkini. Untuk informasi terbaru, lihat Spesifikasi Skema Cetak.
Penyedia PrintTicket harus memvalidasi PrintTicket sebelum menggunakannya untuk tujuan apa pun. Setelah PrintTicket divalidasi, itu dapat dikembalikan ke klien, atau mungkin dibuang setelah digunakan. Daftar periksa ini mencakup tugas yang harus dilakukan penyedia selama validasi. Proses validasi akan sering mengubah konten PrintTicket, meskipun tidak akan mengubah PrintTicket yang divalidasi sebelumnya.
Validasi selalu dilakukan terhadap perangkat tertentu yang memiliki sekumpulan instans Fitur, Opsi, dan ParameterDef yang ditentukan dalam dokumen PrintCapabilities. Kode validasi harus memiliki akses ke kumpulan instans Fitur (dan instans Opsi yang terkandung) dan instans ParameterDef untuk perangkat tertentu, dan seharusnya tidak perlu mengakses PrintCapabilities. Informasi dari instans Fitur, Opsi, dan ParameterDef diperlukan di bagian tertentu dari proses validasi.
Selama upaya untuk menemukan elemen yang sesuai atau cocok, perhatikan bahwa namespace elemen harus cocok sebelum Nama Yang Memenuhi Syarat dapat dianggap cocok. Semua nama elemen, Nama atribut, dan nama instans memenuhi syarat namespace. Untuk elemen yang ditumpuk, lokasinya harus cocok sebelum elemen dianggap cocok.
Verifikasi bahwa semua tag elemen berada di namespace publik, didefinisikan oleh Skema PrintTicket, berisi Atribut XML dan Nilai Atribut yang tepat, dan lokasi setiap jenis elemen sesuai dengan penggunaan yang ditentukan Skema PrintTicket.
Tentukan semua namespace yang dilaporkan oleh dokumen PrintCapabilities. Hapus semua elemen (dan turunannya) dari PrintTicket yang nama instansnya termasuk dalam namespace layanan yang tidak dilaporkan oleh dokumen PrintCapabilities. Perhatikan perbedaan antara kasus ini dan kasus berikut, yang melibatkan nama instans yang tidak dikenal dalam namespace yang diketahui.
Karena fakta bahwa skema terus diperluas dengan penambahan definisi instans elemen baru, kode validasi tidak boleh ditulis dengan asumsi bahwa setiap nama instans di namespace tertentu diketahui. Kode validasi tidak dapat memperlakukan nama instans yang tidak dikenal dalam namespace yang dikenal sebagai kesalahan, juga tidak dapat menghapusnya dari PrintTicket.
Jika ada instans elemen yang memiliki saudara duplikat yang tidak diizinkan oleh Skema PrintTicket, simpan hanya kemunculan pertama dan hapus duplikat, termasuk konten elemen duplikat.
Hapus setiap Fitur atau subfitur (beserta semua turunannya) dari PrintTicket yang tidak memiliki Fitur yang sesuai dalam dokumen PrintCapabilities.
Periksa Properti SelectionType yang ditentukan dalam dokumen PrintCapabilities untuk setiap instans Fitur yang tersisa di PrintTicket. Setiap Fitur yang Properti SelectionType-nya diatur sebagai PickOne harus memiliki tepat satu pilihan Opsi yang ada dalam PrintTicket, sedangkan Fitur yang Properti SelectionType-nya diatur sebagai PickMany dapat memiliki lebih dari satu. Jika Fitur PrintTicket tidak memiliki instans Opsi, berikan instans Opsi default. Karena Anda adalah penyedia, Anda tahu Opsi mana yang merupakan Opsi default untuk setiap Fitur.
Untuk Fitur yang Properti SelectionType-nya adalah PickMany, dengan lebih dari satu Opsi dipilih di PrintTicket, verifikasi bahwa tidak ada Opsi yang ditetapkan sebagai IdentityOption. Jika ada, hapus setiap Opsi lainnya, hanya menyisakan satu IdentityOption yang ditunjuk.
Hapus instans ParameterInit apa pun di PrintTicket yang tidak memiliki instans ParameterDef yang sesuai dalam dokumen PrintCapabilities.
Untuk setiap instans ParameterInit lainnya di PrintTicket, verifikasi bahwa Nilai masing-masing mematuhi instans ParameterDef dalam dokumen PrintCapabilities. Jika Nilai hilang, berikan default yang disediakan di ParameterDef.
Pasangkan setiap instans Opsi di PrintTicket dengan opsi yang tercantum dalam Fitur yang sesuai dalam dokumen PrintCapabilities, berdasarkan hasil dari proses pemberian skor. Skoring adalah proses menemukan opsi dalam dokumen PrintCapabilities yang paling cocok dengan opsi yang disebutkan dalam PrintTicket. Untuk deskripsi tentang apa yang diperhitungkan selama proses penilaian, lihat Definisi Opsi . Ganti setiap opsi referensi di PrintTicket dengan opsi kandidat dalam PrintCapabilities yang paling sesuai. Anda juga dapat memberi peringkat semua kandidat berdasarkan skor dan meneruskan informasi ini ke tahap penyelesaian jika konflik batasan mencegah kandidat yang paling cocok digunakan. Dalam kasus seperti itu, proses penyelesaian dapat menggunakan kandidat terbaik kedua daripada memilih kandidat lain secara acak.
Untuk Fitur yang Properti SelectionType-nya diatur ke PickMany, dan yang memiliki lebih dari satu Opsi yang dipilih di PrintTicket, pastikan bahwa tidak ada Opsi yang ditetapkan sebagai IdentityOption. Jika Opsi seperti itu ada, hapus setiap Opsi lainnya, hanya menyisakan satu IdentityOption yang ditunjuk. Langkah ini harus dilakukan sebelum dan sesudah proses penilaian diterapkan.
Alasan mengapa langkah ini harus dilakukan dua kali adalah karena mungkin bagi proses penilaian untuk memetakan beberapa instance Opsi referensi ke Opsi kandidat yang sama. Jika itu terjadi, hapus instance Opsi duplikat sehingga Opsi yang tercantum pada Fitur PickMany tertentu menjadi unik.
Tambahkan ke PrintTicket Fitur apa pun yang ada dalam dokumen PrintCapabilities yang tidak muncul di PrintTicket. Untuk Fitur seperti itu, tetapkan Opsi default sebagai Opsi yang dipilih.
Tentukan apakah ada instans ParameterDef yang memenuhi semua kriteria berikut:
Instans ParameterDef muncul di dokumen PrintCapabilities, tetapi tidak di PrintTicket.
Properti Wajib dari ParameterDef diatur ke Tidak Bersyarat atau Bersyarat.
Instans ParameterDef direferensikan oleh instans ParameterRef di PrintTicket dalam instans Opsi.
Untuk setiap instans ParameterDef tersebut dalam dokumen PrintCapabilities, tambahkan ke PrintTicket instans ParameterInit yang sesuai. Atur Nilai instans ParameterInit yang baru ditambahkan ke Nilai default yang ditentukan oleh instans ParameterDef yang sesuai.
Lakukan deteksi konflik batasan dan ubah konfigurasi untuk menghilangkan konflik tersebut. Topik ini tidak menentukan proses tertentu untuk digunakan untuk mengatasi konflik batasan. Anda perlu memutuskan fitur atau instans ParameterInit mana yang dapat diubah, dan Opsi atau Nilai yang sesuai, untuk memilih yang paling tidak berdampak pada niat keseluruhan konfigurasi yang ditentukan dalam PrintTicket. Seperti disebutkan sebelumnya, Anda mungkin ingin menggunakan skor pemetaan setiap Opsi, dan menggunakan Opsi dengan skor tertinggi kedua. Untuk menentukan Fitur atau ParameterInit mana yang akan diubah, Anda mungkin ingin menentukan Properti privat yang dapat ditambahkan klien ke PrintTicket. Properti ini dapat menentukan prioritas untuk instans Fitur dan ParameterInit sehingga proses pemecah masalah diberitahu tentang instans Fitur atau ParameterInit mana yang penting bagi klien (dan perlu dipertahankan di PrintTicket), dan yang kurang penting.
Jika proses penyelesaian batasan telah menyebabkan perubahan dalam PrintTicket pada instans ParameterRef di mana Properti Wajib diatur menjadi Bersyarat, tambahkan instans ParameterInit dengan nilai default untuk yang sekarang muncul akibat perubahan tersebut, dan hapus instans ParameterInit apa pun untuk instans ParameterRef yang tidak lagi muncul.
Hapus semua instans Properti dan kontennya yang muncul dalam instans Opsi di PrintTicket. Elemen properti tidak memiliki peran dalam PrintTicket. Jika Opsi yang divalidasi untuk Fitur tertentu sangat cocok dengan Opsi prevalidasi, transfer semua instans Properti dalam Opsi tersebut dari PrintTicket prevalidasi ke PrintTicket yang sekarang divalidasi, dengan syarat bahwa namespace instans Properti terdaftar dalam dokumen PrintCapabilities. Perhatikan bahwa untuk dua instans Opsi agar dianggap cocok, untuk setiap ScoredProperty yang ditemukan dalam satu Opsi, harus ada ScoredProperty yang sesuai di Opsi lainnya, dan Nilai kedua instans ScoredProperty harus sama.
Jika penyedia PrintTicket Anda mengenali dan mendukung instans Properti privat atau publik yang telah bertahan hingga saat ini, lakukan validasi pada instans tersebut. Jangan hapus Properti pada saat ini hanya karena Anda tidak mengenalinya, properti mungkin ditujukan untuk fase pemrosesan dokumen lainnya.
Topik terkait