(57)【要約】【課題】デバイス機能を記述する方法およびシステムを提供すること。【解決手段】例示的なスキーマが提示され、アプリケーションとデバイスの間の伝達言語の構成要素となる。スキーマは、ある特定のデバイス用ユーザコンフィグレーション可能機能のフルセットを表現するのにスキーマキーワードを使うフレームワーク上に構築される。例示し説明する実施形態において、スキーマは、デバイスの利用可能な設定など、デバイスの機能の表現において様々なレベルの精度を可能にする階層構造を使用する。【選択図】図１
2006155611.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ可読命令を有する１つまたは複数のコンピュータ可読媒体であって、前記命令は、実行されると、
クライアントからデバイス機能クエリを受け取るステップと、
前記クエリの受取りに応答して、デバイスの機能を記述する階層構造のドキュメントを生成するステップであって、前記機能は、コンフィグレーション可能なオプションを含み、前記階層構造のドキュメントは、前記機能を複数のレベルからなる階層で表現するステップと
を含む方法を実行することを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項２】
前記デバイス機能クエリは、印刷デバイス機能クエリを含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含み得ることを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマキーワードは、デバイスコンフィギュレーションおよび印刷ジョブのフォーマット設定を記述するプロパティ、フィーチャ、およびオプション要素の個々のインスタンスを定義することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項５】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマは、
印刷スキーマ要素の意味を特定する属性要素と、
１つまたは複数のプロパティ要素に、属性要素の同じグループを参照させる属性セット要素と、
プロパティ要素に、属性セットに含まれる属性要素のグループを参照させる属性セットｒｅｆ要素と、
オプションおよびプロパティ要素のリストを含むフィーチャ要素と、
オプションに関連づけられたプロパティおよびスコアづけされたプロパティ要素を含むオプション要素と、
パラメータ入力の有効特性を定義するパラメータｄｅｆ要素と、
パラメータｉｎｉｔ要素への参照を定義するパラメータｒｅｆ要素と、
前記階層構造のドキュメントのルートを表す印刷機能要素と、
デバイス、ジョブのフォーマット設定、またはその名前属性によって名前が与えられる他のプロパティを宣言することができるプロパティ要素と、
オプション定義に固有のプロパティを宣言することができるスコアづけされたプロパティ要素と、
型にリテラルを関連づける値要素と
を備えることを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項６】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、印刷ジョブレベルを含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項７】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、ドキュメントレベルを含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項８】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、ページレベルを含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項９】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、プリントジョブレベル、ドキュメントレベル、およびページレベルを含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１０】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、ジョブのフォーマット設定およびデバイスコンフィギュレーション情報を記述することを特徴とする請求項１に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１１】
請求項１に記載の１つまたは複数のコンピュータ可読媒体を実装することを特徴とするコンピューティングデバイス。
【請求項１２】
コンピュータ可読命令を有する１つまたは複数のコンピュータ可読媒体であって、前記命令は、実行されると、
デバイスの機能を確認するためのデバイス機能クエリを生成するステップと、
デバイスへの前記クエリの送信に応答して、デバイスの機能を記述する階層構造のドキュメントを受け取るステップであって、前記機能は、コンフィグレーション可能なオプションを含み、前記階層構造のドキュメントは、前記機能を複数のレベルからなる階層で表現するステップと
を含む方法を実行することを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１３】
前記デバイス機能クエリは、印刷デバイス機能クエリを含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１４】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含み得ることを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１５】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマキーワードは、デバイスコンフィギュレーションおよび印刷ジョブのフォーマット設定を記述するプロパティ、フィーチャ、およびオプション要素の個々のインスタンスを定義することを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１６】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマは、
印刷スキーマ要素の意味を特定する属性要素と、
１つまたは複数のプロパティ要素に、属性要素の同じグループを参照させる属性セット要素と、
プロパティ要素に、属性セットに含まれる属性要素のグループを参照させる属性セットｒｅｆ要素と、
オプションおよびプロパティ要素のリストを含むフィーチャ要素と、
オプションに関連づけられたプロパティおよびスコアづけされたプロパティ要素を含むオプション要素と、
パラメータ入力の有効特性を定義するパラメータｄｅｆ要素と、
パラメータｉｎｉｔ要素への参照を定義するパラメータｒｅｆ要素と、
前記階層構造のドキュメントのルートを表す印刷機能要素と、
デバイス、ジョブのフォーマット設定、またはその名前属性によって名前が与えられる他のプロパティを宣言することができるプロパティ要素と、
オプション定義に固有のプロパティを宣言することができるスコアづけされたプロパティ要素と、
型にリテラルを関連づける値要素と
を備えることを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１７】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、印刷ジョブレベルを含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１８】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、ドキュメントレベルを含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１９】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、ページレベルを含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２０】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、プリントジョブレベル、ドキュメントレベル、およびページレベルを含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２１】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、ジョブのフォーマット設定およびデバイスコンフィギュレーション情報を記述することを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２２】
請求項１２に記載の１つまたは複数のコンピュータ可読媒体を実装することを特徴とするコンピューティングデバイス。
【請求項２３】
クライアントからデバイス機能クエリを受け取るステップと、
前記クエリの受取りに応答して、デバイスの機能を記述する階層構造のドキュメントを生成するステップであって、前記機能は、コンフィグレーション可能なオプションを含み、前記階層構造のドキュメントは、前記機能を複数のレベルからなる階層で表現するステップと
を含むことを特徴とする方法。
【請求項２４】
前記クエリは、前記機能を基づかせるためのＰｒｉｎｔＴｉｃｋｅｔコンフィギュレーションを含み得ることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記デバイス機能クエリは、印刷デバイス機能クエリを含むことを特徴とする請求項２３に記載の方法。
【請求項２６】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含み得ることを特徴とする請求項２３に記載の方法。
【請求項２７】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマキーワードは、デバイスコンフィギュレーションおよび印刷ジョブのフォーマット設定を記述するプロパティ、フィーチャ、およびオプション要素の個々のインスタンスを定義することを特徴とする請求項２３に記載の方法。
【請求項２８】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマは、
印刷スキーマ要素の意味を特定する属性要素と、
１つまたは複数のプロパティ要素に、属性要素の同じグループを参照させる属性セット要素と、
プロパティ要素に、属性セットに含まれる属性要素のグループを参照させる属性セットｒｅｆ要素と、
オプションおよびプロパティ要素のリストを含むフィーチャ要素と、
オプションに関連づけられたプロパティおよびスコアづけされたプロパティ要素を含むオプション要素と、
パラメータ入力の有効特性を定義するパラメータｄｅｆ要素と、
パラメータｉｎｉｔ要素への参照を定義するパラメータｒｅｆ要素と、
前記階層構造のドキュメントのルートを表す印刷機能要素と、
デバイス、ジョブのフォーマット設定、またはその名前属性によって名前が与えられる他のプロパティを宣言することができるプロパティ要素と、
オプション定義に固有のプロパティを宣言することができるスコアづけされたプロパティ要素と、
型にリテラルを関連づける値要素と
を備えることを特徴とする請求項２３に記載の方法。
【請求項２９】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、印刷ジョブレベルを含むことを特徴とする請求項２３に記載の方法。
【請求項３０】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、ドキュメントレベルを含むことを特徴とする請求項２３に記載の方法。
【請求項３１】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、ページレベルを含むことを特徴とする請求項２３に記載の方法。
【請求項３２】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層の１レベルは、プリントジョブレベル、ドキュメントレベル、およびページレベルを含むことを特徴とする請求項２３に記載の方法。
【請求項３３】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、ジョブのフォーマット設定およびデバイスコンフィギュレーション情報を記述することを特徴とする請求項２３に記載の方法。
【請求項３４】
デバイスの機能を確認するためのデバイス機能クエリを生成するステップと、
デバイスへの前記クエリの送信に応答して、デバイスの機能を記述する階層構造のドキュメントを受け取るステップであって、前記機能は、コンフィグレーション可能なオプションを含み、前記階層構造のドキュメントは、前記機能を複数のレベルからなる階層で表現するステップと
を含むことを特徴とする方法。
【請求項３５】
前記デバイス機能クエリは、印刷デバイス機能クエリを含むことを特徴とする請求項３４に記載の方法。
【請求項３６】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含み得ることを特徴とする請求項３４に記載の方法。
【請求項３７】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマキーワードは、デバイスコンフィギュレーションおよび印刷ジョブのフォーマット設定を記述するプロパティ、フィーチャ、およびオプション要素の個々のインスタンスを定義することを特徴とする請求項３４に記載の方法。
【請求項３８】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記印刷スキーマは、
印刷スキーマ要素の意味を特定する属性要素と、
１つまたは複数のプロパティ要素に、属性要素の同じグループを参照させる属性セット要素と、
プロパティ要素に、属性セットに含まれる属性要素のグループを参照させる属性セットｒｅｆ要素と、
オプションおよびプロパティ要素のリストを含むフィーチャ要素と、
オプションに関連づけられたプロパティおよびスコアづけされたプロパティ要素を含むオプション要素と、
パラメータ入力の有効特性を定義するパラメータｄｅｆ要素と、
パラメータｉｎｉｔ要素への参照を定義するパラメータｒｅｆ要素と、
前記階層構造のドキュメントのルートを表す印刷機能要素と、
デバイス、ジョブのフォーマット設定、またはその名前属性によって名前が与えられる他のプロパティを宣言することができるプロパティ要素と、
オプション定義に固有のプロパティを宣言することができるスコアづけされたプロパティ要素と、
型にリテラルを関連づける値要素と
を備えることを特徴とする請求項３４に記載の方法。
【請求項３９】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記階層の１レベルは、印刷ジョブレベルを含むことを特徴とする請求項３４に記載の方法。
【請求項４０】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記階層の１レベルは、ドキュメントレベルを含むことを特徴とする請求項３４に記載の方法。
【請求項４１】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記階層の１レベルは、ページレベルを含むことを特徴とする請求項３４に記載の方法。
【請求項４２】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記階層の１レベルは、プリントジョブレベル、ドキュメントレベル、およびページレベルを含むことを特徴とする請求項３４に記載の方法。
【請求項４３】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記階層構造のドキュメントは、ジョブのフォーマット設定およびデバイスコンフィギュレーション情報を記述することを特徴とする請求項３４に記載の方法。
【請求項４４】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記階層構造のドキュメントは、ジョブのフォーマット設定およびデバイスコンフィギュレーション情報を記述し、
前記階層構造のドキュメントから設定を導出する
ステップをさらに含むことを特徴とする請求項３４に記載の方法。
【請求項４５】
前記デバイス機能クエリは、印刷デバイス機能クエリを含み、前記階層構造のドキュメントは、印刷スキーマキーワードを含み、プライベート拡張を含むことができ、前記階層構造のドキュメントは、ジョブのフォーマット設定およびデバイスコンフィギュレーション情報を記述し、
前記階層構造のドキュメントに対して、認証を行う
ステップをさらに含むことを特徴とする請求項３４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス機能を発見する方法およびシステムに関連する。
【背景技術】
【０００２】
ユーザコンフィグレーション可能な機能などのデバイス機能の発見により、デバイスの使用を実行することが可能になる。例えば、アプリケーションが、ある特定のハードウェアまたはファームウェアデバイスの機能を確認することができるならば、アプリケーションおよびユーザは、デバイスの機能を最大限に利用することができるはずである。例えば、印刷スペースにおいて、アプリケーションが、ドライバおよび印刷プロセッサなど、ドライバ関連コンポーネントの機能を確認することができならば、アプリケーションは、関連するプリンタを最大限に利用することができる。
【０００３】
【特許文献１】米国特許出願第１０／７９４６６９号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、デバイス機能を記述する、一貫した、公開されている拡張可能な方法が存在しない。むしろ、デバイス機能は、フラットで、固定されたリストを使って記述される傾向がある。この機能記述方法により、実用性が制限されており、機能を調べることができない。
【０００５】
したがって、本発明は、デバイスの設定などのデバイス機能を記述し、そうした機能の記述を用いてデバイスをより有効に使用する、改良された方法およびシステムの提供に関連する懸案事項から生じた。
【課題を解決するための手段】
【０００６】
デバイス機能を記述する方法およびシステムを説明する。例示的なスキーマが提示され、アプリケーションとデバイスの間の伝達言語の構成要素となる。スキーマは、ある特定のデバイス用ユーザコンフィグレーション可能機能のフルセットを表現するのにスキーマキーワードを使うフレームワーク上に構築される。例示し説明する実施形態において、スキーマは、デバイスの使用可能な設定など、デバイスの機能の表現において様々なレベルの精度を可能にする階層構造を使用する。デバイスの使用可能な設定の表現を受け取ると、クライアントはこの時点で、特有のデバイスコンフィギュレーションを選択し使用することが可能になる。
【発明を実施するための最良の形態】
【０００７】
概論
以降の説明において、デバイス機能を記述する方法およびシステムを説明する。例示的なスキーマが提示され、アプリケーションとデバイスの間の伝達言語の構成要素となる。スキーマは、ある特定のデバイス用ユーザコンフィグレーション可能機能のフルセットを表現するのにスキーマキーワードを使うフレームワーク上に構築される。例示し説明する実施形態において、スキーマは、デバイスの利用可能な設定など、デバイスの機能の表現において様々なレベルの精度を可能にする階層構造を使用する。
【０００８】
以下の説明において、印刷スキーマを使用して、アプリケーションに対してデバイスの機能を記述する印刷デバイスを含む印刷システムという状況において、スキーマおよびその使用を説明する。こうした実施形態において、スキーマは、アプリケーション、印刷サブシステムコンポーネント、およびデバイスの間の伝達言語の構成要素となる。印刷システムコンポーネントは、限定ではなく例として、プリンタドライバ、および将来のフィルタパイプラインフィルタなどを含む。ただし、スキーマおよびその使用は、印刷環境のみに制限されるわけではないことを理解されたい。したがって、スキーマおよびその使用の原理は、特許請求の対象の精神および範囲から逸脱することなく、印刷環境以外の環境でも適用することができる。
【０００９】
以下の説明では、「ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ（印刷機能）」ドキュメントと呼ばれるプレーンテキスト階層構造のドキュメントにおいて、デバイス機能を公開し、または説明する。一実施形態では、階層構造のドキュメントは、ＸＭＬドキュメントを含む。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、印刷スキーマキーワードおよびプライベート拡張で定義される用語を含む。デバイスまたはデバイスドライバは、アプリケーションまたは印刷サブシステムのどちらでもよいクライアントによって照会されると、コンフィグレーション可能オプションからなる現在の組のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを生成する。説明する実施形態において、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、デバイスのすべての属性、および各属性ごとに許容される設定を明示的に記述する。印刷スキーマフレームワークを使用することにより、デバイス属性を正確に記述し、効率的に比較することができる。印刷スキーマキーワードのドキュメントに含まれるキーワード、および印刷スキーマフレームワークにおいて定義される構造を使うことによって、デバイスは、クライアントがデバイス機能をより効率的に利用できるようにする。
【００１０】
例示し説明する実施形態において、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、多数のレベルの機能からなる階層を表す。後で説明する具体的な例において、３つのレベルの機能が、記述されるジョブ、ドキュメント、およびページであり、ＸＭＬドキュメントによって表される。各レベルは、ある特定の印刷ジョブコンポーネントを表し、どのように設定がＰｒｉｎｔＴｉｃｋｅｔにおいて定義され、ＰｒｉｎｔＴｉｃｋｅｔ処理において適用されるかを規定するが、これについては後でより詳しく説明する。
【００１１】
予め、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントおよびその使用を説明する前に、また、その説明に何らかのコンテキストを与えるために、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの基となる例示的な印刷スキーマを、以降の主見出し「プリントスキーマ」で説明する。この説明の後で、主見出し「ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマおよびドキュメント構成」において、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマおよびドキュメントを説明する。最後に、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントをどのようにして使ってよいかという例を挙げるために、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに含まれる情報を使用するＰｒｉｎｔＴｉｃｋｅｔの説明を、主見出し「ＰｒｉｎｔＴｉｃｋｅｔスキーマおよびドキュメント構成」で行う。
【００１２】
プリントスキーマ
プリントスキーマは、ジョブ形式またはＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓどちらかを階層構造で記述する、大きな１組のプロパティを表現し編成する拡張マークアップ言語（ＸＭＬ）ベースの形式を提供する。例示し説明する実施形態において、プリントスキーマは、プリントスキーマキーワードおよびプリントスキーマフレームワークという２つのコンポーネントを含む包括的用語である。プリントスキーマキーワードドキュメントは、デバイス属性および印刷ジョブのフォーマット設定を記述するのに使うことができる１組の要素インスタンスを定義するパブリックスキーマである。プリントスキーマフレームワークは、ＸＭＬ要素型からなる階層構造のグループを定義し、どのようにしてこうした要素型を一緒に使ってよいかを規定するパブリックスキーマである。
【００１３】
プリントスキーマキーワードおよびプリントスキーマフレームワークは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマおよびＰｒｉｎｔＴｉｃｋｅｔスキーマという２つのプリントスキーマ関連テクノロジのために、土台を形成する。
【００１４】
プリントスキーマのターゲットの１つは、プロバイダによるスキーマ拡張をサポートすることである。つまり、プロバイダは、プリントスキーマフレームワーク上で構築されるテクノロジにおけるプリントスキーマキーワードにおいて定義されるそうしたＰｒｏｐｅｒｔｙ（プロパティ）、Ｆｅａｔｕｒｅ（フィーチャ）、Ｏｐｔｉｏｎ（オプション）、またはＰａｒａｍｅｔｅｒＩｎｉｔインスタンスのみの使用に規制されない。そうではなく、プロバイダ特有の要素インスタンスは、プリントスキーマキーワードにおいて定義される要素インスタンス中に自由に散在させることができる。唯一の要件は、プロバイダ特有の（つまり、プライベート）Ｐｒｏｐｅｒｔｙインスタンスが、明らかにプロバイダに関連づけられる名前空間に属さなければならないことである。
【００１５】
プリントスキーマのバックグラウンド
プリントスキーマは、印刷サブシステムのコンポーネントの間の内部伝達、および印刷サブシステムとアプリケーションの間の外部伝達に関連づけられた不透明さおよびあいまいさの問題に対処することを意図している。プリントスキーマおよびその関連テクノロジは、統合された論理的なやり方での、設定および機能の、一貫性した、あいまいさのない拡張可能な伝達方法を提供する。
【００１６】
プリントスキーマキーワードおよびプリントスキーマフレームワークの概念上の土台は、一貫性、あいまいさの欠如、および拡張性である。一貫性は、印刷コンポーネントの間の伝達のためのビルディングブロックとしてプリントスキーマキーワードおよびプリントスキーマフレームワークを使用することにより、達成される。アプリケーション、マイクロソフト（登録商標）ウィンドウズ（登録商標）印刷サブシステム、ならびにＩＨＶプラグインおよびドライバは、この共通機構を用いて対話する。こうしたキーワード、キーワードの構造、およびキーワードの意味は、パブリックスキーマによって明確に定義される。この定義が、ある特定のキーワードの意味のあいまいさを防ぎ、冗長または重複するキーワードを防ぐ。すべてのコンポーネントが、ある特定の意図を伝えるとともにその意図を受け手に十分に理解させるために、具体的なキーワードの使用に依拠することができる。拡張性により、プリントスキーマキーワードが長く存在できるようになり、パブリックスキーマが動的エンティティであることが保証される。その構造によって、プライベート拡張も可能になり、その結果、秘密キーワードをパブリックスキーマに将来含めることが、一貫性を保持しあいまいさを防ぐのに望ましいことに留意しながら、所望通りに革新を行うための柔軟性を、独立ハードウェアベンダ（ＩＨＶ）に与える。
【００１７】
プリントスキーマ関連テクノロジ
上述したように、プリントスキーマに基づく２つの関連テクノロジが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔテクノロジである。
【００１８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓテクノロジは、コンフィギュレーション可能なＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを公開するメソッドである。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、プリントスキーマキーワードおよびプライベート拡張において定義される用語からなる、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントと呼ばれるプレーンテキスト拡張マークアップ言語（ＸＭＬ）ドキュメントにおいて公開される。このドキュメントは、終了オプションおよびページレイアウトオプションなど、デバイス上で現在使用可能である、コンフィギュレーション可能なＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓをすべて記述する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、デバイスのすべての属性、および各属性に対して許容される設定を明示的に記述する。プリントスキーマフレームワークの使用により、デバイス属性を正確に記述し効率的に比較することができる。プリントスキーマキーワードドキュメントに含まれるキーワード、およびプリントスキーマフレームワークにおいて定義される構造を使うことによって、デバイスは、クライアントがＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓをより有効に使うことを可能にし得る。
【００１９】
マイクロソフト（登録商標）ウィンドウズ（登録商標）サーバ２００３およびそれ以前のバージョンにおける印刷サブシステムに対して、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓテクノロジは、クライアントおよび印刷サブシステムコンポーネントに、現在のマイクロソフトＷｉｎ３２（登録商標）システムバイナリＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに含まれる情報を透過的に閲覧させる。この閲覧により、クライアントは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを照会し、一貫した、十分に理解されたＸＭＬスナップショットを受け取り、このスナップショットを使って、ドライバユーザインターフェース（ＵＩ）を呼び出すことなくデバイス用のＰｒｉｎｔＴｉｃｋｅｔを構成することが可能になる。
【００２０】
現在のＤＥＶＭＯＤＥ構造の使用の置換えを意図しているＰｒｉｎｔＴｉｃｋｅｔテクノロジは、ジョブのフォーマット設定およびデバイスコンフィギュレーション情報を特定し持続させるＸＭＬメソッドである。ＰｒｉｎｔＴｉｃｋｅｔインスタンスとは、デバイス属性に具体的な設定を割り当て、ユーザの意図を伝えるプレーンテキストＸＭＬドキュメントである。２つの型のＰｒｉｎｔＴｉｃｋｅｔがある。すなわち、特定のデバイス用には生成されない一般的ＰｒｉｎｔＴｉｃｋｅｔ、および特定のデバイス用に構成されるデバイス特有のＰｒｉｎｔＴｉｃｋｅｔである。複数のデバイスに渡って移植可能であることを意図している一般的ＰｒｉｎｔＴｉｃｋｅｔは、その内容を、プリントスキーマキーワードにおいて排他的に記述されるデバイス属性それぞれに対する設定を選択することによって引き出す。デバイス特有のＰｒｉｎｔＴｉｃｋｅｔは、その内容を、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントから引き出し、このドキュメントによって広告される各デバイス属性に対する設定を選択する。こうしたＰｒｉｎｔＴｉｃｋｅｔは、１つのデバイスモデルまたはデバイスモデルファミリーに特有のプライベート拡張も含み得る。
【００２１】
現在の印刷サブシステムに対して、ＰｒｉｎｔＴｉｃｋｅｔテクノロジは、印刷サブシステムのすべてのコンポーネントおよびクライアントが、十分に定義されたＸＭＬ形式を用いて、ＤＥＶＭＯＤＥ構造のパブリック部分およびプライベート部分に現在格納されている情報への透過的なアクセス権をもつことを可能にする。この設計により、ＰｒｉｎｔＴｉｃｋｅｔテクノロジ向けに設計されたドライバにおいて、ドライバのアップグレードまたはダウングレード、およびドライバが不整合であるシナリオにおいて生じる現在の問題が解決する。こうしたシナリオは現在、設定の損失を生じ、したがって否定的な顧客経験をもたらし得る。ＰｒｉｎｔＴｉｃｋｅｔは、プリンタドライバが、そのプライベートＤＥＶＭＯＤＥ設定をアプリケーションおよびカスタムプラグインに、一貫した、あいまいさのないやり方で公表することを可能にするなど、新しいシナリオも可能にする。こうすることにより、印刷コンポーネントが、より透明になり、設定の移行をより手際よく操作することが可能になる。ＰｒｉｎｔＴｉｃｋｅｔインターフェースは、スクリプトに対しても利用可能なマネージドコードオブジェクト上のメソッドを介してアプリケーションに公表される。マイクロソフトの「Ｌｏｎｇｈｏｒｎ」におけるマネージドコードオブジェクト上で構築される新しいアプリケーションフレームワークでは、ＰｒｉｎｔＴｉｃｋｅｔが、ドキュメント設定の標準的な記述方法である。
【００２２】
プリントスキーマにおいて使われる用語
以下のセクションは、プリントスキーマおよび関連テクノロジに特有の、一実施形態による用語を含む。
【００２３】
「属性名」とは、標準拡張マークアップ言語（ＸＭＬ）属性において、等号の左側にあるトークンである。ＸＭＬ属性の標準表現は、＜ａｔｔｒｉｂｕｔｅ  ｎａｍｅ＞＝“＜ａｔｔｒｉｂｕｔｅ  ｖａｌｕｅ＞”となる。類似してはいるが、「属性名」という用語は、プリントスキーマフレームワークにおいて定義されるｎａｍｅ属性と混同してはならない。プリントスキーマフレームワークにおいて定義されるｎａｍｅ属性は、属性名の固有インスタンスである。
【００２４】
「候補Ｏｐｔｉｏｎ」とは、スコアづけプロセスの間に評価されるリストに属す任意のＯｐｔｉｏｎである。以降の「スコアづけまたはマッピングＯｐｔｉｏｎ」、および「参照Ｏｐｔｉｏｎ」という用語を参照されたい。
【００２５】
「コンフィギュレーション」という用語は、デバイスが想定し、または置かれる可能性がある状態の１つを記述する。デバイスは、そのタスクを、各状態においてそれぞれ異なるように実施する。こうした状態それぞれにおけるデバイスの振舞いには、区別し識別できる違いがある。例えば、ある状態では、メディアは、あるトレイから取り出され、最終的には別のトレイに入る。こうしたトレイのいずれか一方または両方における変更により、異なる状態が決定される。
【００２６】
「制約」とは、コンフィギュレーションの妥当性を判定するのに必要とされる情報を指す。制約はしばしば、Ｏｐｔｉｏｎ１に設定されたＦｅａｔｕｒｅＡが、Ｏｐｔｉｏｎ２に設定されたＦｅａｔｕｒｅＢと適合しないという形となる。
【００２７】
「対応する要素」は、規定された１対の起源要素に対して同じ場所を有する２つの要素を指す。起源要素はしばしば、比較されている２つのＯｐｔｉｏｎ要素である。
【００２８】
「デフォルトＯｐｔｉｏｎ」とは、プリントスキーマまたはＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダどちらかによって、ＰｒｉｎｔＴｉｃｋｅｔがＦｅａｔｕｒｅに対する明示的な設定を含まないとき、そのＦｅａｔｕｒｅに割り当てられるＯｐｔｉｏｎとして指定されるＯｐｔｉｏｎである。各Ｆｅａｔｕｒｅは、規定されたデフォルトＯｐｔｉｏｎを有する。
【００２９】
「デバイスコンフィギュレーション属性」は、デバイスコンフィギュレーションの定義に寄与するデバイス属性を指す。デバイスコンフィギュレーション属性は、プリントスキーマフレームワークにおいて、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎまたはパラメータ構文どちらかによって表される。このコンテキストにおいて使われる属性は、ＸＭＬ属性にも、プリントスキーマフレームワーク定義のＡｔｔｒｉｂｕｔｅ要素にも関係しないことに留意されたい。
【００３０】
「要素型」は、プリントスキーマフレームワークにおいて定義される各ＸＭＬ要素の型を指し、そのＸＭＬ要素タグによって識別される。
【００３１】
「共通する要素」は、上記の「対応する要素」と同じ意味をもつ。
【００３２】
「Ｆｅａｔｕｒｅ」は、具体的なデバイスコンフィギュレーション属性を表すプリントスキーマフレームワーク定義の構文を指す。各Ｆｅａｔｕｒｅインスタンスは、１つのデバイス属性を表す。Ｆｅａｔｕｒｅインスタンスは、その状態それぞれを明示的に定義することによって定義される。
【００３３】
「識別オプション」は、選択された場合に観察可能な影響をもたないＯｐｔｉｏｎを指す。すなわち、実質上、「ｎｏ−ｏｐ」である。結果は、このＯｐｔｉｏｎが選択される回数にかかわらず常に同じである。
【００３４】
「インスタンス名」は、要素型の固有インスタンスを識別するＸＭＬ属性を指す。以降の「ｎａｍｅ属性」を参照されたい。
【００３５】
「インターフェースクライアント」は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを利用し、ＰｒｉｎｔＴｉｃｋｅｔを構成し利用するエンティティを指す。インターフェースクライアントの一般的な例は、ユーザインターフェース（ＵＩ）モジュールおよびレンダリングモジュールを含む。
【００３６】
「インターフェースプロバイダ」は、インターフェースを用いて機能性を実装し公表するエンティティを指す。プリントスキーマにおいて、このことは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの作成およびＰｒｉｎｔＴｉｃｋｅｔの検証に等しい。
【００３７】
「要素の場所」は、ある要素の具体的なインスタンスの、その要素階層における位置を指す。この場所は、その要素およびその要素のすべての祖先両方によって定義される。言い換えると、場所は、ファイルシステムにおける十分に修飾されたパスに相当する。
【００３８】
「ｎａｍｅ属性」は、「ｎａｍｅ」という属性名を有するＸＭＬ属性に与えられる指定を指す。この属性は、プリントスキーマフレームワークにおいて定義される要素型のほとんどに現れる。この属性は、各要素型のインスタンスを識別し定義する。以下の２つの用語、すなわち兄弟一意性規則および名前空間規約が、ｎａｍｅ属性に言及している。
【００３９】
「名前空間規約」は、スキーマ定義のｎａｍｅ属性、ならびにどのスキーマ定義オブジェクトも、専用の名前空間、すなわちパブリック名前空間に存在し、個人定義のｎａｍｅ属性は、異なる名前空間、すなわち定義を行った当事者に属す物として識別することができる名前空間に存在しなければならないと明記している。
【００４０】
「Ｏｐｔｉｏｎ」とは、各Ｆｅａｔｕｒｅが想定し、または置かれる可能性がある状態を表すのに使われるプリントスキーマフレームワーク構文である。例えば、Ｆｅａｔｕｒｅがメディアサイズを表す場合、通常のＯｐｔｉｏｎ値は、中でもＬｅｔｔｅｒ、Ｌｅｇａｌ、Ａ４となるであろう。
【００４１】
「パラメータ」は、プリントスキーマによってサポートされ、ユーザ入力を目的としてパラメータ化されたデータを記述する。パラメータ入力において役割を果たす３つのプリントスキーマフレームワーク要素型、すなわちＰａｒａｍｅｔｅｒＤｅｆ、ＰａｒａｍｅｔｅｒＩｎｉｔ、およびＰａｒａｍｅｔｅｒＲｅｆがある。ＰａｒａｍｅｔｅｒＤｅｆ要素は、パラメータ（その値の範囲、そのデータの型、および他の特性）の特徴をなす。ＰａｒａｍｅｔｅｒＩｎｉｔ要素は、パラメータを初期化するのに使われる。ＰａｒａｍｅｔｅｒＲｅｆ要素は、ＰａｒａｍｅｔｅｒＩｎｉｔ要素のある特定のインスタンスを参照するのに使われる。
【００４２】
「パラメータ化されたＯｐｔｉｏｎ」とは、Ｖａｌｕｅ要素ではなくＰａｒａｍｅｔｅｒＲｅｆ要素を含む少なくとも１つのＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含むＯｐｔｉｏｎインスタンスである。
【００４３】
「完全一致Ｏｐｔｉｏｎ」は、１つのＯｐｔｉｏｎインスタンス中の全ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素に対して、他のＯｐｔｉｏｎインスタンス中に、対応するＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスがあり、この対応するＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの両方のＶａｌｕｅ要素が同一である場合に、完全に一致するとみなされる２つのＯｐｔｉｏｎインスタンスを指す。
【００４４】
「ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマ」は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントによって使われるシンタクスおよびセマンティクスを定義するスキーマを指す。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマおよびＰｒｉｎｔＴｉｃｋｅｔスキーマは、プリントスキーマのサブセットである。以降のプリントスキーマフレームワークも参照されたい。
【００４５】
「ＰｒｉｎｔＴｉｃｋｅｔスキーマ」は、ＰｒｉｎｔＴｉｃｋｅｔによって使われるシンタクスおよびセマンティクスを定義するスキーマを指す。ＰｒｉｎｔＴｉｃｋｅｔスキーマおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、プリントスキーマのサブセットである。以降のプリントスキーマフレームワークも参照されたい。
【００４６】
「プリントスキーマフレームワーク」は、プリントスキーマテクノロジによって使われるシンタクスおよびセマンティクスを定義するスキーマを指す。例えば、プリントスキーマフレームワークは、要素型のグループおよびその使用法を定義するが、要素インスタンスをすべてエニュメレートするわけではない。
【００４７】
「プリントスキーマキーワード」は、一般にデバイスおよびジョブのフォーマット設定を記述するのに使われるＰｒｏｐｅｒｔｙ、Ｆｅａｔｕｒｅ、およびＯｐｔｉｏｎ要素の個々のインスタンスを定義するスキーマを指す。このスキーマは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントおよびＰｒｉｎｔＴｉｃｋｅｔを移植可能にする共通言語を定義する。パブリックスキーマとしても知られる。
【００４８】
「個人定義」は、プリントスキーマキーワードにおいて明示的に定義されないＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントまたはＰｒｉｎｔＴｉｃｋｅｔ中に現れる要素のどのインスタンスも指す。こうした要素インスタンスは、ベンダごとのプライベート名前空間で明示的に修飾されなければならない。
【００４９】
「参照Ｏｐｔｉｏｎ」は、各候補Ｏｐｔｉｏｎが比較される対象であるＯｐｔｉｏｎを指す。参照Ｏｐｔｉｏｎは通常、ＰｒｉｎｔＴｉｃｋｅｔから発生する。「スコアづけまたはマッピングＯｐｔｉｏｎ」、および「候補Ｏｐｔｉｏｎ」という用語を参照されたい。
【００５０】
「ルートレベル」は、プリントスキーマフレームワークの階層構造の基底である。ルートレベル要素は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ要素またはＰｒｉｎｔＴｉｃｋｅｔ要素の子として定義される。
【００５１】
「ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ」とは、あるＯｐｔｉｏｎインスタンスを別のインスタンスと区別し、または見分ける質を表すのに使われるプリントスキーマフレームワーク構文である。一例が、ＬｅｔｔｅｒとＬｅｇａｌサイズの用紙の間の違いである。
【００５２】
「スコアづけまたはマッピングＯｐｔｉｏｎ」は、リストから、所与の（参照）Ｏｐｔｉｏｎインスタンスと最良一致する（候補）Ｏｐｔｉｏｎインスタンスを選択するプロセスを指す。密接に関係する用語は、候補Ｏｐｔｉｏｎと参照Ｏｐｔｉｏｎである。
【００５３】
「兄弟一意性規則」は、同じ要素型のすべての兄弟が一意のｎａｍｅ属性をもたなければならないと明記している。一部の要素型は、この規則から除外される。こうした例外は、プリントスキーマフレームワークにおいて定義される。
【００５４】
「単一値対多値Ｐｒｏｐｅｒｔｙ」は、Ｖａｌｕｅが不変であり（コンフィギュレーションに依存しない）、単一値であるとみなされるＰｒｏｐｅｒｔｙである。このようなＰｒｏｐｅｒｔｙは、可能などのコンフィギュレーションの下でも、ただ１つのＶａｌｕｅをもつ。コンフィギュレーションに依存するＰｒｏｐｅｒｔｙは、多値であるとみなされる。
【００５５】
「認証」は、ＰｒｉｎｔＴｉｃｋｅｔがスキーマに従い、特有のデバイスによって実行することができるコンフィギュレーションを表すことを確かめるプロセスを指す。
【００５６】
プリントスキーマのシンタクス
プリントスキーマは、拡張マークアップ言語（ＸＭＬ）シンタクスにおいて表される。読者はしたがって、ＸＭＬシンタクスならびに要素、要素タグ、要素内容、属性、および名前空間などの用語を熟知していると期待される。プリントスキーマフレームワークは、少数の要素型からなる。各要素型は、プリントスキーマ上で構築されるテクノロジにおける特有の目的に役立つ。
【００５７】
要素型は、そのＸＭＬ要素タグによって区別される。プリントスキーマフレームワークは、各要素型ごとに、どの要素型が子要素として許容されるかを示すことによって、依存テクノロジの全体構造および編成を定義する。
【００５８】
多くの要素型は、スキーマにおいて重大な役割を果たすｎａｍｅ属性によって、同じ型の他の要素型と見分けられる。ｎａｍｅ属性は、各要素型のインスタンスを識別するのに役立つ。プリントスキーマキーワードは、要素型の多くに対して、ｎａｍｅ属性用の１組の値を定義する。ほとんどの場合、プロバイダは、ｎａｍｅ属性に独自の値を割り当てることができる。プロバイダは、値が、プロバイダに一意の名前空間で修飾されるＸＭＬ  ＱＮａｍｅであることを保証するだけでよい。
【００５９】
要素型の要約
このセクションでは、プリントスキーマフレームワークにおいて定義され、プリントスキーマ関連テクノロジを表現するのに使われる要素型を列挙する。各要素型を、後続セクションで詳しく説明する。この説明では、要素型（所与の要素の親となり得る要素）が現れ得るコンテキスト、および要素の許容される内容も規定する。
【００６０】
Ａｔｔｒｉｂｕｔｅ（属性）
Ａｔｔｒｉｂｕｔｅ要素は、プリントスキーマフレームワーク要素の意味を、明確に定義されるように規定するのに使われる。システムは、Ａｔｔｒｉｂｕｔｅ要素を使って、システムによるＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素の処理をカスタマイズする。Ａｔｔｒｉｂｕｔｅ要素は、プリントスキーマによって、プリントスキーマによって特定された目的を実施するように指示された場合のみ現れるべきである。
【００６１】
要素タグは「＜Ａｔｔｒｉｂｕｔｅ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、Ａｔｔｒｉｂｕｔｅの名前を保有する。プリントスキーマキーワードドキュメントは、各標準Ａｔｔｒｉｂｕｔｅの目的、およびこのＡｔｔｒｉｂｕｔｅが現れ得る特有のコンテキストを定義する。プリントスキーマキーワードにおいて定義される属性名のみが許容される。プリントスキーマキーワードドキュメントの現在のバージョンは、どの属性名も定義していないことに留意されたい。ｐｒｏｐａｇａｔｅ（伝搬）は、Ａｔｔｒｉｂｕｔｅ要素が現れ得る派生ドキュメントを判定する。この拡張マークアップ言語（ＸＭＬ）属性用の値は、現時点では定義されていない。
【００６２】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【００６３】
【表１】
2006155611.tif 000003
【００６４】
Ａｔｔｒｉｂｕｔｅ要素は、どのコンフィギュレーションにも依存することができない。以下の例は、Ａｔｔｒｉｂｕｔｅ要素を示す。
【００６５】
【表２】
2006155611.tif 000004
【００６６】
ＡｔｔｒｉｂｕｔｅＳｅｔ
ＡｔｔｒｉｂｕｔｅＳｅｔ要素は、１つまたは複数のＰｒｏｐｅｒｔｙ要素がＡｔｔｒｉｂｕｔｅ要素の同じグループを参照することを可能にし、そうすることによって、Ａｔｔｒｉｂｕｔｅ要素が不必要に重複しないようにする。１つのＰｒｏｐｅｒｔｙ要素が、個々のＡｔｔｒｉｂｕｔｅ要素を伴う多数のＡｔｔｒｉｂｕｔｅＳｅｔ要素を参照することができる。Ａｔｔｒｉｂｕｔｅの定義により、このＡｔｔｒｉｂｕｔｅが上書きされ、Ａｔｔｒｉｂｕｔｅが多重に定義されている場合、先行性は、個々のＡｔｔｒｉｂｕｔｅ要素がＡｔｔｒｉｂｕｔｅＳｅｔ要素をオーバーライドし、各型（型とは、すなわち個々の属性またはＡｔｔｒｉｂｕｔｅＳｅｔ要素である）において、最初に現れるＡｔｔｒｉｂｕｔｅ要素が、より高い先行性をもつことである。
【００６７】
要素タグは「＜ＡｔｔｒｉｂｕｔｅＳｅｔ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、現在のドキュメントのコンテキストにおける一意の名前を定義する。ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ要素は、ある特定のＡｔｔｒｉｂｕｔｅＳｅｔ要素を参照するのに使われる。重複するＡｔｔｒｉｂｕｔｅＳｅｔ  ｎａｍｅ属性は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントまたはＰｒｉｎｔＴｉｃｋｅｔを無効にする。
【００６８】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【００６９】
【表３】
2006155611.tif 000005
【００７０】
ＡｔｔｒｉｂｕｔｅＳｅｔ要素は、どのコンフィギュレーションにも依存することができない。以下の例は、２つのＡｔｔｒｉｂｕｔｅ要素、すなわちｍｙＡｔｔｒ１およびｍｙＡｔｔｒ２を含むＡｔｔｒｉｂｕｔｅＳｅｔ要素を示す。
【００７１】
【表４】
2006155611.tif 000006
【００７２】
ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ
ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ要素は、ＡｔｔｒｉｂｕｔｅＳｅｔに含まれるＡｔｔｒｉｂｕｔｅ要素のグループをＰｒｏｐｅｒｔｙ要素が参照することを可能にし、Ａｔｔｒｉｂｕｔｅ要素が子要素としてＰｒｏｐｅｒｔｙに直接存在する必要をなくす。こうすることにより、Ａｔｔｒｉｂｕｔｅ要素のグループが、多数のＰｒｏｐｅｒｔｙ要素によって共有されるようになる。
【００７３】
要素タグは「＜ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、現在のドキュメントのコンテキストにおいて参照されるＡｔｔｒｉｂｕｔｅＳｅｔ要素のｎａｍｅ属性を特定する。
【００７４】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【００７５】
【表５】
2006155611.tif 000007
【００７６】
ＡｔｔｒｉｂｕｔｅＳｅｔ要素は、どのコンフィギュレーションにも依存することができない。以下の例は、ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ要素を含むＰｒｏｐｅｒｔｙ要素を示す。
【００７７】
【表６】
2006155611.tif 000008
【００７８】
Ｆｅａｔｕｒｅ
Ｆｅａｔｕｒｅ要素は、デバイス属性、ジョブのフォーマット設定、または他の適切な特性を十分に記述するＯｐｔｉｏｎおよびＰｒｏｐｅｒｔｙ要素の完全なリストを含む。その要素タグは「＜Ｆｅａｔｕｒｅ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、標準Ｆｅａｔｕｒｅまたは個人定義のＦｅａｔｕｒｅどちらかであるＦｅａｔｕｒｅの名前を保有する。
【００７９】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【００８０】
【表７】
2006155611.tif 000009
【００８１】
Ｆｅａｔｕｒｅ要素は、どのコンフィギュレーションにも依存することができない。その使用例は、以下の通りである。
【００８２】
【表８】
2006155611.tif 000010
【００８３】
Ｏｐｔｉｏｎ
Ｏｐｔｉｏｎ要素は、このオプションに関連づけられたＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素をすべて含む。その要素タグは「＜Ｏｐｔｉｏｎ＞」であり、そのＸＭＬ属性は、以下の通りである。ｃｏｎｓｔｒａｉｎｅｄは、Ｏｐｔｉｏｎが選択または使用できる状態にあるかどうかを示す。この拡張マークアップ言語（ＸＭＬ）属性は、以下の値の１つに設定することができる。すなわち、ｎｏｎｅは、Ｏｐｔｉｏｎが制約を受けないことを示す。ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓは、ＯｐｔｉｏｎがＰｒｉｎｔＴｉｃｋｅｔ設定によって制約を受けることを示す。ＡｄｍｉｎＳｅｔｔｉｎｇｓは、Ｏｐｔｉｏｎが管理者の設定によって制約を受ける、つまり、ユーザによって有効にすることができないことを示す。ＤｅｖｉｃｅＳｅｔｔｉｎｇｓは、Ｏｐｔｉｏｎが、物理的にインストールされるデバイス設定またはデバイスオプションによって制約を受けることを示す。この属性は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに対して任意選択である。ｎａｍｅ属性は、Ｏｐｔｉｏｎの名前を含む。この名前は、ＯｐｔｉｏｎＮａｍｅという名前の、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ用のショートカットであることに留意されたい。
【００８４】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【００８５】
【表９】
2006155611.tif 000011
【００８６】
Ｏｐｔｉｏｎ定義要素は、どのコンフィギュレーションにも依存することができない。以下の例は、ＯｐｔｉｏｎＮａｍｅという名前の、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含むＯｐｔｉｏｎ要素を定義する。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素のＶａｌｕｅは、「Ｌｅｔｔｅｒ」である。
【００８７】
【表１０】
2006155611.tif 000012
【００８８】
以下の定義は、Ｏｐｔｉｏｎ用に名前を定義するショートカットメソッドを用いているが、機能的には前述の例と同一である。
【００８９】
【表１１】
2006155611.tif 000013
【００９０】
ＰａｒａｍｅｔｅｒＤｅｆ
ＰａｒａｍｅｔｅｒＤｅｆ要素は、パラメータ入力の有効な特性を定義する。値は、ＰａｒａｍｅｔｅｒＩｎｉｔ要素を用いて入れられる。要素タグは「＜ＰａｒａｍｅｔｅｒＤｅｆ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、現在のドキュメントのコンテキストにおいて、パラメータ用に一意の名前を定義する。重複するＰａｒａｍｅｔｅｒＤｅｆｎａｍｅ属性は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを無効にする。
【００９１】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【００９２】
【表１２】
2006155611.tif 000014
【００９３】
どのネストレベルへのＰａｒａｍｅｔｅｒＤｅｆおよびその内容も、どのコンフィギュレーションにも依存することができない。
【００９４】
以下の例は、このパラメータ用に必要とされるＰｒｏｐｅｒｔｙ要素をすべて設定する。ＰａｒａｍｅｔｅｒＩｎｉｔにおける例は、このパラメータの初期化の仕方を実証する。
【００９５】
【表１３】
2006155611.tif 000015
【００９６】
ＰａｒａｍｅｔｅｒＩｎｉｔ
ＰａｒａｍｅｔｅｒＤｅｆ要素のインスタンス用に値を定義する。ＰａｒａｍｅｔｅｒＩｎｉｔ要素とは、ＰａｒａｍｅｔｅｒＲｅｆ要素によって行われる参照のターゲットである。その要素タグは「＜ＰａｒａｍｅｔｅｒＩｎｉｔ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、現在のドキュメントのコンテキストにおいて初期化されるべきＰａｒａｍｅｔｅｒＤｅｆ要素のｎａｍｅ属性を保有する。
【００９７】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【００９８】
【表１４】
2006155611.tif 000016
【００９９】
コンフィギュレーション依存は存在しない。以下の例では、パラメータを３に初期化する。ＰａｒａｍｅｔｅｒＤｅｆにおける例は、このパラメータ用に、必要とされるＰｒｏｐｅｒｔｙ要素すべてをどのようにして設定するかを実証する。
【０１００】
【表１５】
2006155611.tif 000017
【０１０１】
ＰａｒａｍｅｔｅｒＲｅｆ
ＰａｒａｍｅｔｅｒＲｅｆ要素は、ＰａｒａｍｅｔｅｒＩｎｉｔ要素への参照を定義する。ＰａｒａｍｅｔｅｒＲｅｆ要素を含むＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、明示的に設定されたＶａｌｕｅ要素をもたない。そうではなく、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、その値を、ＰａｒａｍｅｔｅｒＲｅｆ要素によって参照されるＰａｒａｍｅｔｅｒＩｎｉｔ要素から受け取る。その要素タグは「＜ＰａｒａｍｅｔｅｒＲｅｆ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、現在のドキュメントのコンテキストにおいて参照されるＰａｒａｍｅｔｅｒＤｅｆ要素のｎａｍｅ属性を保有する。
【０１０２】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【０１０３】
【表１６】
2006155611.tif 000018
【０１０４】
ＰａｒａｍｅｔｅｒＲｅｆ要素は、どのコンフィギュレーションにも依存することができない。以下の例は、ユーザがカスタムメディアサイズパラメータを入れることを可能にするようなＰａｒａｍｅｔｅｒＲｅｆ要素の使い方を示す。
【０１０５】
【表１７】
2006155611.tif 000019
【０１０６】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ要素は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのルートを表す。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、具体的なデバイスコンフィギュレーションを与えられると、サポートされるデバイス属性を記述するのに必要とされる情報をすべて含む。その要素タグは「＜ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ＞」であり、そのＸＭＬ属性は、以下の通りである。バージョンは、要素型およびその構造を定義するスキーマのバージョンを特定する。バージョン属性は、整数型である。現在のスキーマバージョンは、「１」と指定される。この属性は必須である。
【０１０７】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【０１０８】
【表１８】
2006155611.tif 000020
【０１０９】
ルート要素は、どのコンフィギュレーションにも依存することができない。その使用例として、以降のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの例を参照されたい。
【０１１０】
ＰｒｉｎｔＴｉｃｋｅｔ
ＰｒｉｎｔＴｉｃｋｅｔ要素とは、ＰｒｉｎｔＴｉｃｋｅｔドキュメントのルート要素である。ＰｒｉｎｔＴｉｃｋｅｔ要素は、ジョブを出力するのに必要とされるすべてのジョブフォーマット設定情報を含む。その要素タグは「＜ＰｒｉｎｔＴｉｃｋｅｔ＞」であり、そのＸＭＬ属性は、以下の通りである。ｖｅｒｓｉｏｎは、要素型およびその構造を定義するスキーマのバージョン、すなわち整数型のリテラルを特定する。現在のスキーマバージョンは「１」である。この属性は必須である。
【０１１１】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【０１１２】
【表１９】
2006155611.tif 000021
【０１１３】
コンフィギュレーション依存は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の要素に対してのみ適用可能である。例として、以降のＰｒｉｎｔＴｉｃｋｅｔの例を参照されたい。
【０１１４】
Ｐｒｏｐｅｒｔｙ
Ｐｒｏｐｅｒｔｙ要素は、デバイス、ジョブのフォーマット設定、またはそのｎａｍｅ属性によって名前が与えられる他の適切なプロパティを宣言する。Ｖａｌｕｅ要素は、Ｐｒｏｐｅｒｔｙに値を割り当てるのに使われる。
【０１１５】
Ｐｒｏｐｅｒｔｙは、多数のサブプロパティを含み得る複合でよい。サブプロパティも、Ｐｒｏｐｅｒｔｙ要素によって表される。その要素タグは「＜Ｐｒｏｐｅｒｔｙ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、標準Ｐｒｏｐｅｒｔｙまたは個人定義のＰｒｏｐｅｒｔｙどちらかであるＰｒｏｐｅｒｔｙのｎａｍｅ属性を保有する。
【０１１６】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【０１１７】
【表２０】
2006155611.tif 000022
【０１１８】
Ｐｒｏｐｅｒｔｙは、ＰａｒａｍｅｔｅｒＤｅｆ要素中に現れる場合を除き、コンフィギュレーション依存でよい。その使用例は、以下の通りである。
【０１１９】
【表２１】
2006155611.tif 000023
【０１２０】
ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ
ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、Ｏｐｔｉｏｎ定義に固有のプロパティを宣言する。このようなプロパティは、要求されたＯｐｔｉｏｎが、デバイスがサポートするＯｐｔｉｏｎと、どの程度厳密に一致するかを評価するときに比較されるべきである。その要素タグは「＜ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ＞」であり、そのＸＭＬ属性は、以下の通りである。ｎａｍｅは、標準プロパティまたは個人定義のプロパティどちらかであるＳｃｏｒｅｄＰｒｏｐｅｒｔｙのｎａｍｅ属性を保有する。
【０１２１】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【０１２２】
【表２２】
2006155611.tif 000024
【０１２３】
ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、どのコンフィギュレーションにも依存することができない。その使用例は、以下の通りである。
【０１２４】
【表２３】
2006155611.tif 000025
【０１２５】
Ｖａｌｕｅ
Ｖａｌｕｅ要素は、リテラルを型に関連づける。その要素タグは「＜Ｖａｌｕｅ＞」であり、そのＸＭＬ属性は、以下の通りである。ｘｓｉ：ｔｙｐｅは、以下のＸＳＤ定義の型、すなわち文字列、整数、１０進、ＱＮａｍｅの１つでなければならない、Ｖａｌｕｅのデータ型を特定する。欠けている場合、デフォルトデータ型は文字列となる。
【０１２６】
以下のテーブルは、この要素の親となり得る要素、この要素の子となり得る要素、および要素自体に対するいかなる制限も列挙する。
【０１２７】
【表２４】
2006155611.tif 000026
【０１２８】
ＳｃｏｒｅｄＰｒｏｐｅｒｔｙおよびＡｔｔｒｉｂｕｔｅ要素中に現れるＶａｌｕｅ要素は、どのコンフィギュレーションにも依存することができない。Ｐｒｏｐｅｒｔｙ要素中に現れるＶａｌｕｅ要素は、コンフィギュレーションへの任意の依存性を有し得る。その使用例は、以下の通りである。
【０１２９】
【表２５】
2006155611.tif 000027
【０１３０】
プリントスキーマフレームワーク
このセクションでは、プリントスキーマ要素型の意味および使用についてのより詳細な情報を提供する。プリントスキーマフレームワークの初期バージョンの主な焦点は、デバイス属性のコンフィギュレーションおよび機能を表すことである。高いレベルで、このフレームワークは、デバイス属性において、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文として、またはパラメータ構文として記述する２通りのスタイルをもたらす。デバイス属性が、使用可能な少数の値または状態を有する場合、属性は、Ｏｐｔｉｏｎ要素と呼ばれる、許容される値または状態を有するＦｅａｔｕｒｅとして特徴づけられるべきである。逆に、デバイス属性が、使用可能な多数の値または状態を有し、可能なすべての値の組が、明示的エニュメレーションに頼らずに容易に定義される場合、デバイス属性は、パラメータとして特徴づけられるべきである。（パラメータは、ＰａｒａｍｅｔｅｒＤｅｆ要素を用いて定義され、パラメータインスタンスは、ＰａｒａｍｅｔｅｒＩｎｉｔ要素を用いて初期化される）。ＰｒｏｐｅｒｔｙおよびＡｔｔｒｉｂｕｔｅ要素は、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎおよびパラメータ構文内部で、比較的細かいレベルの差別化をもたらすのに使われる。
【０１３１】
Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文
Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ表現において、デバイス属性は、Ｆｅａｔｕｒｅ要素によって表される。デバイス属性は、以下の例でのように、デバイス属性のＦｅａｔｕｒｅ要素中のｎａｍｅ属性によって一意に識別される。この例では、デバイス属性は解像度である。
【０１３２】
【表２６】
2006155611.tif 000028
【０１３３】
プリントスキーマは、特定のＦｅａｔｕｒｅインスタンス用に１組のｎａｍｅ属性を定義する。こうしたｎａｍｅ属性は、特有のコンフィグレーション可能デバイス属性に関連づけられた、予め定義された１組のＦｅａｔｕｒｅインスタンスを識別するのに役立つ。こうしたＦｅａｔｕｒｅインスタンス名は、そこから導出されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントおよびＰｒｉｎｔＴｉｃｋｅｔの移植性を高めるので、適用可能な場合はいつでも使われるべきである。特定のデバイス属性が、スキーマ定義のＦｅａｔｕｒｅインスタンスのどれにも対応しない場合、個人定義のＦｅａｔｕｒｅインスタンスを導出することができる。ｎａｍｅ属性用のシンタクスならびにスキーマ定義および個人定義の名前に適用される規約についての情報に関しては、以降のＸＭＬ属性を参照されたい。
【０１３４】
可能な状態はそれぞれ、Ｏｐｔｉｏｎ要素によって表される。各Ｏｐｔｉｏｎ定義は、１つまたは複数のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含み、こうした要素はまとめて、表されている状態を一意に記述し、または特徴づける。Ｏｐｔｉｏｎ定義を作成するのに用いられる技法が、Ｏｐｔｉｏｎ  Ｅｌｅｍｅｎｔに記述されている。ある特定のＦｅａｔｕｒｅ要素に関連づけられたＯｐｔｉｏｎ要素はすべて、Ｆｅａｔｕｒｅ要素の子要素として存在する。
【０１３５】
サブフィーチャに関して、以下のことを検討する。プリントスキーマフレームワークは、Ｆｅａｔｕｒｅ要素がまとめて階層的にグループ化されることも可能にする。つまり、Ｆｅａｔｕｒｅ要素自体が、１つまたは複数の子Ｆｅａｔｕｒｅ要素（サブフィーチャ）を含み得る。このことは、関連するＦｅａｔｕｒｅ要素の編成にも、デバイス特徴の側面を制御するＦｅａｔｕｒｅ要素にも有用であり得る。一例が、ステープルをサポートするデバイスである。このようなデバイスは、左上の角、右上の角、上端沿い、または左端沿いなど、どこにステープルを配置するかという選択の余地をユーザに提供し得るであろう。このデバイス用のユーザインターフェース（ＵＩ）は、ユーザに最上位レベルの選択肢、すなわちこの場合はステープルを使うかどうかを最初に提示できるべきである。ユーザがステープルを使うと決めた後でのみ、ユーザに、第２段階の選択肢、すなわちステープルの場所を提示するべきである。特徴階層は、このようなユーザインターフェースを可能にする付加構造を追加する。プリントスキーマフレームワークにより、サブフィーチャは、その独自の子サブフィーチャをもつことができるようになり、そうすることによって、無限レベルのネストが許容される。
【０１３６】
プリントスキーマフレームワークにより、Ｏｐｔｉｏｎ要素がサブフィーチャと同じレベルに、つまり、同じ親Ｆｅａｔｕｒｅ要素における兄弟として現れることも可能になる。これにより、ユーザは、サブフィーチャの選択を行う前に、上位レベルの決定（ステープルを使うかどうか）を行うことができる。この例の場合、ルートＦｅａｔｕｒｅ要素、すなわち「Ｓｔａｐｌｅ」は、２つのＯｐｔｉｏｎ要素を含み得る。すなわち、「Ｏｎ」および「Ｏｆｆ」、ならびに「ＳｔａｐｌｅＬｏｃａｔｉｏｎ」という名前のサブフィーチャである。
【０１３７】
Ｏｐｔｉｏｎ要素
Ｏｐｔｉｏｎ要素の目的は、Ｆｅａｔｕｒｅ要素によって表されるデバイスコンフィギュレーション属性が、想定し得る状態の１つを特徴づけることである。各Ｏｐｔｉｏｎ要素定義は、そのＯｐｔｉｏｎの固有または本質的特性を記述する１つまたは複数のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含む。意図の移植および保存を実行するために、プリントスキーマは、各Ｆｅａｔｕｒｅごとに多くの共通Ｆｅａｔｕｒｅ要素および様々なＯｐｔｉｏｎ要素を定義する。したがって、仮に可能な場合は、自分の独自Ｏｐｔｉｏｎ定義を作成する前に、プリントスキーマ定義のＯｐｔｉｏｎ要素を使うことが重要である。Ｏｐｔｉｏｎ要素を定義するプロセスを理解することにより、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントおよびＰｒｉｎｔＴｉｃｋｅｔが、「Ｌｏｎｇｈｏｒｎ」印刷アーキテクチャにおいて使われる方法を有益に洞察できるようになる。
【０１３８】
プリントスキーマは、多くのＦｅａｔｕｒｅ要素のＯｐｔｉｏｎ定義において広く使われる特殊なＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を定義する。このＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素のｎａｍｅ属性は、ＯｐｔｉｏｎＮａｍｅである。その最も単純な形において、このＳｃｏｒｅｄＰｒｏｐｅｒｔｙは、ｘｓｉ：ｔｙｐｅ属性がＱＮａｍｅとなる、スキーマ定義であるただ１つのＶａｌｕｅ要素を保有する。他の子要素は存在しない。オプション名プロパティのこの最も単純な形は非常に広く使われるので、プリントスキーマフレームワークは、特殊なショートカット表記を提供する。Ｏｐｔｉｏｎ名は、Ｏｐｔｉｏｎ要素においてｎａｍｅ属性として特定することができる。Ｏｐｔｉｏｎ定義が、ただ１つのＳｃｏｒｅｄＰｒｏｐｅｒｔｙを含む場合、このショートカットにより、Ｏｐｔｉｏｎ定義の冗長性がかなり低下する。例えば、Ｏｐｔｉｏｎ定義は、従来のシンタクスでは以下のように表現することができる。
【０１３９】
【表２７】
2006155611.tif 000029
【０１４０】
前述のＯｐｔｉｏｎ定義は、以下の簡単な表記法でも表すことができる。
【０１４１】
【表２８】
2006155611.tif 000030
【０１４２】
この簡単な表記法には、以下の制約事項がある。 
・  簡単な表記法は、ｎａｍｅ属性が「ＯｐｔｉｏｎＮａｍｅ」であるＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素に対してのみ用いることができる。 
・  ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、Ｏｐｔｉｏｎ要素の子（他の子孫ではなく）として存在しなければならない。 
・  ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、ただ１つのＶａｌｕｅ要素以外のどの子要素も含むことはできない。 
・  Ｖａｌｕｅ要素において特定されたｘｓｉ：ｔｙｐｅはＱＮａｍｅでなければならない。
【０１４３】
簡単な表記法は、Ｏｐｔｉｏｎ定義が追加ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含む場合であっても、ＯｐｔｉｏｎＮａｍｅプロパティに対して用いることができる。
【０１４４】
パラメータ構文
パラメータは、値の個別のエニュメレーションではなく、受け入れ可能な範囲の値を完結に記述することによって、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文を補う。プリントスキーマフレームワークは、パラメータに特有の３つの要素を定義する。ＰａｒａｍｅｔｅｒＤｅｆ要素は、パラメータおよびその特性を記述し、ＰａｒａｍｅｔｅｒＩｎｉｔ要素は、パラメータ用にある特定のインスタンスまたは値を定義し、ＰａｒａｍｅｔｅｒＲｅｆ要素は、他のところで定義される特有のＰａｒａｍｅｔｅｒＩｎｉｔ要素を指す。
【０１４５】
ＰａｒａｍｅｔｅｒＩｎｉｔ要素はパラメータに値を割り当てるが、ＰａｒａｍｅｔｅｒＤｅｆ要素は、ＰａｒａｍｅｔｅｒＩｎｉｔ要素が含み得る値を記述する点でＰａｒａｍｅｔｅｒＩｎｉｔ要素とは異なる。ＰａｒａｍｅｔｅｒＤｅｆ要素は、データの型、データの最大、最小、およびデフォルト値、ならびに他の情報を特定するＰａｒａｍｅｔｅｒＤｅｆ要素の子である特有の１組のＰｒｏｐｅｒｔｙ要素からなる。こうしたＰｒｏｐｅｒｔｙ要素は、このトピックにおいて後で説明する。
【０１４６】
ＰａｒａｍｅｔｅｒＤｅｆ要素は、許容されるコンテキストにおいてのみ現れ得る。プリントスキーマの初期バージョンの場合、こうした要素は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのルートレベルに置くことができる。ＰａｒａｍｅｔｅｒＤｅｆ要素のｎａｍｅ属性は、パラメータ名を定義する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の各ＰａｒａｍｅｔｅｒＤｅｆ要素は、一意のｎａｍｅ属性を割り当てられなければならない。
【０１４７】
パラメータ名の意味は普遍的である。つまり、あるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中のＰａｒａｍｅｔｅｒＤｅｆ要素が、別のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中のＰａｒａｍｅｔｅｒＤｅｆ要素と同じｎａｍｅ属性（ＰａｒａｍｅｔｅｒＤｅｆ要素の名前空間および記述名から形成された文字列）をもつ場合、こうした要素が両方とも同じ概念を表し、同じように解釈されるべきであると仮定される。したがって、１つのＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント用にＰｒｉｎｔＴｉｃｋｅｔにおいて定義されるＰａｒａｍｅｔｅｒＤｅｆ要素を、異なるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中で定義される同じ名前のＰａｒａｍｅｔｅｒＩｎｉｔ要素を初期化するのに使うことができる。
【０１４８】
すべてのｎａｍｅ属性について当てはまるように、パラメータ名前は、拡張マークアップ言語（ＸＭＬ）ＱＮａｍｅの形である。スキーマ定義のパラメータ構文は、パブリック名前空間によって修飾される、ｎａｍｅ属性を形成する名前をもち、個人定義のパラメータ構文のｎａｍｅ属性は、作成者にとって一意のプライベート名前空間によって修飾される。
【０１４９】
プリントスキーマキーワードにおいて定義されるＰａｒａｍｅｔｅｒＤｅｆ要素は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中で十分に定義されなければならない。プリントスキーマキーワードドキュメントは、ＰａｒａｍｅｔｅｒＤｅｆ要素（ＤｅｆａｕｌｔＶａｌｕｅおよびそれ以外など）の一部のＰｒｏｐｅｒｔｙ要素に名目値を与えるが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの作者は、残っているＰｒｏｐｅｒｔｙ要素を定義する責任がある。いずれの場合でも、プリントスキーマキーワードにおいて定義されるものを含むすべてのＰｒｏｐｅｒｔｙ要素は、ＰａｒａｍｅｔｅｒＤｅｆ要素中で明示的に定義されなければならない。
【０１５０】
プリントスキーマキーワード中に現れる各ＰａｒａｍｅｔｅｒＤｅｆ要素の特定のＰｒｏｐｅｒｔｙ要素は、不変と指定される。これは、プリントスキーマキーワード定義のＰａｒａｍｅｔｅｒＤｅｆ要素のすべてのＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント定義が、こうしたＰｒｏｐｅｒｔｙ要素を変更せずに保存しなければならないという意味である。こうした不変のＰｒｏｐｅｒｔｙ要素により、パラメータ構文が、すべてのＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに渡って移植可能となり、あいまいさがなくなる。最たる例が、ＰａｒａｍｅｔｅｒＤｅｆ要素において使われる単位である。こうした単位は、その意味の一貫性のある理解を促進するように不変であるべきである。不変でないと指定されたＰａｒａｍｅｔｅｒＤｅｆのＰｒｏｐｅｒｔｙ要素は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて定義し直すことができる。
【０１５１】
ＰａｒａｍｅｔｅｒＤｅｆ要素は、以下のＰｒｏｐｅｒｔｙ要素からなる。特に断りのない限り、すべての要素が存在しなければならない。
【０１５２】
【表２９】
2006155611.tif 000031
【０１５３】
【表３０】
2006155611.tif 000032
【０１５４】
【表３１】
2006155611.tif 000033
【０１５５】
整数または１０進値をもつＰａｒａｍｅｔｅｒＩｎｉｔ要素の場合、ＰａｒａｍｅｔｅｒＩｎｉｔの値は、この数の倍数になるはずである。例えば、１０進値のＰａｒａｍｅｔｅｒＩｎｉｔ要素は、このプロパティを０．１に設定することによって、１０分の１に制限することができる。ＵＩ要素は、ダイアログおよびＵＩ制御を構成する際、このプロパティを使う。さらに、ＰｒｉｎｔＴｉｃｋｅｔ認証コードは、このプロパティを使って、ＰａｒａｍｅｔｅｒＩｎｉｔの値を、Ｍｕｌｔｉｐｌｅによって示される最近値に四捨五入することができる。デバイスドライバおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ＰａｒａｍｅｔｅｒＩｎｉｔ値がこのプロパティ値の倍数であると想定するべきでないことに留意されたい。各プロバイダは、異なるプロバイダがこのプロパティに対して相異なる競合する値を特定する可能性があるので、任意の値を、使用可能な最も近い値に四捨五入できなければならない。
【０１５６】
ＰａｒａｍｅｔｅｒＲｅｆ要素は、具体的にはＯｐｔｉｏｎ要素に適用され、そのＯｐｔｉｏｎ要素が、ある特定のＰａｒａｍｅｔｅｒＤｅｆ要素を指すことができるようにする。こうしたＯｐｔｉｏｎ要素に対して、Ｏｐｔｉｏｎを特徴づけるＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中でＶａｌｕｅとしてハードコードされないが、変数である。この可変性を可能にするために、こうしたＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、ＰａｒａｍｅｔｅｒＲｅｆ要素を含む。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素は、Ｖａｌｕｅ要素およびＰａｒａｍｅｔｅｒＲｅｆ要素の両方を含むことはできない。１つまたは複数のＰａｒａｍｅｔｅｒＲｅｆ要素を含むＯｐｔｉｏｎ要素は、パラメータ化されたＯｐｔｉｏｎ要素と呼ばれる。
【０１５７】
プリントスキーマフレームワークにより、Ｏｐｔｉｏｎ要素は、Ｖａｌｕｅ要素を含む任意の数のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素とともに、パラメータ要素を指す任意の数のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含むことが可能になる。このＦｒａｍｅｗｏｒｋにより、任意の数のＦｅａｔｕｒｅ要素が、パラメータ化されたＯｐｔｉｏｎ要素を含むことも可能になり、任意の数のパラメータ化されたＯｐｔｉｏｎ要素が、各Ｆｅａｔｕｒｅ要素に対して許可される。また、同じまたは異なるＦｅａｔｕｒｅ要素に属し得る異なるいくつかのＯｐｔｉｏｎ要素によって、同じパラメータ構文を参照することができる。
【０１５８】
Ｐｒｏｐｅｒｔｙ要素
ＦｅａｔｕｒｅおよびＯｐｔｉｏｎ要素中に現れるだけでなく、Ｐｒｏｐｅｒｔｙ要素は、それぞれの基底テクノロジのルートレベルに現れる。プリントスキーマは、デバイスを移植可能なように記述するのに使うことができる１組のＰｒｏｐｅｒｔｙ要素を定義する。しかし、こうしたプロパティが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのプロバイダとして自分の要求に不十分である（通常、サポートされるデバイスにはプリントスキーマでは予期されない新規の側面があるため）場合、自分の独自プライベートＰｒｏｐｅｒｔｙ要素を導入することができる。１つまたは複数のプライベートサブプロパティをパブリックＰｒｏｐｅｒｔｙの要素内容として追加することによって、パブリックＰｒｏｐｅｒｔｙによって提供される情報を充実させることも、詳しく調べることもできる。
【０１５９】
Ｐｒｏｐｅｒｔｙ要素は、拡張マークアップ言語（ＸＭＬ）要素タグ、すなわち＜Ｐｒｏｐｅｒｔｙ＞を使って定義される。各Ｐｒｏｐｅｒｔｙは、そのｎａｍｅ属性を用いて名前を割り当てられる。名前は、ＸＭＬ  ＱＮａｍｅでなければならず、名前空間規約に従わなければならない。詳細については、ＸＭＬ属性を参照されたい。Ｐｒｏｐｅｒｔｙ  ｎａｍｅ属性および親Ｐｒｏｐｅｒｔｙ要素からなる階層におけるそのｎａｍｅ属性の場所（サブプロパティである場合）は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントまたはＰｒｉｎｔＴｉｃｋｅｔにおいてＰｒｏｐｅｒｔｙを一意に識別する。
【０１６０】
Ｐｒｏｐｅｒｔｙは、１つもしくは複数のＶａｌｕｅ要素、１つもしくは複数の子Ｐｒｏｐｅｒｔｙ要素（サブプロパティと呼ばれる）、または両方の組合せを含み得る。サブプロパティは、Ｐｒｏｐｅｒｔｙ自体が多数のコンポーネントからなる場合に有用である。例えば、「ＣｏｎｓｕｍａｂｌｅＣｏｌｏｒ」Ｐｒｏｐｅｒｔｙは、「Ｃ」、「Ｍ」、および「Ｙ」コンポーネントをもつことができるであろう。
【０１６１】
Ｐｒｏｐｅｒｔｙ要素は、システムがＰｒｏｐｅｒｔｙデータを操作する際の指針となるＡｔｔｒｉｂｕｔｅ要素も含み得る。プリントスキーマフレームワークの初期バージョン用に定義されたＡｔｔｒｉｂｕｔｅ要素はない。
【０１６２】
Ａｔｔｒｉｂｕｔｅ、ＡｔｔｒｉｂｕｔｅＳｅｔ、およびＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ要素
このトピックでは、Ａｔｔｒｉｂｕｔｅ要素と関連する２つの要素型、すなわちＡｔｔｒｉｂｕｔｅＳｅｔおよびＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ要素を説明する。
【０１６３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓまたはＰｒｉｎｔＴｉｃｋｅｔドキュメントのプロバイダは、Ａｔｔｒｉｂｕｔｅインスタンスを定義することを許可されない。プリントスキーマのみが、定義することを許可される。プリントスキーマの現在のバージョン（メジャーバージョン「１」）は、どのＡｔｔｒｉｂｕｔｅインスタンスも定義していないので、バージョン「１」のどのＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓまたはＰｒｉｎｔＴｉｃｋｅｔドキュメントにも、何も現れないはずである。プリントスキーマキーワードの将来のバージョンが、Ａｔｔｒｉｂｕｔｅインスタンスを定義することも可能である。これについては、今日書かれたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔ認証ルーチンが、Ａｔｔｒｉｂｕｔｅ要素を含むかもしれない将来のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントまたはＰｒｉｎｔＴｉｃｋｅｔを処理する際に正しく作用するように言及しておく。要素型の要約は、Ａｔｔｒｉｂｕｔｅ要素用のシンタクスおよび使用を説明する。Ａｔｔｒｉｂｕｔｅ要素は拡張マークアップ言語（ＸＭＬ）要素であり、ＸＭＬ属性において説明するＸＭＬ属性と混同するべきでないことに留意されたい。
【０１６４】
ＡｔｔｒｉｂｕｔｅＳｅｔ要素とは、それぞれの基底テクノロジ（ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントまたはＰｒｉｎｔＴｉｃｋｅｔ）のルートレベルで定義される１つまたは複数のＡｔｔｒｉｂｕｔｅ要素のグループである。プリントスキーマキーワードまたは個人のどちらでも、この要素型のインスタンスを定義することができる。ＡｔｔｒｉｂｕｔｅＳｅｔは、Ａｔｔｒｉｂｕｔｅ要素の親となり得るどの要素の中からでも参照することができる。
【０１６５】
ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ要素は、ＡｔｔｒｉｂｕｔｅＳｅｔインスタンスへの参照として使われる。この参照は、ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆに対して、対応するＡｔｔｒｉｂｕｔｅＳｅｔ要素と同じｎａｍｅ属性を使うことによって遂行される。プリントスキーマフレームワークは、ＡｔｔｒｉｂｕｔｅＳｅｔ要素への参照を、ＡｔｔｒｉｂｕｔｅＳｅｔＲｅｆ要素自体の代わりに現れるＡｔｔｒｉｂｕｔｅＳｅｔの内容と等価であると定義する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの利用者は、Ａｔｔｒｉｂｕｔｅ要素をサポートし、またはアクセスする場合、この「マクロ拡張」をサポートすることができなければならない。
【０１６６】
ＡｔｔｒｉｂｕｔｅＳｅｔ要素は、ルートレベルに現れなければならない。ＡｔｔｒｉｂｕｔｅＳｅｔは、そのｎａｍｅ属性を用いて名前を与えられなければならない。名前空間規約は、兄弟一意性規則のように、ｎａｍｅ属性に適用される（プリントスキーマにおいて用いられる用語で定義される）。ＡｔｔｒｉｂｕｔｅＳｅｔを構成するＡｔｔｒｉｂｕｔｅインスタンスは、ＡｔｔｒｉｂｕｔｅＳｅｔインスタンスの内容として現れる。
【０１６７】
Ｖａｌｕｅ要素
Ｖａｌｕｅ要素は、Ｐｒｏｐｅｒｔｙ、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ、またはＡｔｔｒｉｂｕｔｅ要素中に現れ得る。Ｖａｌｕｅ要素の目的は、値を標準拡張マークアップ言語（ＸＭＬ）のデータ型として表すことである。データ型は、Ｖａｌｕｅ要素のＸＭＬ属性、すなわちｘｓｉ：ｔｙｐｅとして指定される。すべてのＸＳＤ定義またはＸＭＬ定義の型がサポートされるわけではないことに留意されたい。サポートされる型のリストについては、要素型の要約を参照されたい。Ｖａｌｕｅ要素は、キャラクタ内容のみを含み得る。それ以外のものは、Ｖａｌｕｅ要素中に内容として現れることができない。
【０１６８】
一部のプリントスキーマ定義のＰｒｏｐｅｒｔｙ、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ、およびＡｔｔｒｉｂｕｔｅ要素は、単にサブプロパティの親になることが目的なので、Ｖａｌｕｅ要素を含まない。こうしたプロパティがＶａｌｕｅ要素を含まないからといって、このようなプロパティにＶａｌｕｅ要素を追加するべきではない。
【０１６９】
値をサポートする要素に、Ｖａｌｕｅ要素または部分要素どちらかが存在することを要求するプリントスキーマフレームワークに従うために、欠けているまたは未定義の値は、Ｖａｌｕｅ要素を空の要素として、つまり、＜Ｖａｌｕｅ＞＜／Ｖａｌｕｅ＞と提示することによって表されるべきである。
【０１７０】
プリントスキーマキーワードにおいて定義されるオブジェクトおよび名前
プリントスキーマフレームワークは、プリントスキーマキーワードにおいて定義される要素および拡張マークアップ言語（ＸＭＬ）属性を含む名前空間を定義する。この名前空間は、Ｆｅａｔｕｒｅ、Ｏｐｔｉｏｎ、およびＳｃｏｒｅｄＰｒｏｐｅｒｔｙなどの要素と、ｎａｍｅおよびｐｒｏｐａｇｅｔｅなどのＡｔｔｒｉｂｕｔｅ名と、ｃｏｎｓｔｒａｉｎｅｄなどの、ＸＭＬ属性用の値とを含む。言い換えると、プリントスキーマキーワードにおいて定義される名前のすべての使用は、この名前空間を使って明示的に修飾され、またはデフォルトｘｍｌｎｓ属性の使用によって暗黙的にこの名前空間に関連づけられるべきである。プリントスキーマキーワードドキュメントは、与えられたどのコンテキストにも場所にも現れ得るパブリック要素インスタンスを定義する。要素インスタンスは、プリントスキーマフレームワークにおいて特定されたコンテキストまたは場所にのみ現れなければならない。例えば、プリントスキーマキーワードにおいて定義される＜Ｏｐｔｉｏｎ  ｎａｍｅ＝“Ｌｅｔｔｅｒ”＞インスタンスは、＜Ｆｅａｔｕｒｅ  ｎａｍｅ＝“ＭｅｄｉａＳｉｚｅ”＞インスタンス（プリントスキーマキーワードにおいても定義される）中に現れなければならない。所与のＯｐｔｉｏｎインスタンスを、インスタンスの特定されたコンテキストの外で自由に使うことはできない。
【０１７１】
個人定義の要素インスタンスは、要素型がプリントスキーマフレームワークにおいて許容されるコンテキストに現れる限り、どこにも現れ得る。
【０１７２】
ＸＭＬ属性
プリントスキーマフレームワークにおいて定義されるいくつかの要素型に現れる、いくつかの拡張マークアップ言語（ＸＭＬ）属性がある。同じ名前を有するＸＭＬ属性は概して、同じ意味をもち、属性が存在している要素型にかかわらず同じ規則に服従する。したがって、ＸＭＬ属性は、ここではそのホスト要素型ではなく名前で列挙される。個人定義のＸＭＬ属性は許可されない。ここで定義されるＸＭＬ属性のみが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントまたはＰｒｉｎｔＴｉｃｋｅｔ、次いで定義済みのコンテキストにおいてのみ使うことができる。
【０１７３】
個人は、別の当事者の名前空間に新しい定義を導入することを許可されないが、その使用が、他の当事者によって確立された使用法に整合する限り、既存の名前を別のプライベート名前空間から使用することは許可される。したがって、Ｏｐｔｉｏｎは、異なる名前空間にそれぞれ存在する、数人の当事者によって定義されたＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含み得る。
【０１７４】
【表３２】
2006155611.tif 000034
【０１７５】
以下の点が、ｎａｍｅ属性に関連する。
【０１７６】
ｎａｍｅ属性は、有効なＸＭＬ定義のＱＮａｍｅの形でなければならない。つまり、有効なＸＭＬ名前空間によって修飾されなければならない。ｎａｍｅ属性の値として現れるＱＮａｍｅは、デフォルトの名前空間が定義される場合であっても、明示的に名前空間で修飾されなければならない。
【０１７７】
キャラクタ内容は、有効なＸＭＬ定義のＱＮａｍｅの内容でなければならない。
【０１７８】
個人定義の名前は、ｎａｍｅ属性を導入した当事者に一意に関連づけられる名前空間で修飾されなければならない。
【０１７９】
兄弟一意性要件：同じ要素型に属すどの２つの兄弟要素も、同じｎａｍｅ属性をもつことはできない。唯一の例外がＯｐｔｉｏｎ要素であり、この要素において、ｎａｍｅ属性は実際に、ＯｐｔｉｏｎＮａｍｅという名前のＳｃｏｒｅｄＰｒｏｐｅｒｔｙに対する、構文上の簡易表現である。したがって、複数の兄弟をもつＯｐｔｉｏｎ要素は、同じｎａｍｅ属性をもつことができる。
【０１８０】
Ａｔｔｒｉｂｕｔｅ、ＡｔｔｒｉｂｕｔｅＳｅｔ、Ｐｒｏｐｅｒｔｙ、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ、ＰａｒａｍｅｔｅｒＤｅｆ、Ｏｐｔｉｏｎ、およびＦｅａｔｕｒｅの要素型は、ｎａｍｅ属性を含み得る。
【０１８１】
ｎａｍｅ属性は、任意選択である場合、Ｏｐｔｉｏｎ要素のケースを除いて、ｎａｍｅ属性を含む要素型それぞれに現れることが必要とされる。
【０１８２】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔプロバイダおよびクライアントは、Ｏｐｔｉｏｎ要素中でｎａｍｅ属性のショートカットを完全表記に拡大した後で、それ以上の処理を実施することを望み得るであろう。こうすることにより、実装が容易になる。
【０１８３】
ｃｏｎｓｔｒａｉｎｅｄ属性の許容される値は、以下の意味をもつ。こうした値は、最も限定的でないもの（Ｎｏｎｅ）から最も限定的なもの（ＤｅｖｉｃｅＳｅｔｔｉｎｇｓ）へ順序通り列挙されることに留意されたい。Ｎｏｎｅは、Ｏｐｔｉｏｎが制約を受けないことを意味する。ＰｒｉｎｔＴｉｃｋｅｔＳｅｔｔｉｎｇｓは、ＯｐｔｉｏｎがＰｒｉｎｔＴｉｃｋｅｔ設定によって制約を受けることを意味する。このことは、コンフィギュレーションの変更が制約を削除できることを含意する。ＡｄｍｉｎＳｅｔｔｉｎｇｓは、Ｏｐｔｉｏｎが管理者の設定によって制約を受けることを意味する。Ｏｐｔｉｏｎは、ユーザによって有効にすることができない。ＤｅｖｉｃｅＳｅｔｔｉｎｇｓは、Ｏｐｔｉｏｎがデバイス設定または物理的にインストールされるデバイスオプションによって制約を受けることを意味する。Ｏｐｔｉｏｎは、ユーザまたは管理者どちらによっても有効にすることができない。
【０１８４】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダが、ｃｏｎｓｔｒａｉｎｅｄ属性の値を報告すると、みつけられた最も限定的な制約が報告されるべきである。例えば、Ｏｐｔｉｏｎが、管理者設定およびデバイス設定両方によって制約を受ける場合、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ＤｅｖｉｃｅＳｅｔｔｉｎｇｓを報告するべきである。
【０１８５】
プリントスキーマキーワード
以下のセクションは、プリントスキーマキーワードを説明し、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔのセクションに分けられる。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓセクションは、ユーザコンフィグレーション可能Ｅｌｅｍｅｎｔ、管理者コンフィグレーション可能Ｅｌｅｍｅｎｔ、デバイス情報、およびパラメータ定義の下位セクションを含む。
【０１８６】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ
以下は、クライアントユーザインターフェース（ＵＩ）を介してエンドユーザによってコンフィグレーション可能であることを意図しているＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ要素を表す。以降の例は、例を構成するに過ぎず、後で説明する要素とは異なる、またはそうした要素への追加である他の要素を、特許請求の対象の精神および範囲から逸脱することなく使用することができることを理解されたい。
【０１８７】
ＤｅｖｉｃｅＩｎｐｕｔＢｉｎｓ
デバイス中のインストールされる入力ビン、またはデバイス用にサポートされるビンの詳細リストを記述する。
【０１８８】
ＤｅｖｉｃｅＯｕｔｐｕｔＢｉｎｓ
デバイス中のインストールされる出力ビン、またはデバイス用にサポートされるビンの詳細リストを記述する。
【０１８９】
ＤｅｖｉｃｅＰａｇｅＰｒｏｔｅｃｔｉｏｎ
デバイスが、大きすぎてメモリに収まらないページに対して備えているかどうかを記述する。
【０１９０】
ＤｏｃｕｍｅｎｔＢａｎｎｅｒＳｈｅｅｔ
バナーシートを記述する。各ドキュメントは別個のシートをもつ。
【０１９１】
ＤｏｃｕｍｅｎｔＢｉｎｄｉｎｇ
綴じ方を記述する。各ドキュメントは別個に綴じられる。
【０１９２】
ＤｏｃｕｍｅｎｔＣｏｌｌａｔｅ
出力の照合特性を記述する。各ドキュメントは別個に照合される。
【０１９３】
ＤｏｃｕｍｅｎｔＣｏｖｅｒＢａｃｋ
裏表紙（最後）のカバーシートを記述する。各ドキュメントは別個のシートをもつ。
【０１９４】
ＤｏｃｕｍｅｎｔＣｏｖｅｒＦｒｏｎｔ
表紙（最初）のカバーシートを記述する。各ドキュメントは別個のシートをもつ。
【０１９５】
ＤｏｃｕｍｅｎｔＤｕｐｌｅｘ
出力の複製特性を記述する。各ドキュメントは別個に複製される。
【０１９６】
ＤｏｃｕｍｅｎｔＨｏｌｅＰｕｎｃｈ
出力の穴あけ特性を記述する。各ドキュメントは別個に穴をあけられる。
【０１９７】
ＤｏｃｕｍｅｎｔＮＵｐ
ただ１枚の物理シートへの、多数の論理ページの出力を記述する。各ドキュメントは別個に編集される。
【０１９８】
ＤｏｃｕｍｅｎｔＰａｇｅＲａｎｇｅｓ
ページにおける、ドキュメントの出力範囲を記述する。
【０１９９】
ＤｏｃｕｍｅｎｔＲｏｌｌＣｕｔ
ロールペーパーのカット方法を記述する。各ドキュメントは別個に操作される。
【０２００】
ＤｏｃｕｍｅｎｔＳｅｐａｒａｔｏｒＳｈｅｅｔ
ドキュメント用のセパレータシート（群）を記述する。
【０２０１】
ＤｏｃｕｍｅｎｔＳｔａｐｌｅ
出力のステープル特性を記述する。各ドキュメントは別個にステープルされる。
【０２０２】
ＪｏｂＡｃｃｏｕｎｔｉｎｇＳｈｅｅｔ
アカウントシートを記述する。ドキュメント全体として、ただ１枚のシートをもつ。
【０２０３】
ＪｏｂＢａｎｎｅｒＳｈｅｅｔ
バナーシートを記述する。ジョブ全体として、ただ１枚のシートをもつ。
【０２０４】
ＪｏｂＢｉｎｄｉｎｇ
綴じ方を記述する。すべてのドキュメントが１冊に綴じられる。
【０２０５】
ＪｏｂＣｏｌｌａｔｅ
出力の照合特性を記述する。ジョブ全体が、一まとまりとして照合される。
【０２０６】
ＪｏｂＣｏｖｅｒＢａｃｋ
裏表紙（最後）のカバーシートを記述する。ジョブ全体として、ただ１枚のシートをもつ。
【０２０７】
ＪｏｂＣｏｖｅｒＦｒｏｎｔ
表紙（最初）のカバーシートを記述する。ジョブ全体として、ただ１枚のシートをもつ。
【０２０８】
ＪｏｂＤａｔａｔｙｐｅ
印刷サブシステムにジョブを送るのに用いるためのデータ形式を特定する。
【０２０９】
ＪｏｂＤｅｖｉｃｅＬａｎｇｕａｇｅ
サポートされるデバイス言語を記述する。
【０２１０】
ＪｏｂＤｕｐｌｅｘ
出力の複製特性を記述する。すべてのドキュメントが、まとめて複製される。
【０２１１】
ＪｏｂＥｒｒｏｒＳｈｅｅｔ
エラーシート出力を記述する。ジョブ全体として、ただ１枚のエラーシートをもつ。
【０２１２】
ＪｏｂＨｏｌｅＰｕｎｃｈ
出力の穴あけ特性を記述する。すべてのドキュメントが、まとめて穴をあけられる。
【０２１３】
ＪｏｂＩｎｐｕｔＢｉｎｓ
デバイス中のインストールされる入力ビン、またはデバイス用にサポートされるビンの詳細リストを記述する。
【０２１４】
ＪｏｂＮＵｐ
ただ１枚の物理シートへの、多数の論理ページの出力を記述する。すべてのドキュメントがまとめて編集される。
【０２１５】
ＪｏｂＯｕｔｐｕｔＢｉｎｓ
デバイス中のインストールされる出力ビン、またはデバイス用にサポートされるビンの詳細リストを記述する。
【０２１６】
ＪｏｂＯｕｔｐｕｔＯｐｔｉｍｉｚａｔｉｏｎ
特定の使用シナリオ向けに出力の最適化を意図しているジョブの処理を記述する。
【０２１７】
ＪｏｂＰａｇｅＯｒｄｅｒ
ジョブ用にページの順序づけを定義する。
【０２１８】
ＪｏｂＰａｇｅＳｔｒｅａｍｉｎｇ
ジョブのストリーム特性を記述する。ジョブ全体に対して、ただ１つのページストリームを用いる。
【０２１９】
ＪｏｂＲｏｌｌＣｕｔ
ロールペーパーのカット方法を記述する。ジョブの中のすべてのドキュメントが同じように操作される。
【０２２０】
ＪｏｂＳｔａｐｌｅ
出力のステープル特性を記述する。すべてのドキュメントがまとめてステープルされる。
【０２２１】
ＰａｇｅＢｏｒｄｅｒｌｅｓｓ
ページの縁なし特性を記述する。
【０２２２】
ＰａｇｅＣａｎｖａｓＳｉｚｅ
レイアウトおよびレンダリング用の想像上のキャンバスを記述する。このキャンバスは、ＰａｇｅＭｅｄｉａＳｉｚｅおよびＰａｇｅＯｒｉｅｎｔａｔｉｏｎに基づいて報告される。
【０２２３】
ＰａｇｅＣｏｍｐｒｅｓｓｉｏｎ
出力を圧縮するのに使われる圧縮アルゴリズムを記述する。
【０２２４】
ＰａｇｅＤｅｖｉｃｅＦｏｎｔＳｕｂｓｔｉｔｕｔｉｏｎ
デバイスフォントの代用の有効／無効状態を記述する。
【０２２５】
ＰａｇｅＦｏｒｃｅＦｒｏｎｔＳｉｄｅ
強制的に出力をメディアシートの表に現れさせる。各側に異なる面を有するメディアシートに適している。
【０２２６】
ＰａｇｅＭｅｄｉａＣｏｌｏｒ
ＭｅｄｉａＣｏｌｏｒオプションおよび各オプションの特性を記述する。
【０２２７】
ＰａｇｅＭｅｄｉａＳｉｚｅ
出力用に使われるＭｅｄｉａＳｉｚｅを記述する。
【０２２８】
ＰａｇｅＭｅｄｉａＴｙｐｅ
ＭｅｄｉａＴｙｐｅオプションおよび各オプションの特性を記述する。
【０２２９】
ＰａｇｅＭｉｒｒｏｒＩｍａｇｅ
出力の鏡映設定を記述する。
【０２３０】
ＰａｇｅＮｅｇａｔｉｖｅＩｍａｇｅ
出力の陰画設定を記述する。
【０２３１】
ＰａｇｅＯｒｉｅｎｔａｔｉｏｎ
メディアシートの向きを記述する。
【０２３２】
ＰａｇｅＯｕｔｐｕｔＣｏｌｏｒ
出力の色設定を記述する。
【０２３３】
ＰａｇｅＯｕｔｐｕｔＱｕａｌｉｔｙ
出力の質を記述する。
【０２３４】
ＰａｇｅＰｈｏｔｏＰｒｉｎｔｉｎｇＩｎｔｅｎｔ
写真印刷設定を投入するための、ドライバに対する上位レベルの意図を示す。
【０２３５】
ＰａｇｅＰｏｓｔｅｒ
多数の物理メディアシートへのただ１ページの出力を記述する。
【０２３６】
ＰａｇｅＲｅｓｏｌｕｔｉｏｎ
出力解像度を記述する。
【０２３７】
ＰａｇｅＳｃａｌｉｎｇ
出力のスケーリング特性を記述する。
【０２３８】
ＰａｇｅＴｒｕｅＴｙｐｅＦｏｎｔＭｏｄｅ
用いられるＴｒｕｅＴｙｐｅフォント操作のメソッドを記述する。
【０２３９】
ＰａｇｅＷａｔｅｒｍａｒｋ
出力の透かし設定および透かし特性を記述する。
【０２４０】
以下は、印刷キューの管理者によってコンフィグレーション可能であることを意図しているＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ要素を表す。
【０２４１】
ＤｅｖｉｃｅＣｏｍｍｅｎｔ
デバイスが表示するコメントを特定する（例えば、「デバイスは、午後１：００まで保守のため動作不能」）。
【０２４２】
ＤｅｖｉｃｅＤｅｓｃｒｉｐｔｉｏｎ
デバイスの記述を特定する。
【０２４３】
ＤｅｖｉｃｅＨｏｓｔＮａｍｅ
デバイスのホスト名を特定する（適用可能な場合）。
【０２４４】
ＤｅｖｉｃｅＬｏｃａｔｉｏｎ
デバイス用の記述場所を特定する。
【０２４５】
ＤｅｖｉｃｅＮａｍｅ
デバイス用の記述名を特定する。
【０２４６】
以下は、デバイスについての情報をクライアントに報告するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ要素を表すが、読取り専用である。
【０２４７】
ＤｅｖｉｃｅＢｉＤｉ
デバイスのＢｉＤｉ機能を記述する。
【０２４８】
ＤｅｖｉｃｅＣｏｍｐａｔｉｂｌｅＩＤｓ
デバイスと互換性があるＩＤのリストを特定する。
【０２４９】
ＤｅｖｉｃｅＦａｌｌｂａｃｋＵＲＩ
特定されたデバイスが使用可能でない場合に戻るべきデフォルトデバイスを特定する。
【０２５０】
ＤｅｖｉｃｅＦｉｒｍｗａｒｅＶｅｒｓｉｏｎ
デバイスのファームウェアバージョンを特定する。
【０２５１】
ＤｅｖｉｃｅＩＤ
デバイス用の一意のＩＤを特定する。
【０２５２】
ＤｅｖｉｃｅＩＰ
デバイスのＩＰアドレスを特定する（適用可能な場合）。
【０２５３】
ＤｅｖｉｃｅＭａｎｕｆａｃｔｕｒｅｒ
デバイスの製造元を特定する。
【０２５４】
ＤｅｖｉｃｅＭａｘｊＪｏｂＳｉｚｅＡｌｌｏｗｅｄ
デバイスに送ることができる最大ジョブサイズを特定する。
【０２５５】
ＤｅｖｉｃｅＭｅｄｉａＳｉｚｅ
デバイスメディアサイズ機能を記述する。
【０２５６】
ＤｅｖｉｃｅＭｅｍｏｒｙ
デバイスメモリの詳細を特定する。
【０２５７】
ＤｅｖｉｃｅＭｏｄｅｌＮａｍｅ
デバイスの製造元のモデル名を特定する。
【０２５８】
ＤｅｖｉｃｅＭｏｎｉｔｏｒＥｎｖｉｒｏｎｍｅｎｔ
モニタが設計されるオペレーティングシステム環境を特定する。
【０２５９】
ＤｅｖｉｃｅＭｏｎｉｔｏｒＩＤ
モニタ用の一意のＩＤを特定する。
【０２６０】
ＤｅｖｉｃｅＭｏｎｉｔｏｒＮａｍｅ
デバイスのモニタ名を特定する。
【０２６１】
ＤｅｖｉｃｅＰｎＰＩＤ
デバイス用のプラグアンドプレイＩＤを特定する。
【０２６２】
ＤｅｖｉｃｅＰｏｒｔＩＤ
ポート用の一意のＩＤを特定する。
【０２６３】
ＤｅｖｉｃｅＰｏｒｔＴｙｐｅ
デバイスのポートタイプを記述する。
【０２６４】
ＤｅｖｉｃｅＰｒｉｎｔＲａｔｅ
現在の印刷速度性能を特定する。
【０２６５】
ＤｅｖｉｃｅＰｒｉｎｔスキーマＶｅｒｓｉｏｎ
デバイスによってサポートされる最も高いプリントスキーマバージョンを特定する。
【０２６６】
ＤｅｖｉｃｅＰＳＭｅｍｏｒｙ
ＰｏｓｔＳｃｒｉｐｔ使用のためのデバイスメモリの詳細を特定する。
【０２６７】
ＤｅｖｉｃｅＳｅｒｉａｌＮｕｍｂｅｒ
デバイスの製造元のシリアルナンバーを特定する。
【０２６８】
ＤｅｖｉｃｅＴｅｃｈｎｏｌｏｇｙ
デバイスによってサポートされる出力テクノロジのリストを特定する。
【０２６９】
ＤｅｖｉｃｅＴｙｐｅ
デバイスの一般型を特定する。
【０２７０】
ＤｅｖｉｃｅＴｙｐｅＦｕｎｃｔｉｏｎ
デバイスの一般型を特定する。
【０２７１】
ＤｅｖｉｃｅＵＲＩ
適用可能な場合、デバイス用のＵＲＩを特定する。
【０２７２】
以下は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓによって参照されるパラメータのリストである。
【０２７３】
ＤｏｃｕｍｅｎｔＢａｎｎｅｒＳｈｅｅｔＳｏｕｒｃｅ
カスタムバナーシート用のソースを特定する。
【０２７４】
ＤｏｃｕｍｅｎｔＣｏｐｙＣｏｕｎｔ
ドキュメントのコピー数を特定する。
【０２７５】
ＤｏｃｕｍｅｎｔＣｏｖｅｒＢａｃｋＳｏｕｒｃｅ
カスタム裏表紙シート用のソースを特定する。
【０２７６】
ＤｏｃｕｍｅｎｔＣｏｖｅｒＦｒｏｎｔＳｏｕｒｃｅ
カスタム表紙シート用のソースを特定する。
【０２７７】
ＪｏｂＡｃｃｏｕｎｔＵｓｅｒｎａｍｅ
ジョブのアカウント情報が起因するはずのユーザ名を特定する。例えば、この情報は、ある特定のグループのすべてのメンバによって使われる一般アカウントでよく、すなわちマーケティング部門全員が、同じアカウントを使う。
【０２７８】
ＪｏｂＢａｎｎｅｒＳｈｅｅｔＳｏｕｒｃｅ
カスタムバナーシート用のソースを特定する。
【０２７９】
ＪｏｂＣｏｍｍｅｎｔ
ジョブに関連づけられたコメントを特定する。例：「完了後、１２３４号室に配ってほしい」。
【０２８０】
ＪｏｂＣｏｐｙＣｏｕｎｔ
ジョブのコピー数を特定する。
【０２８１】
ＪｏｂＣｏｖｅｒＢａｃｋＳｏｕｒｃｅ
カスタム裏表紙シート用のソースを特定する。
【０２８２】
ＪｏｂＣｏｖｅｒＦｒｏｎｔＳｏｕｒｃｅ
カスタム表紙シート用のソースを特定する。
【０２８３】
ＪｏｂＥｒｒｏｒＳｈｅｅｔＳｏｕｒｃｅ
カスタムエラーシート用のソースを特定する。
【０２８４】
ＪｏｂＯｗｎｅｒＵｓｅｒｎａｍｅ
印刷ジョブに関連づけられたユーザ名を特定する。ユーザ名は一般に、ジョブを開始したユーザであり、ＪｏｂＡｃｃｏｕｎｔＵｓｅｒｎａｍｅに対応してもしなくてもよい。
【０２８５】
ＪｏｂＰａｇｅＳｔｒｅａｍｉｎｇＰａｇｅｓＰｅｒＳｕｂｓｅｔ
ページストリームに対して、サブセットごとにページを特定する。
【０２８６】
ＪｏｂＰｒｉｏｒｉｔｙ
ジョブに対する、数値で表した重要度を特定する。０が最も高い重要度であり、２５５が最も低い。
【０２８７】
ＰａｇｅＣｏｐｙＣｏｕｎｔ
ジョブのコピー数を特定する。
【０２８８】
ＰａｇｅＭｅｄｉａＣｏｌｏｒＣＩＥＬａｂＡ
ＣｕｓｔｏｍＭｅｄｉａＣｏｌｏｒオプション用のＣＩＥＬａｂ赤緑値を特定する。
【０２８９】
ＰａｇｅＭｅｄｉａＣｏｌｏｒＣＩＥＬａｂＢ
ＣｕｓｔｏｍＭｅｄｉａＣｏｌｏｒオプション用のＣＩＥＬａｂ黄青値を特定する。
【０２９０】
ＰａｇｅＭｅｄｉａＣｏｌｏｒＣＩＥＬａｂＬ
ＣｕｓｔｏｍＭｅｄｉａＣｏｌｏｒオプション用のＣＩＥＬａｂ明度値を特定する。
【０２９１】
ＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＸ
ＣｕｓｔｏｍＭｅｄｉａＳｉｚｅオプション用のディメンションＭｅｄｉａＳｉｚｅＸ方向を特定する。
【０２９２】
ＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＹ
ＣｕｓｔｏｍＭｅｄｉａＳｉｚｅオプション用のディメンションＭｅｄｉａＳｉｚｅＹ方向を特定する。
【０２９３】
ＰａｇｅＭｅｄｉａＳｉｚｅＰＳＨｅｉｇｈｔ
紙送り方向に平行な、ページの高さを特定する。
【０２９４】
ＰａｇｅＭｅｄｉａＳｉｚｅＰＳＨｅｉｇｈｔＯｆｆｓｅｔ
紙送り方向に平行なオフセットを特定する。
【０２９５】
ＰａｇｅＭｅｄｉａＳｉｚｅＰＳＯｒｉｅｎｔａｔｉｏｎ
紙送り方向に対する向きを特定する。
【０２９６】
ＰａｇｅＭｅｄｉａＳｉｚｅＰＳＷｉｄｔｈ
紙送り方向に垂直なページ幅を特定する。
【０２９７】
ＰａｇｅＭｅｄｉａＳｉｚｅＰＳＷｉｄｔｈＯｆｆｓｅｔ
紙送り方向に垂直なオフセットを特定する。
【０２９８】
ＰａｇｅＳｃａｌｉｎｇＳｃａｌｅＸ
カスタムスケーリング用に、ＣａｎｖａｓＳｉｚｅＸ方向のスケーリングオフセットを特定する。
【０２９９】
ＰａｇｅＳｃａｌｉｎｇＳｃａｌｅＹ
カスタムスケーリング用に、ＣａｎｖａｓＳｉｚｅＹ方向のスケーリングオフセットを特定する。
【０３００】
ＰａｇｅＳｃａｌｉｎｇＳｃａｌｅ
カスタム縦横比固定スケーリング用のスケーリング倍率を特定する。
【０３０１】
ＰａｇｅＳｃａｌｉｎｇＳｃａｌｅＸ
カスタムスケーリング用の、ＣａｎｖａｓＳｉｚｅＸ方向のスケーリング倍率を特定する。
【０３０２】
ＰａｇｅＳｃａｌｉｎｇＳｃａｌｅＹ
カスタムスケーリング用の、ＣａｎｖａｓＳｉｚｅＹ方向のスケーリング倍率を特定する。
【０３０３】
ＰａｇｅＷａｔｅｒｍａｒｋＯｒｉｇｉｎＸ
ＰａｇｅＣａｎｖａｓＳｉｚｅの起点に対して、透かしの起点を特定する。
【０３０４】
ＰａｇｅＷａｔｅｒｍａｒｋＯｒｉｇｉｎＹ
ＰａｇｅＣａｎｖａｓＳｉｚｅの起点に対して、透かしの起点を特定する。
【０３０５】
ＰａｇｅＷａｔｅｒｍａｒｋＳｉｚｅＸ
ＰａｇｅＣａｎｖａｓＳｉｚｅのＸ方向に対して、透かしのサイズを特定する。
【０３０６】
ＰａｇｅＷａｔｅｒｍａｒｋＳｉｚｅＹ
ＰａｇｅＣａｎｖａｓＳｉｚｅのＹ方向に対して、透かしのサイズを特定する。
【０３０７】
ＰａｇｅＷａｔｅｒｍａｒｋＴｅｘｔＡｎｇｌｅ
ＰａｇｅＣａｎｖａｓＳｉｚｅのＸ方向に対して、透かしテキストの角度を特定する。
【０３０８】
ＰａｇｅＷａｔｅｒｍａｒｋＴｅｘｔＴｅｘｔ
透かしのテキストを特定する。
【０３０９】
ＰｒｉｎｔＴｉｃｋｅｔ
以下は、クライアントＵＩを介してエンドユーザによってコンフィグレーション可能であることを意図しているＰｒｉｎｔＴｉｃｋｅｔ要素を表す。ＰｒｉｎｔＴｉｃｋｅｔ要素は、上述のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ要素もすべて含む。簡潔にするために、そうした要素は、ここで繰り返し説明しない。
【０３１０】
ＤｏｃｕｍｅｎｔＩＤ
ドキュメント用の一意のＩＤを特定する。
【０３１１】
ＤｏｃｕｍｅｎｔＮａｍｅ
ドキュメント用の記述名を特定する。
【０３１２】
ＤｏｃｕｍｅｎｔＵＲＩ
ドキュメント用のＵＲＩを特定する。
【０３１３】
ＪｏｂＩＤ
ジョブ用の一意のＩＤを特定する。
【０３１４】
ＪｏｂＮａｍｅ
ジョブ用の記述名を特定する。
【０３１５】
ＪｏｂＵＲＩ
ジョブ用のＵＲＩを特定する。
【０３１６】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマおよびドキュメント構成
一部のシステムは、印刷デバイスの機能およびプロパティに関して、非ドライバコンポーネントが入手し得る情報のタイプを厳しく制限することができる。さらに、多くのシステムでは、印刷プロセッサの機能の公開もサポートせず、非標準特徴をエニュメレートするメソッドもない。したがって、ドライバ以外のコンポーネントが、完全なユーザインターフェースを構成する方法はない。さらに、クライアントもアプリケーションも、デバイスの機能または印刷キューを完全には判定することができない。
【０３１７】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、こうした関数によって与えられる機能性のスーパーセットを提供することによって、こうした制限事項の多くを排除することを意図している。より多くの機能性が必要とされる場合、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのプロバイダは、プリントスキーマフレームワークの制約の範囲内で、個人定義の要素インスタンスを追加することによって、プリントスキーマキーワードを拡張してよい。交換媒体としての拡張マークアップ言語（ＸＭＬ）に依拠するので、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのどの利用者も、ドキュメント中のデータのすべてに、制限なく、異なるオペレーティングシステムバージョンとの互換性を心配せずにアクセスすることができる。このセクションでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマを説明し、その使用を詳述する。
【０３１８】
このセクションで提示される情報は、ＰｒｉｎｔＴｉｃｋｅｔ／ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダインターフェースの実装者、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの利用者、およびＰｒｉｎｔＴｉｃｋｅｔ／ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダインターフェースのクライアントによって使用することができる。
【０３１９】
これまでの段落における第１のカテゴリは、このセクションの残りの部分においてＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダと呼ばれる。第２および第３のカテゴリは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ利用者と呼ばれる。
【０３２０】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔスキーマは両方とも、プリントスキーマの特殊化部分である。プリントスキーマのこうしたサブセットの間の構造上の主な違いは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、ＰｒｉｎｔＴｉｃｋｅｔスキーマに含まれないＰｒｏｐｅｒｔｙおよびＰａｒａｍｅｔｅｒＤｅｆインスタンスを含み、ＰｒｉｎｔＴｉｃｋｅｔスキーマは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマに含まれないＰｒｏｐｅｒｔｙおよびＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを含むことである。こうした違いを除いて、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔスキーマは概して、Ｆｅａｔｕｒｅ、Ｏｐｔｉｏｎ、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ、およびＶａｌｕｅインスタンスを共有して、互いの内容を反映する。共有されるこのようなどの内容も、最新に保たれなければならない。例えば、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマ中のＭｅｄｉａＳｉｚｅ  Ｆｅａｔｕｒｅにおいて変更が行われた場合、同じ変更が、ＰｒｉｎｔＴｉｃｋｅｔスキーマにおいて行われなければならない。
【０３２１】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの概論
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、デバイス上で使用可能である、コンフィグレーション可能なデバイス属性を記述する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓによって記述されるデバイスはしばしば、いく通りかのコンフィギュレーションに置くことができる。印刷デバイスの場合、一般的な印刷属性は、複数部数印刷、解像度、およびメディアサイズを含む。デバイスが、こうした属性をサポートする場合、こうした属性は、そのデバイス用のコンフィギュレーションの一部である。ユーザは、利用可能な属性それぞれに特有の値を割り当てることによって、具体的なコンフィギュレーションを選択する。例えば、Ｄｕｐｌｅｘ：ＯｎｅＳｉｄｅｄ、Ｒｅｓｏｌｕｔｉｏｎ：６００ｄｐｉ、およびＭｅｄｉａＳｉｚｅ：Ｌｅｇａｌとなる。
【０３２２】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓにおいて使うことができる要素を定義するプリントスキーマフレームワークに基づく。プリントスキーマキーワードは、個々のクライアントの間での情報および意図の移植を促進させる目的で、頻繁に使われる要素階層、またはキーワードを定義する。しかし、プリントスキーマキーワードは、特殊な要求を満たすためにＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓをあつらえることができるように、プライベート拡張も可能にする。
【０３２３】
デバイスのコンフィギュレーション空間は、デバイスの属性すべてに割り当てることができる、可能なすべての値の組である。デバイスのコンフィギュレーション空間をＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに記述する、最も重要な２つの理由は、以下の通りである。
【０３２４】
情報は、デバイスの機能の理解向上に大いに寄与する。この情報は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのクライアントが、ユーザインターフェース（ＵＩ）要素を生成することをより容易にし、その結果、エンドユーザが、ジョブを処理するための具体的なコンフィギュレーションを選択することをより容易にする。アプリケーションに、および最終的にはエンドユーザに、デバイスの機能のより多くの詳細を与えることによって、ユーザの印刷意図を、より有効に満たすことができる。
【０３２５】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ中で提示される特定のデバイスプロパティは、クライアントによって選択される具体的なコンフィギュレーションに依存し得るであろう。
【０３２６】
一部の情報については、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに組み込むべきではない。このような情報は、ジョブの作成方法に影響を与えず、ジョブの作成方法に制約を課さず、デバイスプロパティに影響を与えない情報を含む。例えば、デバイスは、ジョブの組が処理されるのを待機しているなど、状況情報を報告することができるであろう。この情報は、ジョブをフォーマットするのに必要とされる情報に影響を与えず、デバイスにおいて利用可能な機能を何も指示しない。この理由のため、このタイプの情報は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに存在する必要がない。
【０３２７】
多くのデバイスは、デバイスに対する制約のせいで、コンフィギュレーション空間において、可能なすべてのコンフィギュレーションをサポートするわけではない。例えば、あるデバイスは、透過的なメディアに対する複製印刷の実施を制約する場合がある。制約は、物理的制限を表し得る。すなわち、一部のメディアタイプは単に、あまりにも硬いのでデバイス内の特定の用紙パスを通ることができず、したがって、一部の入力スロットに入れることも、一部の出力ビンに経路指定することもできない。現在、入力ＰｒｉｎｔＴｉｃｋｅｔによって表されるコンフィギュレーションを検証し、このコンフィギュレーションが無効なコンフィギュレーションを表さないことを確かめるのは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓまたはＰｒｉｎｔＴｉｃｋｅｔプロバイダの責任である。コンフィギュレーションが無効な場合、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓまたはＰｒｉｎｔＴｉｃｋｅｔプロバイダが、コンフィギュレーションを、有効になるように変更するべきである。
【０３２８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓによって記述されるデバイスは、デバイスの状態またはコンフィギュレーションに依存するプロパティをもち得る。例えば、デバイスがプリンタの場合、ＳａｍｐｌｅＰｒｉｎｔＲａｔｅプロパティは、ＣｏｌｏｒまたはＭｏｎｏｃｈｒｏｍｅどちらが選択されるか、あるいはＤｕｐｌｅｘが選択されるかどうかに依存する値をもち得る。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、デバイスのコンフィギュレーション空間全体を表し、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントと呼ばれるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのコンフィギュレーション依存インスタンスを作る。このコンフィギュレーション依存ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにより、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマに、多値データを表すという複雑さで負担をかけることが回避される。より重要なことは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの利用者が多値データ表示から適切な値を抽出する負担を軽減させるために、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中のすべてのＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスが、単一値である必要があることである。言い換えると、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の各ＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、入力コンフィギュレーションに対して固定Ｖａｌｕｅをもたなければならない。各ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、デバイスがある特定の状態にあるときの、デバイスのプロパティのスナップショットとみなすことができる。したがって、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを構成することができるようになる前に、用いられるべきコンフィギュレーションを与えられなければならない。
【０３２９】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの作者は、コンフィギュレーションをなすデバイス属性を定義する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて、作者は、デバイス属性をＦｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文として表すか、それともパラメータ構文として表すかを選ぶことができる。
【０３３０】
デバイス属性が、種類が明白などのパターンの範囲内でもない、比較的少数の可能な状態を有する場合、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文が、通常はより優れた選択である。例えば、ＭｅｄｉａＳｉｚｅデバイス属性用に許容される値が、Ｌｅｔｔｅｒ、Ｌｅｇａｌ、Ａ４ＩＳＯ、Ｔａｂｌｏｉｄ、およびＥｎｖｅｌｏｐｅ１０という値である場合、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文が、表現のためのより優れた選択となる。明示的エニュメレーションを使わない、許容値の表現に関連する困難およびあいまいさにより、パラメータ構文は、ＭｅｄｉａＳｉｚｅ属性に適さない。
【０３３１】
デバイス属性を、一定の範囲の整数によって表すことができる場合、多くの値を含む範囲に対しては特に、パラメータ表現が通常は、より優れた選択である。例えば、ある特定のモデルのプリンタ用のＣｏｐｙＣｏｕｎｔデバイス属性が、１から９９，９９９の範囲であり得る場合、この属性は、ＰａｒａｍｅｔｅｒＤｅｆインスタンスを定義することによって、パラメータとして特徴づけられるべきである。ＣｏｐｙＣｏｕｎｔ属性用の値の範囲を定義するために、ＰａｒａｍｅｔｅｒＤｅｆ要素のＭｉｎＶａｌｕｅおよびＭａｘＶａｌｕｅ標準Ｐｒｏｐｅｒｔｙインスタンスに値を割り当てる。Ｏｐｔｉｏｎ要素として明示的に列挙される値の数が大きいので、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ表現は、ＣｏｐｙＣｏｕｎｔデバイス属性に適していない。
【０３３２】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、コンフィグレーション可能なデバイス属性を、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文またはパラメータ構文どちらかとして表すことを意図している。この情報は、デバイスのコンフィギュレーション空間を定義し、ユーザインターフェース（ＵＩ）クライアントによって、ＵＩを構成するのに使うことができる。プリントスキーマキーワードは、１組の標準Ｆｅａｔｕｒｅインスタンス、標準Ｆｅａｔｕｒｅインスタンス用のＯｐｔｉｏｎインスタンス、およびＰａｒａｍｅｔｅｒＤｅｆインスタンスを定義する。
【０３３３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ中のＦｅａｔｕｒｅ／Ｏｐｔｉｏｎまたはパラメータ構文は、デバイスを記述し、スプーラサブシステムによってサポートされるＰｒｏｐｅｒｔｙまたはＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの保持を意図している。こうしたＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、デバイスのクライアントの一般的な興味対象であり、マイクロソフト（登録商標）Ｗｉｎ３２（登録商標）ＤｅｖＣａｐｓ関数によって提供される情報を含む。プリントスキーマキーワードは、１組の標準ＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスを定義する。
【０３３４】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、単一値データ、すなわちデバイスのある特定のコンフィギュレーションに依存しないデータを表すことを意図していることを強調しておく。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、コンフィギュレーション依存データのスナップショットのみを提供する。
【０３３５】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマにおけるコンフィギュレーション依存
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、使われる要素、ならびに親および子要素によって表現される一般的な構造という点において、プリントスキーマフレームワークに厳密に匹敵する。特にＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに関連するコンフィギュレーション依存を、一般的なフレームワークへの拡張としてここで列挙する。コンフィギュレーション依存は、コンフィギュレーションに依存する結果として、その内容を含む一部の要素を、あるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントから次のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに変更し、または消去することさえもできるという事実を指す。親要素が、コンフィギュレーションに依存しない必要がある場合であっても、その子要素が依存する可能性がある。このような依存は、ＧＰＤファイルにおいて＊Ｓｗｉｔｃｈ／＊Ｃａｓｅ構文を用いて表現される。
【０３３６】
コンフィギュレーション依存の例として、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおける、各Ｐｒｏｐｅｒｔｙに関連づけられた値を検討する。各ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、定義されるＰｒｏｐｅｒｔｙインスタンスおよびそうしたＰｒｏｐｅｒｔｙインスタンスに割り当てられるＶａｌｕｅインスタンスにおいて異なり得る。
【０３３７】
【表３３】
2006155611.tif 000035
【０３３８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント構成チェックリスト
要素型の要約は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントをなす様々な要素を説明する。このセクションでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの作者が、デバイスを記述するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを作成するのに使うことができるチェックリストをとりあげる。
【０３３９】
デバイスコンフィギュレーションに寄与するすべてのデバイス属性を識別する。このような各デバイス属性ごとに、Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文として表されるべきか、それともパラメータ構文として表されるべきか判定する。
【０３４０】
各デバイス特徴ごとに、プリントスキーマキーワードにおいて定義されるＦｅａｔｕｒｅによって表すことができるかどうか判定する。表すことができない場合、個人定義の新しいＦｅａｔｕｒｅ（および対応するｎａｍｅ属性）を導入する必要がある。
【０３４１】
プリントスキーマキーワード定義のＦｅａｔｕｒｅインスタンスに対して、このＦｅａｔｕｒｅを設定することができる利用可能な状態それぞれを識別する。各状態は、ＦｅａｔｕｒｅインスタンスのＯｐｔｉｏｎに対応する。こうした状態のいずれが、このＦｅａｔｕｒｅに関連づけられたプリントスキーマ定義のＯｐｔｉｏｎインスタンスに対応し、どの状態が、カスタマイズされたＯｐｔｉｏｎインスタンスを必要とするか判定する。Ｏｐｔｉｏｎ定義トピックは、新しいＯｐｔｉｏｎインスタンスの構成方法、および既存のＯｐｔｉｏｎインスタンスからの新しいＯｐｔｉｏｎインスタンスの派生方法に関する情報を提示する。
【０３４２】
非標準Ｆｅａｔｕｒｅインスタンスに対して、あるＯｐｔｉｏｎを別のＯｐｔｉｏｎと区別するのに使うことができる特性を識別する。このような各特性を、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素によって表し、各Ｏｐｔｉｏｎインスタンスにおいて、各ＳｃｏｒｅｄＰｒｏｐｅｒｔｙに、そのＯｐｔｉｏｎに特有のＶａｌｕｅを割り当てる。所与のＦｅａｔｕｒｅ用の各Ｏｐｔｉｏｎが一意となるように、十分なＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素があることを保証する。非標準ＦｅａｔｕｒｅおよびＯｐｔｉｏｎインスタンスは、本質的に移植不可能である。つまり、別のドライバは、自分のドライバが作成するＰｒｉｎｔＴｉｃｋｅｔ中で特定された非標準ＦｅａｔｕｒｅまたはＯｐｔｉｏｎに一致するような、等価などのＦｅａｔｕｒｅもＯｐｔｉｏｎもみつけることができない。
【０３４３】
ＰａｒａｍｅｔｅｒＲｅｆ要素を含まなければならないＯｐｔｉｏｎがあるか判定する。より多くの情報については、パラメータ構文およびパラメータ参照要素を参照されたい。
【０３４４】
便宜上、ＯｐｔｉｏｎＮａｍｅ  ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ用に、簡単な表記法を用いることができる。この簡単な表現は、他のｎａｍｅ属性に適用される兄弟一意性規則の対象ではないことに留意されたい。
【０３４５】
パラメータに対して、プリントスキーマキーワードにおいて定義されるＰａｒａｍｅｔｅｒＤｅｆインスタンスの１つが適切な一致であるかどうか判定する。適切な一致である場合、プリントスキーマキーワードからＰａｒａｍｅｔｅｒＤｅｆインスタンスをコピーし、各変異ＰｒｏｐｅｒｔｙインスタンスのＶａｌｕｅを、最良適合するように調整する。プリントスキーマキーワード中のＰａｒａｍｅｔｅｒＤｅｆインスタンスのどれも適切な一致でない場合、自分の独自ＰａｒａｍｅｔｅｒＤｅｆインスタンスを作成する。より多くの情報については、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中のパラメータを参照されたい。
【０３４６】
プリントスキーマキーワードドキュメントによって必要とされるすべてのＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスが、確実に自分のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに存在し、正しく初期化されるようにする。
【０３４７】
追加Ｐｒｏｐｅｒｔｙおよびサブプロパティインスタンスを所望通り追加する。プリントスキーマキーワードにおいて定義されるＰｒｏｐｅｒｔｙインスタンスによってカバーされない、特徴づける必要があるデバイスの側面がある場合、個人定義のＰｒｏｐｅｒｔｙインスタンスを導入することができる。
【０３４８】
ｎａｍｅ属性用の名前空間規約を順守する。この規約は、個人定義のｎａｍｅ属性ならびにプリントスキーマキーワードにおいて定義される属性に適用される。
【０３４９】
報告されるＦｅａｔｕｒｅ、ＯｐｔｉｏｎおよびＰａｒａｍｅｔｅｒＤｅｆインスタンスの組は、スナップショットにかかわらず変化してはならないことに留意されたい。各ＯｐｔｉｏｎインスタンスをなすＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンス、および各ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素に割り当てられるＶａｌｕｅも、変化してはならない。同じことが、各ＰａｒａｍｅｔｅｒＤｅｆインスタンスをなすＰｒｏｐｅｒｔｙインスタンスにあてはまる。
【０３５０】
Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文およびパラメータを十分に定義するために供給されなければならない追加Ｐｒｏｐｅｒｔｙインスタンスのリストについては、ＰａｒａｍｅｔｅｒＤｅｆおよびＰａｒａｍｅｔｅｒＩｎｉｔを参照されたい。例えば、各Ｆｅａｔｕｒｅは、そのユーザインターフェース（ＵＩ）の振舞い、具体的には、正確に１つまたは多数のＯｐｔｉｏｎインスタンスを各Ｆｅａｔｕｒｅに対して一度に選択することができるかどうかを特定しなければならない。プリントスキーマキーワードドキュメントは、こうしたＰｒｏｐｅｒｔｙインスタンス、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいてどこに現れなければならないか、およびプリントスキーマキーワードにおいて定義されるどのＶａｌｕｅインスタンスが使用可能であるかを定義する。
【０３５１】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、すべてのコンフィギュレーション依存Ｐｒｏｐｅｒｔｙインスタンスに対して、適切なＶａｌｕｅを発行する責任がある。例えば、印刷速度が、使用されるカラーモードおよび解像度両方に依存する場合、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、クライアントが供給したＰｒｉｎｔＴｉｃｋｅｔにおいて特定されたカラーモードおよび解像度の設定を書きとめなければならず、印刷速度に適正な値を報告しなければならない。全ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスが単一値でなければならない、すなわちそのＶａｌｕｅインスタンスは、デバイスコンフィギュレーションが変化しても変化することができないことに留意されたい。
【０３５２】
プリントスキーマキーワードにおいて定義されるＰｒｏｐｅｒｔｙインスタンスは、そこで特定された場所に現れなければならないことにも留意されたい。こうしたインスタンスは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の任意の場所に現れることはできない。個人定義のＰｒｏｐｅｒｔｙインスタンスは、どこに現れてもよく、スキーマ定義のＰｒｏｐｅｒｔｙインスタンス中のサブプロパティでもよい。
【０３５３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマの詳細
このセクションでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマに適用される際に、プリントスキーマフレームワークに含まれる要素型のセマンティクスおよび使用を説明する。
【０３５４】
Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎおよびパラメータ構文は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて、デバイスコンフィギュレーションの定義に寄与するデバイス属性を表すのに使われる。Ｆｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文の例として、いくつかの解像度で印刷する能力のある印刷デバイスを検討する。解像度を定義するデバイス属性は、Ｆｅａｔｕｒｅインスタンスとして表すことができ、可能な出力解像度値それぞれが、個々のＯｐｔｉｏｎインスタンスとして表される。あるＯｐｔｉｏｎインスタンスは、３００ｄｐｉの解像度を表し、別のＯｐｔｉｏｎインスタンスは、６００ｄｐｉの解像度表す、などのようになり得る。
【０３５５】
プリントスキーマは、各ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて報告されるＦｅａｔｕｒｅ、Ｏｐｔｉｏｎ、およびＰａｒａｍｅｔｅｒＤｅｆインスタンスのリストが一定のままでなければならない、すなわちコンフィギュレーションに依存しないことを要求することに留意されたい。この結果、コンフィギュレーションおよびコンフィギュレーションへの依存が、あいまい性なく表現されるようになる。この要件が含意するのは、全Ｆｅａｔｕｒｅおよびサブフィーチャが、他のどのＦｅａｔｕｒｅまたはサブフィーチャの設定にもかかわらず、明確に定義された設定をもたなければならないことである。したがって、各サブフィーチャは、親Ｆｅａｔｕｒｅにおいてユーザがｎｏ−ｏｐオプションを選択するとすべてのサブフィーチャに対して自動的に選択される、ｎｏ−ｏｐに等価なＯｐｔｉｏｎ（Ｏｆｆ、Ｄｉｓａｂｌｅｄ、またはＮｏｎｅ設定）をもたなければならない。逆に、サブフィーチャの１つが、有効にされたＯｐｔｉｏｎに設定されると、親Ｆｅａｔｕｒｅおよび関連する他のサブフィーチャも有効にされる。当面の間、ＰｒｉｎｔＴｉｃｋｅｔプロバイダは、すべてのＦｅａｔｕｒｅおよびサブフィーチャインスタンス向けの設定が、デバイスコンフィギュレーションにかかわらず定義され、サブフィーチャ設定が、親Ｆｅａｔｕｒｅの設定と確実に整合するようにしなければならない（ＰｒｉｎｔＴｉｃｋｅｔ認証の間）。こうすることにより、一部のサブフィーチャが、例えば、ステープルが有効にされると示すが、他のサブフィーチャはステープルが無効にされると示すという、整合性のないＰｒｉｎｔＴｉｃｋｅｔを、デバイスは確実に与えられなくなる。
【０３５６】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの作者は、Ｆｅａｔｕｒｅ要素のネスト機能を使用する必要がないことに留意されたい。作者は、使用を好む場合、すべてのＦｅａｔｕｒｅインスタンスを、互いの兄弟としてフラット構造で提示することができる。Ｆｅａｔｕｒｅインスタンスのネストされたグループは、サブフィーチャすべてをルートレベルの外に動かすだけで、フラットにすることができることにも留意されたい。こうしたＦｅａｔｕｒｅインスタンスのｎａｍｅ属性は一意になるように保証することだけを、事前に注意されたい。
【０３５７】
Ｏｐｔｉｏｎを定義する際の重大な検討事項は、このＯｐｔｉｏｎを、同じＦｅａｔｕｒｅに含まれる他のＯｐｔｉｏｎインスタンスと有意義に比較することができるように定義することである。Ｏｐｔｉｏｎインスタンスは、デバイスにも、コンフィギュレーションを作成するのに使われたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓにも依存しない、デバイスのコンフィギュレーションだけでなく、ジョブのコンフィギュレーションを定義するのに使われるので、比較は、有意義でなければならない。Ｆｅａｔｕｒｅ中の他のＯｐｔｉｏｎインスタンスは、同じＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにも、異なるデバイスを表す別のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント、すなわちそれぞれ独立に作業する別の当事者によって定義されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにも現れ得る。クライアントが、ジョブまたはドキュメントをレンダリングするのに使われるデバイスコンフィギュレーションを選択した後、そのコンフィギュレーションは通常、ジョブまたはドキュメントとともに、ＰｒｉｎｔＴｉｃｋｅｔの形でセーブされる。ＰｒｉｎｔＴｉｃｋｅｔは、通常、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて定義される各Ｆｅａｔｕｒｅごとに１つずつ、１組のＯｐｔｉｏｎインスタンスを含む。Ｏｐｔｉｏｎインスタンスは、移植可能でなければならず、このＰｒｉｎｔＴｉｃｋｅｔが異なるデバイスに与えられたとき、異なる作者によって書かれた異なるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを有するデバイスであっても、意図を伝えることができるように印刷意図を保存しなければならない。この移植性の主要な利益は、異なるデバイスが特にＰｒｉｎｔＴｉｃｋｅｔに含まれるＯｐｔｉｏｎをサポートしない場合、デバイスドライバまたはサブシステムが、機能性において最も近いＯｐｔｉｏｎを識別し選択することができる点である。
【０３５８】
ドライバの主なＰｒｉｎｔＴｉｃｋｅｔ機能の１つは、ＰｒｉｎｔＴｉｃｋｅｔにおいて列挙される具体的なＯｐｔｉｏｎと最も厳密に一致する、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおけるデバイスＯｐｔｉｏｎを識別することである。この一致またはスコアづけプロセスの間、ＰｒｉｎｔＴｉｃｋｅｔ中のＯｐｔｉｏｎは、参照Ｏｐｔｉｏｎと呼ばれ、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中のＯｐｔｉｏｎは、候補Ｏｐｔｉｏｎと呼ばれる。一般的な一致基準値は、候補および参照Ｏｐｔｉｏｎインスタンスにおける、一致するＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの数であり、一致の数が大きいほど、一般には印刷意図がより十分に保存されていることを示す。自分のスコアづけアルゴリズムでは、一部のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素に、他のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素よりも重みづけするように選ぶことができよう。
【０３５９】
同じＦｅａｔｕｒｅに属すすべてのＯｐｔｉｏｎインスタンスが、共通する１つまたは複数のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を確実にもつようにすることによって、Ｏｐｔｉｏｎインスタンスを移植可能にすることができる。このことは、全Ｏｐｔｉｏｎインスタンス（同じＦｅａｔｕｒｅに属す）中に現れる１組のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素があることを意味する。例えば、ＭｅｄｉａＳｉｚｅ  Ｆｅａｔｕｒｅ用のＯｐｔｉｏｎインスタンスは、全Ｏｐｔｉｏｎインスタンスが、固有ＭｅｄｉａＳｉｚｅプロパティ、すなわちＭｅｄｉａＳｉｚｅＸ、ＭｅｄｉａＳｉｚｅＹ、およびＦｅｅｄＯｒｉｅｎｔａｔｉｏｎを定義するＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を含む場合、移植可能であり得る。デバイスドライバまたはサブシステムコードは次いで、どの程度厳密に２つのＯｐｔｉｏｎインスタンスが合致するかを、こうしたＳｃｏｒｅｄＰｒｏｐｅｒｔｙ値における違いを比較することによって判定することができる。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中に、ＰｒｉｎｔＴｉｃｋｅｔ中のものと正確に一致するＯｐｔｉｏｎがない場合、デバイスドライバは、最も厳密な一致メディア寸法をもつＯｐｔｉｏｎを容易に判定し選択してよい。
【０３６０】
２つのオブジェクト（この場合、Ｏｐｔｉｏｎインスタンス）は、以下の３つの条件が満足される場合、共通する要素をもつ、または等価には、対応する要素をもつと言われる。
【０３６１】
１．２つの要素が同じ要素型である。  
２．２つの要素のｎａｍｅ属性が同一である（または、どちらの要素もｎａｍｅ属性を含まない）。  
３．比較される要素の親のチェーンが、検討される２つのオブジェクトに達するまで、条件１および２を満足しなければならない。
【０３６２】
例えば、それぞれがＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスを含む２つのＯｐｔｉｏｎインスタンスがあり、こうしたＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスがそれぞれ、Ｐｒｏｐｅｒｔｙインスタンスを含む状況を検討する。明らかに、第１の条件が満足され（２つのＰｒｏｐｅｒｔｙインスタンスが同じ型である）、第３の条件の一部が満足される（Ｐｒｏｐｅｒｔｙインスタンスの親が同じ型、すなわちＳｃｏｒｅｄＰｒｏｐｅｒｔｙであり、そうした要素の親が、やはり同じ型のＯｐｔｉｏｎインスタンスである）。Ｐｒｏｐｅｒｔｙインスタンス、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンス、およびＯｐｔｉｏｎインスタンスそれぞれのｎａｍｅ属性が同一であるか、または供給されない場合、こうした２つのＯｐｔｉｏｎインスタンスは、共通する要素をもつ。
【０３６３】
以上のことから、Ｏｐｔｉｏｎインスタンスを作成する際の第１のステップは、Ｏｐｔｉｏｎインスタンスのほとんどまたはすべてに存在する１組のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を定義することである。自分のデバイスコンフィギュレーション属性を、標準Ｆｅａｔｕｒｅ（プリントスキーマキーワードにおいて列挙されるＦｅａｔｕｒｅ）によって表すことができる場合、標準Ｏｐｔｉｏｎインスタンスにおける共通のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素に留意されたい。自分が導入する新しいどのＯｐｔｉｏｎインスタンスも、こうしたＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素も確実に含むようにするべきである。自分のＯｐｔｉｏｎインスタンスを標準Ｏｐｔｉｏｎインスタンスと見分けるのに必要とされる追加ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を、いつでも自由に追加してよい。妥当な理由がある場合は、このようなＯｐｔｉｏｎの移植性を低下させることになるが、共通するＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素の１つまたは複数を消去してもよい。当然ながら、移植性を検討することにより、新しいＯｐｔｉｏｎインスタンス中で反映されなければならない、自分のＯｐｔｉｏｎと標準Ｏｐｔｉｏｎインスタンスの間の何らかの固有の違いがない限り、変更されていない標準Ｏｐｔｉｏｎインスタンスの使用が提案される。
【０３６４】
以下の例は、ＯｐｔｉｏｎインスタンスにＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を追加することを望み得る状況を示す。ＭｅｄｉａＳｉｚｅ  Ｆｅａｔｕｒｅ用の標準Ｏｐｔｉｏｎインスタンスはすべて、共通するＭｅｄｉａＳｉｚｅＸおよびＭｅｄｉａＳｉｚｅＹ  ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を有する。自分のデバイスが、横に（ＬｏｎｇＥｄｇｅＦｉｒｓｔ）または縦に（ＳｈｏｒｔＥｄｇｅＦｉｒｓｔ）給紙することによって、標準Ｌｅｔｔｅｒメディアサイズの１つをサポートし得ると仮定する。この程度の自由度を公表する新しい給紙方向Ｆｅａｔｕｒｅを導入したくないと想定すると、代わりに、Ｌｅｔｔｅｒに対する２つのＭｅｄｉａＳｉｚｅ  Ｏｐｔｉｏｎインスタンスを、給紙の向きを組み込むように変更する。こうした２つのＬｅｔｔｅｒ  Ｏｐｔｉｏｎインスタンスに対して、標準ＭｅｄｉａＳｉｚｅ  Ｏｐｔｉｏｎインスタンスで開始し、ＦｅｅｄＯｒｉｅｎｔａｔｉｏｎを表すように新しいＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素を追加する。あるＯｐｔｉｏｎインスタンスでは、ＦｅｅｄＯｒｉｅｎｔａｔｉｏｎ  ＳｃｏｒｅｄＰｒｏｐｅｒｔｙをＬｏｎｇＥｄｇｅＦｉｒｓｔに設定し、他のＯｐｔｉｏｎインスタンスでは、ＦｅｅｄＯｒｉｅｎｔａｔｉｏｎをＳｈｏｒｔＥｄｇｅＦｉｒｓｔに設定する。こうした新しいＯｐｔｉｏｎインスタンスが、その移植性を維持することに留意されたい。Ｌｅｔｔｅｒ、ＳｈｏｒｔＥｄｇｅＦｉｒｓｔを表すＯｐｔｉｏｎが、ＰｒｉｎｔＴｉｃｋｅｔにセーブされ、Ｌｅｔｔｅｒ標準Ｏｐｔｉｏｎのみをサポートする異なるデバイスが、Ｊｏｂをレンダリングするために選択された場合、Ｏｐｔｉｏｎ一致コードは、標準Ｏｐｔｉｏｎ  Ｌｅｔｔｅｒが、Ｏｐｔｉｏｎ  Ｌｅｔｔｅｒ、ＳｈｏｒｔＥｄｇｅＦｉｒｓｔに最良一致すると直ちに判定する。これが最良一致である理由は、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスはすべて、Ｌｅｔｔｅｒ標準Ｏｐｔｉｏｎに存在しないＦｅｅｄＯｒｉｅｎｔａｔｉｏｎ  ＳｃｏｒｅｄＰｒｏｐｅｒｔｙの例外と合致するからである。
【０３６５】
Ｏｐｔｉｏｎへの変更が、変更されたＯｐｔｉｏｎがもはや、オリジナルの特殊な場合とみなされない程に意味を実際に大きく変える場合もあり得る。このような場合、ＯｐｔｉｏｎのＯｐｔｉｏｎＮａｍｅ  ＳｃｏｒｅｄＰｒｏｐｅｒｔｙを、変更されたＯｐｔｉｏｎインスタンスと変更されていないＯｐｔｉｏｎインスタンスの間の違いを反映するように変えるべきである。具体的なデバイス用のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの作者のみが、両立しない定義を保証するように、デバイスによって提供されるＯｐｔｉｏｎが標準Ｏｐｔｉｏｎインスタンスと十分に異なるかどうか判定することができる。
【０３６６】
ここで、自分のデバイスが、標準Ｆｅａｔｕｒｅインスタンスのどれにも対応しないデバイスコンフィギュレーション属性をもつ場合を検討する。この場合、標準Ｏｐｔｉｏｎインスタンスに依拠して、共通するＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素のリストを提供することはできない。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスを作成する際、自分の主な目的は、各ＯｐｔｉｏｎをＦｅａｔｕｒｅ中の他のＯｐｔｉｏｎと見分け、なぜユーザがあるＯｐｔｉｏｎを別のＯｐｔｉｏｎよりも選択するのかを記述することである。基準線は、各Ｏｐｔｉｏｎを一意のｎａｍｅ属性で特徴づけ、ｎａｍｅ属性を保有するＳｃｏｒｅｄＰｒｏｐｅｒｔｙが、共通する要素を判定するのに使われるものとなる。
【０３６７】
共通する１組のＳｃｏｒｅｄＰｒｏｐｅｒｔｙ要素が確立された後で、各Ｏｐｔｉｏｎを作成するために、各ＳｃｏｒｅｄＰｒｏｐｅｒｔｙに適切な値を割り当てるのは簡単なことである。前述の例でのように、特定のＯｐｔｉｏｎインスタンスに対して、適切なＯｐｔｉｏｎインスタンスを作成するために、追加ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスを追加し、または共通する要素をいくつか消去する必要があり得る。
【０３６８】
プリントスキーマは、ＯｐｔｉｏｎにおけるＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの組、その場所、および各ＳｃｏｒｅｄＰｒｏｐｅｒｔｙに割り当てられる値が一定のままである、すなわちコンフィギュレーションに依存しないことを要求することに留意されたい。プリントスキーマの全体概念は、多くのデバイスに渡って共有される、一定の識別可能なＰｒｏｐｅｒｔｙおよびＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスを有するＯｐｔｉｏｎインスタンスに依拠する。
【０３６９】
Ｏｐｔｉｏｎインスタンスの子要素としての、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの追加は規制されないことに留意されたい。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、他のＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンス中にネストすることもできる。このネストは、デバイスプロパティが複合であり、多数のサブプロパティによって最もよく表されるときに有用である。既存の（またはパブリック）ＰｒｏｐｅｒｔｙまたはＳｃｏｒｅｄＰｒｏｐｅｒｔｙへのサブプロパティの追加は、既存のＯｐｔｉｏｎインスタンスとの移植性を保持しながらＯｐｔｉｏｎを改善するのに都合のよい方法である。例えば、ＭｅｄｉａＴｙｐｅ  Ｆｅａｔｕｒｅ用の標準Ｏｐｔｉｏｎインスタンスは、メディアの重さをＬｉｇｈｔ、Ｍｅｄｉｕｍ、Ｈｅａｖｙ、またはＥｘｔｒａＨｅａｖｙと記述するＳｃｏｒｅｄＰｒｏｐｅｒｔｙを含む。重さをより正確に記述したい場合は、１００枚のメディアの実際の重さ（グラム）を含むサブプロパティ（以下の例では、ＧｒａｍｓＰｅｒ１００Ｓｈｅｅｔｓ）を追加することができる。拡張Ｏｐｔｉｏｎは、以下の例のようになるであろう。
【０３７０】
【表３４】
2006155611.tif 000036
【０３７１】
拡張Ｏｐｔｉｏｎはオリジナルのスーパーセットなので、オリジナルおよび拡張Ｏｐｔｉｏｎインスタンスを比較すると、ほぼ完全な一致となり、オリジナルＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスそれぞれの場所および値が保存される。
【０３７２】
ＰａｒａｍｅｔｅｒＲｅｆ要素を含むＯｐｔｉｏｎの具体例は、カスタムメディアサイズＯｐｔｉｏｎである。このＯｐｔｉｏｎは、ＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＸおよびＰａｇｅＭｅｄｉａＳｉｚｅＭｅｄｉａＳｉｚｅＹという２つのパラメータを参照することに留意されたい。各ＰａｒａｍｅｔｅｒＲｅｆインスタンスは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の他のところで定義されるＰａｒａｍｅｔｅｒＤｅｆインスタンスを指す。ＰａｒａｍｅｔｅｒＤｅｆ要素についての情報は、ＰａｒａｍｅｔｅｒＤｅｆを参照されたい。パラメータの定義についての概念上の情報は、ＰａｒａｍｅｔｅｒＤｅｆおよびＰａｒａｍｅｔｅｒＩｎｉｔ要素を参照されたい。
【０３７３】
【表３５】
2006155611.tif 000037
【０３７４】
パラメータ化されたＯｐｔｉｏｎを単に作成するだけでは、Ｏｐｔｉｏｎが正しく操作され処理されることを保証するのに十分でない。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ／ＰｒｉｎｔＴｉｃｋｅｔのプロバイダおよびクライアントは、パラメータ化されたＯｐｔｉｏｎインスタンスを正しく実装するための追加サポートを提供しなければならない。必要とされる振舞いは、以下のセクションで説明する。
【０３７５】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓクライアントを作成中であると想定する。このクライアントは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを読み込み、各Ｆｅａｔｕｒｅから１つまたは複数のＯｐｔｉｏｎを選択し、こうしたＯｐｔｉｏｎを使って、Ｊｏｂを処理するのに使われるはずのコンフィギュレーションを特定するＰｒｉｎｔＴｉｃｋｅｔを構成する。対象となる各Ｆｅａｔｕｒｅごとに、クライアントは、各Ｏｐｔｉｏｎを調べ、そのＯｐｔｉｏｎが目前のタスクに適しているかどうか判定する。パラメータ化されていないＯｐｔｉｏｎに対しては、各ＳｃｏｒｅｄＰｒｏｐｅｒｔｙのＶａｌｕｅにアクセスすることによって評価することができる。パラメータ化されていないメディアサイズＯｐｔｉｏｎの場合、クライアントが、各Ｏｐｔｉｏｎ中の報告されるメディアのＸおよびＹ寸法が、必要とされる寸法に一致するかどうか判定する。
【０３７６】
パラメータ化されたＯｐｔｉｏｎの場合、クライアントは、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの１つに含まれるＰａｒａｍｅｔｅｒＲｅｆインスタンスにおいて指示されるＰａｒａｒｎｅｔｅｒＤｅｆインスタンスにアクセスしなければならない。ＰａｒａｍｅｔｅｒＤｅｆは通常、パラメータに対して許容される値の範囲、ならびに値によって表される単位（インチ、ｍｍなど）を定義する。必要とされる寸法が、パラメータのそれぞれに対して許可される値の範囲内である場合、クライアントは、ＰｒｉｎｔＴｉｃｋｅｔ中のパラメータを（ＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを用いて）初期化する追加タスクを行う。これは、特に重要なタスクである。例えば、ＰｒｉｎｔＴｉｃｋｅｔは、メディアの寸法を特定せずにカスタムメディアサイズを特定するべきでない。というのは、その結果生じるＰｒｉｎｔＴｉｃｋｅｔはあいまいであり、誤って定義されることになるからである。
【０３７７】
類似した１組の状況は、クライアントがユーザインターフェースである場合に操作されなければならない。ユーザインターフェースは通常、各Ｏｐｔｉｏｎ用に定義されるＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの値を表示する。明確にするために、パラメータ化されたＯｐｔｉｏｎにおいて、パラメータに対して許容される範囲および単位を表示することが基本である。さらに、ユーザが、パラメータ化されたＯｐｔｉｏｎを選択する場合、ユーザインターフェース（ＵＩ）は、ユーザに、各パラメータを初期化するのに使われる値を入れるよう促さなければならない。最後に、ＵＩは、ユーザの選択をすべて反映したＰｒｉｎｔＴｉｃｋｅｔを組み立てなければならない。
【０３７８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔプロバイダは、ＰｒｉｎｔＴｉｃｋｅｔ認証プロセスの間、パラメータ化されたＯｐｔｉｏｎインスタンスを正しく操作しなければならない。Ｏｐｔｉｏｎ定義において説明したように、ＰｒｉｎｔＴｉｃｋｅｔ認証で実施される１つのステップは、現在のデバイスのＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中で、ＰｒｉｎｔＴｉｃｋｅｔにおいて特定されたＯｐｔｉｏｎ（参照Ｏｐｔｉｏｎ）と最良一致するＯｐｔｉｏｎ（候補Ｏｐｔｉｏｎ）をみつけることである。Ｏｐｔｉｏｎインスタンスの一方または両方がパラメータ化されている場合、スコアづけアルゴリズムによって操作されなければならない、可能な３つのケースがある。すなわち、両方のＯｐｔｉｏｎインスタンスがパラメータ化されているケース、および一方のＯｐｔｉｏｎがパラメータ化され、他方のＯｐｔｉｏｎがパラメータ化されていない２つのケースである。以下のケースでは、ＰｒｉｎｔＴｉｃｋｅｔＯｐｔｉｏｎ中のパラメータ化されたＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスと、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓオプション中のある特定のＳｃｏｒｅｄＰｒｏｐｅｒｔｙとの間に、対応があると仮定される。対応がない場合、スコアづけアルゴリズムは、こうしたＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスを、対応しない他のどのＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスを扱う場合とも同じやり方で扱うことができる。
【０３７９】
ケース１：パラメータ化されたＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントＯｐｔｉｏｎ
このケースでは、参照Ｏｐｔｉｏｎ（ＰｒｉｎｔＴｉｃｋｅｔ中）および候補Ｏｐｔｉｏｎ（ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中）両方がパラメータ化されている。候補Ｏｐｔｉｏｎによって参照されるＰａｒａｍｅｔｅｒＤｅｆインスタンス（両方とも、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中）にアクセスし、ＰｒｉｎｔＴｉｃｋｅｔにおいて特定されたＰａｒａｍｅｔｅｒＩｎｉｔ値が、ＰａｒａｍｅｔｅｒＤｅｆインスタンスによって許容される範囲内であるかどうか判定する。範囲内である場合、このＳｃｏｒｅｄＰｒｏｐｅｒｔｙを一致とみなす。範囲内でない場合、このＳｃｏｒｅｄＰｒｏｐｅｒｔｙは一致ではない。
【０３８０】
ケース２：パラメータ化されたＰｒｉｎｔＴｉｃｋｅｔＯｐｔｉｏｎ、パラメータ化されていないＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントＯｐｔｉｏｎ
このケースでは、ＰｒｉｎｔＴｉｃｋｅｔは、パラメータ化されたＯｐｔｉｏｎを有するＦｅａｔｕｒｅを含み、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の対応するＦｅａｔｕｒｅは、パラメータ化されていない少なくとも１つのＯｐｔｉｏｎを含む。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントが、パラメータ化されている他のＯｐｔｉｏｎインスタンスも含む場合であっても、ターゲットは、最良一致するＯｐｔｉｏｎを識別するので、スコアづけアルゴリズムは、全Ｏｐｔｉｏｎに適用されなければならない。クライアントは、パラメータ化されていないＯｐｔｉｏｎ候補を、パラメータ化された参照Ｏｐｔｉｏｎと比較できなければならない。
【０３８１】
パラメータ化されたＯｐｔｉｏｎは、ＰｒｉｎｔＴｉｃｋｅｔ中に現れるので、ＰａｒａｍｅｔｅｒＩｎｉｔインスタンスも、前述のケースに示したように存在していなければならない。スコアづけアルゴリズムは、ＰｒｉｎｔＴｉｃｋｅｔのパラメータ化されたＯｐｔｉｏｎ中のどのＰａｒａｍｅｔｅｒＲｅｆインスタンスも、ＰｒｉｎｔＴｉｃｋｅｔのＰａｒａｍｅｔｅｒＩｎｉｔインスタンスによって特定されたＶａｌｕｅで単に置き換えることができる。この置換えは、パラメータ化されたＯｐｔｉｏｎをパラメータ化されていないＯｐｔｉｏｎに有効に変換する。この時点で、従来の一致アルゴリズムを用いることができる。
【０３８２】
ケース３：パラメータ化されていないＰｒｉｎｔＴｉｃｋｅｔＯｐｔｉｏｎ、パラメータ化されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントＯｐｔｉｏｎ
このケースでは、ＰｒｉｎｔＴｉｃｋｅｔ中の参照Ｏｐｔｉｏｎは、パラメータ化されておらず、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の候補Ｏｐｔｉｏｎはパラメータ化されている。ＰｒｉｎｔＴｉｃｋｅｔ中の候補ＯｐｔｉｏｎのＰａｒａｍｅｔｅｒＲｅｆインスタンスによって参照される、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中のＰａｒａｍｅｔｅｒＤｅｆインスタンスにアクセスし、対応するＳｃｏｒｅｄＰｒｏｐｅｒｔｙ用の参照Ｏｐｔｉｏｎ中で定義されるＶａｌｕｅが、ＰａｒａｍｅｔｅｒＤｅｆインスタンスによって許容される範囲内であるかどうか判定する。範囲内である場合、このＳｃｏｒｅｄＰｒｏｐｅｒｔｙを一致とみなす。範囲内でない場合、このＳｃｏｒｅｄＰｒｏｐｅｒｔｙは一致ではない。
【０３８３】
ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスが明示的Ｖａｌｕｅインスタンスを含むか、それともＰａｒａｍｅｔｅｒＲｅｆインスタンスを含むかに依存せずに、一致するＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの数（および重要度）によって、２つのＯｐｔｉｏｎインスタンスがどの程度厳密に一致するかを判定することができることを強調しておく。候補Ｏｐｔｉｏｎは、参照ＯｐｔｉｏｎのＰｒｏｐｅｒｔｙインスタンスと一致しない、または参照Ｏｐｔｉｏｎ中に対応するＰｒｏｐｅｒｔｙをもたないいくつかのＰｒｏｐｅｒｔｙインスタンスを含まなくても、最良一致となることが可能である。
【０３８４】
プリントスキーマにより、ＰｒｏｐｅｒｔｙインスタンスがＯｐｔｉｏｎインスタンスに存在できるようになる。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中で定義されるＰｒｏｐｅｒｔｙインスタンスは、ＰｒｉｎｔＴｉｃｋｅｔ中でセーブされるＯｐｔｉｏｎインスタンスに伝搬されない。Ｐｒｏｐｅｒｔｙ要素は、２つのＯｐｔｉｏｎインスタンスが比較される際、スコアづけプロセスの結果に影響を与えないが、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、このプロセスに影響を与える。スコアづけアルゴリズムを実装するすべてのデバイスドライバは、この規約を順守するべきである。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、こうしたインスタンスが、その特定のＯｐｔｉｏｎに特有であってそれ以外のＯｐｔｉｏｎに特有でない場合、またはプロバイダが、このＰｒｏｐｅｒｔｙの値がＦｅａｔｕｒｅ中の全Ｏｐｔｉｏｎに対して現れることを意図する場合、ＯｐｔｉｏｎにＰｒｏｐｅｒｔｙインスタンスを追加することを許可される。例えば、ＳａｍｐｌｅＰｒｉｎｔＲａｔｅプロパティが、ＳａｍｐｌｅＲｅｓｏｌｕｔｉｏｎ  Ｆｅａｔｕｒｅ用に選択されるＯｐｔｉｏｎに依存すると仮定する。ＳａｍｐｌｅＰｒｉｎｔＲａｔｅプロパティは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのルートレベルに置かれている場合、単一値であり、現在選択されている解像度に対する印刷速度のみを反映する。しかし、ＳａｍｐｌｅＰｒｉｎｔＲａｔｅプロパティが、各ＳａｍｐｌｅＲｅｓｏｌｕｔｉｏｎオプション中に置かれている場合、ＳａｍｐｌｅＰｒｉｎｔＲａｔｅプロパティの各インスタンスは、それを含むＳａｍｐｌｅＲｅｓｏｌｕｔｉｏｎオプションに対する印刷速度を反映し得る。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、ＳａｍｐｌｅＰｒｉｎｔＲａｔｅ用の多数の定義を含み、１つの定義は、各ＳａｍｐｌｅＲｅｓｏｌｕｔｉｏｎオプションに対応する。簡単な表現を用いると、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、以下を含む。
【０３８５】
【表３６】
2006155611.tif 000038
【０３８６】
いくつかの状況では、各解像度Ｏｐｔｉｏｎ中に印刷速度プロパティを置くことはクライアントにとってより好都合である。というのは、クライアントが、各解像度設定に対して新しいＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを入手する必要なく、各解像度Ｏｐｔｉｏｎが印刷速度に対してもつ影響を即座に判定することができるからである。
【０３８７】
Ｐｒｏｐｅｒｔｙインスタンスは、Ｆｅａｔｕｒｅ要素の子要素として追加されてもよいことにも留意されたい。この追加は、各Ｆｅａｔｕｒｅに特有のＰｒｏｐｅｒｔｙインスタンスまたはＰｒｏｐｅｒｔｙインスタンスの値がある場合に有用である。例えば、ただ１つのＯｐｔｉｏｎが、あるＦｅａｔｕｒｅに対して一度に選択されることを許可されるかどうか、または多数のＯｐｔｉｏｎを選択することができるかどうかを特定するＰｒｏｐｅｒｔｙがあり得る。このＰｒｏｐｅｒｔｙは、ＰＰＤおよびＧＰＤファイル内で使われるＰＩＣＫ＿ＯＮＥ、ＰＩＣＫ＿ＭＡＮＹプロパティである。一部のＦｅａｔｕｒｅインスタンスは、ＰＩＣＫ＿ＯＮＥとして識別され、他のＦｅａｔｕｒｅインスタンスは、ＰＩＣＫ＿ＭＡＮＹとして識別される場合があるので、このＰｒｏｐｅｒｔｙは、各Ｆｅａｔｕｒｅごとに定義されなければならない。ＰｒｏｐｅｒｔｙをＦｅａｔｕｒｅの子要素として置くことにより、ＰｒｏｐｅｒｔｙとＦｅａｔｕｒｅの間の関連づけが生じる。
【０３８８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓクライアントが、妥当なＰｒｉｎｔＴｉｃｋｅｔを構成することができるためには、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントが、ＦｅａｔｕｒｅインスタンスならびにＯｐｔｉｏｎインスタンスの特定のプロパティをＦｅａｔｕｒｅ中で提供しなければならない。汎用ユーザインターフェース（ＵＩ）モジュールは、このような情報を、ＵＩを構成するのに必要とする。この構成には、プリントスキーマキーワードが、ＦｅａｔｕｒｅおよびＯｐｔｉｏｎ要素の子として現れるいくつかのＰｒｏｐｅｒｔｙインスタンスを定義することが必要である。
【０３８９】
Ｆｅａｔｕｒｅ要素は、以下のＰｒｏｐｅｒｔｙを含み得る。
【０３９０】
【表３７】
2006155611.tif 000039
【０３９１】
パラメータ参照要素において説明したように、ＰａｒａｍｅｔｅｒＩｎｉｔ要素は、Ｏｐｔｉｏｎインスタンス中から参照することができるが、パラメータ構文には、このタイプの要素に依存しない使用法もある。
【０３９２】
パラメータ表現に適合したデバイスコンフィギュレーション属性の例が、ＣｏｐｙＣｏｕｎｔである。このデバイスコンフィギュレーション属性に許容される値は、それぞれを明示的に列挙せずに、容易に簡潔に定義することができる。各ＣｏｐｙＣｏｕｎｔ値をそれ自体のＯｐｔｉｏｎ中で列挙することは面倒ではあっても可能であるが、一部のデバイスコンフィギュレーション属性は、単にＦｅａｔｕｒｅ／Ｏｐｔｉｏｎ構文を使うだけでは表すことができない。一例として、テキスト列を受け入れ、次いでこのテキスト列を使って、各出力ページに仮想透かしを生じるデバイスを検討する。可能なすべてのテキスト列の組は、容易に明示的にエニュメレートすることができないが、テキスト列は、ＰａｒａｍｅｔｅｒＤｅｆ要素を使って容易に記述することができる。
【０３９３】
プリントスキーマキーワードドキュメントは、一般に使われるいくつかのパラメータ構文を定義するが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、独自の追加パラメータ構文を自由に定義する。ただし、こうした個人定義のパラメータ構文は、別の当事者によって提供されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントがこのようなパラメータ構文を定義しないという事実のせいで、他のデバイスに移植可能でない。スキーマ定義であろうとも個人定義であろうとも、ＰａｒａｍｅｔｅｒＤｅｆインスタンスは、パラメータが認識されクライアントによって使われる前に、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに存在しなければならない。こうしたパラメータは、特定されたパラメータと呼ばれる。
【０３９４】
ＰａｒａｍｅｔｅｒＲｅｆインスタンスを含むＯｐｔｉｏｎを正しくスコアづけする（参照パラメータを参照されたい）のに加え、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓまたはＰｒｉｎｔＴｉｃｋｅｔのプロバイダおよびクライアントは、パラメータを伴う以下の状況を扱うように準備されなければならない。
【０３９５】
ユーザインターフェース（ＵＩ）クライアントは、適切なＰａｒａｍｅｔｅｒＩｎｉｔ要素がＰｒｉｎｔＴｉｃｋｅｔに挿入されるように、適切なときに特定されたパラメータ用にパラメータ初期化子（ＰａｒａｍｅｔｅｒＩｎｉｔ要素用の値）を提供するよう、ユーザに促さなければならない。ＵＩクライアントは、パラメータの２つの型、すなわち無条件に必須、および条件付で必須を区別できなければならず、各型を適切に操作できなければならない。無条件に必須のパラメータに対して、ＵＩは、ＰａｒａｍｅｔｅｒＩｎｉｔ要素がこのタイプのパラメータに与えられることを保証しなければならない。条件付で必須のパラメータに対して、ＵＩは、パラメータが、ＰｒｉｎｔＴｉｃｋｅｔにおいて選択されたＯｐｔｉｏｎによって参照される場合、ＰａｒａｍｅｔｅｒＩｎｉｔ値を与えなければならない。パラメータのＭａｎｄａｔｏｒｙ状況は、ＰａｒａｍｅｔｅｒＤｅｆインスタンスにおいて特定される。より多くの情報については、ＰａｒａｍｅｔｅｒＤｅｆおよびＰａｒａｍｅｔｅｒＩｎｉｔ要素を参照されたい。ＵＩクライアントは、ユーザが供給したＰａｒａｍｅｔｅｒＩｎｉｔ値が、ＰａｒａｍｅｔｅｒＤｅｆインスタンスにおいて特定された要件を満足することを確かめるために、そうした値を検証するべきである。
【０３９６】
ＰｒｉｎｔＴｉｃｋｅｔプロバイダは、必要とされるすべてのパラメータが存在し、ＰａｒａｍｅｔｅｒＤｅｆインスタンスにおいて特定された要件を満足することを確かめるために、ＰｒｉｎｔＴｉｃｋｅｔによって供給されるＰａｒａｍｅｔｅｒＩｎｉｔインスタンスもチェックするべきである。認証コードは、ＰａｒａｍｅｔｅｒＩｎｉｔ値が無効であるか、または欠けている場合、妥当なデフォルトを供給するべきである。ＰａｒａｍｅｔｅｒＤｅｆは、デフォルト値がこの目的のために供給されることを許可することに留意されたい。また、パラメータを伴う制約、例えば「ＣｏｐｙＣｏｕｎｔがＮより大きい場合、少容量の入力ビンを使ってはならない」がある場合、ＰｒｉｎｔＴｉｃｋｅｔ認証コードは、この制約を検出し、制約のアクチベートを回避するようにＰｒｉｎｔＴｉｃｋｅｔを変更するべきである。
【０３９７】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓが、ＰｒｉｎｔＴｉｃｋｅｔにおいて特定されたパラメータに依存する場合、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ＰａｒａｍｅｔｅｒＩｎｉｔ値を監視し、適切なＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを作成しなければならない。
【０３９８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマにより、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ作者は、デバイスの記述において利用することができるかなりの量の柔軟性および表現力を与えられる。ただし、コンフィギュレーション依存は、この柔軟性および表現力に制限を課し、ＰａｒａｍｅｔｅｒＤｅｆインスタンス、Ｆｅａｔｕｒｅ要素のリスト、各ＦｅａｔｕｒｅにおけるＯｐｔｉｏｎインスタンスのリスト、および各Ｏｐｔｉｏｎ中のＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、コンフィギュレーション依存性を含んではならない。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントプロバイダは、コンフィギュレーションの無効な組合せを検出し解決しなければならない。
【０３９９】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとプリントスキーマの関連づけ
一般的なＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、様々な要素型の構造、目的、および使用をカバーする。このスキーマは、各要素型の特有のインスタンスを定義するのに使われるｎａｍｅ属性を特定する。このスキーマは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの作者が、プリントスキーマキーワードによって定義される要素のインスタンスを使うことができる、または、独自の個人定義のインスタンスが、明らかに独自と識別される名前空間において定義される限り、こうした個人定義のインスタンスを導入することができると規定する。（ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの作者は、別のプライベート名前空間で前もって定義されたインスタンスも使うことができる）。
【０４００】
プリントスキーマキーワードドキュメントは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントおよびＰｒｉｎｔＴｉｃｋｅｔにおいて使うことができる各要素型の特有のインスタンスを定義する。このドキュメントは、こうしたインスタンスの目的および使用もドキュメント化する。プリントスキーマキーワードドキュメントは、以下のように、いくつかの要素型のインスタンスも定義する。
【０４０１】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのルートに存在するＰｒｏｐｅｒｔｙおよびサブプロパティインスタンス：こうした要素は、デバイスの様々な側面および機能を記述し、デバイスを記述する共通語彙を提供する。
【０４０２】
Ｆｅａｔｕｒｅ要素の子であるＰｒｏｐｅｒｔｙおよびサブプロパティインスタンス：こうした要素は、特有のＦｅａｔｕｒｅに関連する様々な側面を記述する。
【０４０３】
Ｏｐｔｉｏｎ要素の子であるＰｒｏｐｅｒｔｙおよびサブプロパティインスタンス：こうした要素は、特有のＦｅａｔｕｒｅ用に選択されたＯｐｔｉｏｎに依存する、デバイスの様々な側面および機能を記述する。こうしたインスタンスは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのルートに置かれたＰｒｏｐｅｒｔｙインスタンスで置き換えることができるが、場合によっては、一層の便宜性をもたらす。これ以上の情報については、Ｐｒｏｐｅｒｔｙインスタンスの追加を参照されたい。
【０４０４】
Ａｔｔｒｉｂｕｔｅインスタンス：こうした要素は、システムが、Ａｔｔｒｉｂｕｔｅに関連づけられるＰｒｏｐｅｒｔｙを処理する方法に影響を与える。システムは、各Ａｔｔｒｉｂｕｔｅの振舞いおよびそれへの応答を明示的に実装するので、個人定義のＡｔｔｒｉｂｕｔｅインスタンスはサポートされない。
【０４０５】
ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンス：ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、Ｏｐｔｉｏｎを特徴づけるのに使われる言語を定義する。プリントスキーマキーワードにおいて定義されるＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、多くのデバイス用の、異なる多くの当事者によって書かれたＯｐｔｉｏｎインスタンスが、移植可能になり、他のどのデバイスドライバ、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、またはＰｒｉｎｔＴｉｃｋｅｔプロバイダによっても理解されることを可能にする。最も広く使われるＳｃｏｒｅｄＰｒｏｐｅｒｔｙは、ＯｐｔｉｏｎＮａｍｅである。
【０４０６】
ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ  Ｖａｌｕｅインスタンス：こうしたＶａｌｕｅインスタンスは、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスが与えられるのと同じ理由で与えられる。
【０４０７】
Ｆｅａｔｕｒｅインスタンス：各Ｏｐｔｉｏｎは、特有のＦｅａｔｕｒｅに属さなければならず、そうすることによって、Ｆｅａｔｕｒｅ自体が定義されることが必要となる。
【０４０８】
ＰａｒａｍｅｔｅｒＤｅｆインスタンス：プリントスキーマキーワードが供給したＰａｒａｍｅｔｅｒＤｅｆインスタンスも、その中に含まれる各Ｐｒｏｐｅｒｔｙ用のＶａｌｕｅを定義する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、変えることができるそうしたＰｒｏｐｅｒｔｙインスタンス用のＶａｌｕｅインスタンスを自由に変更する。どのＰｒｏｐｅｒｔｙインスタンスを変えることができ、どれを変えることができない（不変）かについての情報は、ＰａｒａｍｅｔｅｒＤｅｆおよびＰａｒａｍｅｔｅｒＩｎｉｔ要素を参照されたい。
【０４０９】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、どのＯｐｔｉｏｎインスタンスも命名しないことに留意されたい。Ｏｐｔｉｏｎインスタンスは、全体としてみると、そのＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスによってのみ特徴づけられる。ＯｐｔｉｏｎＮａｍｅプロパティ用の簡易表現がＯｐｔｉｏｎインスタンスを識別すると誤解されることが多いが、これは正しくない。ＯｐｔｉｏｎＮａｍｅプロパティ用のＶａｌｕｅは、兄弟Ｏｐｔｉｏｎインスタンスにとって一意である必要もなく、ＯｐｔｉｏｎＮａｍｅプロパティは、Ｏｐｔｉｏｎ中に現れる必要もない。
【０４１０】
プリントスキーマキーワードドキュメントは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔスキーマ中のすべてのインスタンスｎａｍｅ属性が属す標準名前空間を定義する。要素型によって使われるすべての要素型タグおよび拡張マークアップ言語（ＸＭＬ）Ａｔｔｒｉｂｕｔｅも、この名前空間に属す。
【０４１１】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマにおいて定義される各インスタンスに対して、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、インスタンスのｎａｍｅ属性および場所の両方を特定する。プロバイダおよびクライアントは、自分のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントまたはＰｒｉｎｔＴｉｃｋｅｔにおいてこのインスタンスを使うとき、両方を保存しなければならない。
【０４１２】
プリントスキーマキーワードドキュメントは、一部のインスタンスを必須と特定する。こうしたインスタンスは、全ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに現れなければならず、有効な値で正しく初期化されなければならない。必須と指定されないプリントスキーマキーワード中のすべてのインスタンスは、任意選択である。
【０４１３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント利用者の責任
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの利用者は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを使うことができるようになる前に担わなければならない一定の義務を有する。以下の要件が、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのクライアントに適用される。
【０４１４】
クライアントは、構文的に有効などのＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ、つまり、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマに従うＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの処理を、拒否しても失敗してもならない。
【０４１５】
クライアントは、個人定義の内容の、予期せぬ存在または不在に対処できなければならない。この内容は、プリントスキーマ定義の要素のインスタンス中に現れる個人定義の内容を含む。
【０４１６】
クライアントは、存在しない任意選択のプリントスキーマ内容に対処できなければならない。
【０４１７】
クライアントは、新しいドキュメントをいつ要求するべきかを知っていなければならない。
【０４１８】
Ｐｒｏｐｅｒｔｙインスタンスの値は、コンフィギュレーション依存（したがって、スナップショット依存）である。Ｐｒｏｐｅｒｔｙインスタンスにアクセスするとき、スナップショットをアップデートしなければならない。
【０４１９】
ＰｒｉｎｔＴｉｃｋｅｔにコピーされるべきＦｅａｔｕｒｅ、Ｏｐｔｉｏｎ、およびＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスは、定義上、静的である。つまり、デバイスコンフィギュレーションに依存しない（してはならない）。こうした型のどのインスタンスにアクセスする場合であっても、コンフィギュレーションが変化した際に新しいＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを入手する必要はない。
【０４２０】
ユーザインターフェース（ＵＩ）クライアントであるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓ利用者は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の、ユーザインターフェースを構成しユーザ選択から有効なＰｒｉｎｔＴｉｃｋｅｔを構成する情報を用いることができなければならない。この情報の利用は、どのＰａｒａｍｅｔｅｒＩｎｉｔインスタンスが指定されなければならないかを知り、特定されるそうしたインスタンスを検証することを含む。
【０４２１】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダの責任
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ＰｒｉｎｔＴｉｃｋｅｔ／ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダのインターフェースによって含意される最小の１組の機能をサポートしなければならない。こうした機能を、ここに列挙する。
【０４２２】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、適切なコンテキストに現れ、そのコンテキストに有効な値を含むとき、ｐｒｏｐａｇａｔｅという拡張マークアップ言語（ＸＭＬ）属性の指示に従わなければならない。
【０４２３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマに従い、プリントスキーマにおいて特定された要件を満足するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを生成しなければならない。
【０４２４】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、有効なＰｒｉｎｔＴｉｃｋｅｔを認識できなければならない。
【０４２５】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ＰｒｉｎｔＴｉｃｋｅｔを解釈し、それが表す特有のコンフィギュレーションを理解できなければならない。
【０４２６】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、そのコンフィギュレーションが制約の競合を含むかどうか判定できなければならない。
【０４２７】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、両方を有効にするのに必要な、最も重要でない変更を競合なく行うことによって、無効または競合するＰｒｉｎｔＴｉｃｋｅｔを変更できなければならない。
【０４２８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、ある特定のデバイスコンフィギュレーションに対して、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを生成できなければならない。
【０４２９】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、デフォルトコンフィギュレーションまたはＰｒｉｎｔＴｉｃｋｅｔを生成できなければならない。
【０４３０】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、デフォルトコンフィギュレーションに対応するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを生成できなければならない。
【０４３１】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、同じＦｅａｔｕｒｅに属す２つのＯｐｔｉｏｎインスタンスの間の一致の近さを判定できるＯｐｔｉｏｎスコアづけアルゴリズムを実装しなければならない。このアルゴリズムは、ＰｒｉｎｔＴｉｃｋｅｔ認証プロセスにおいて用いられる。
【０４３２】
上記の諸要件に加えて、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントは、各Ｏｐｔｉｏｎの各ＸＭＬ属性（例えば、ｃｏｎｓｔｒａｉｎｅｄ）に対して、有効な正しい値を含まなければならない。
【０４３３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの例
以下は、例示的なＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントをなす。デフォルト名前空間は、ＸＭＬ属性に適用されない。ＸＭＬ属性は、明示的に接頭部修飾されなければならない。以下のサンプルで使われるインスタンス名は例示のために過ぎず、概して、プリントスキーマキーワードにおいて定義されるインスタンス名に従う。
【０４３４】
【表３８】
2006155611.tif 000040
【０４３５】
【表３９】
2006155611.tif 000041
【０４３６】
【表４０】
2006155611.tif 000042
【０４３７】
【表４１】
2006155611.tif 000043
【０４３８】
【表４２】
2006155611.tif 000044
【０４３９】
【表４３】
2006155611.tif 000045
【０４４０】
ＰｒｉｎｔＴｉｃｋｅｔスキーマおよびドキュメント構成
ＤＥＶＭＯＤＥ構造を用いるデバイスコンフィギュレーション情報を特定する現在の方法は、いくつかの制限を被る。第１に、ＤＥＶＭＯＤＥ構造は、バイナリ構造であり、その結果、異なるバージョンの問題につながり得る。第２に、ＤＥＶＭＯＤＥ構造は、拡張不可能なパブリック部分、およびドライバによってのみ、次いでその部分を作成した特有のドライバによってのみアクセスすることができるプライベート部分に分けられる。ＰｒｉｎｔＴｉｃｋｅｔ形式は、拡張マークアップ言語（ＸＭＬ）ベースのプリントスキーマフレームワークを用いてコンフィギュレーション情報を表現し、そうすることによって、ＤＥＶＭＯＤＥ構造のこうした欠点をなくす。
【０４４１】
ＰｒｉｎｔＴｉｃｋｅｔスキーマは、直前の段落で言及した２つの問題それぞれに対処する。第１に、ＰｒｉｎｔＴｉｃｋｅｔスキーマは、ＸＭＬベースのテキストファイルであり、したがって、拡張性およびバージョンづけを伴う問題がなくなる。第２に、コンフィギュレーション情報は、すべてのクライアントに利用可能であり、このことは、どのクライアントもプロバイダも、ＰｒｉｎｔＴｉｃｋｅｔに含まれるどの情報も格納し取得できることを意味する。Ｏｐｔｉｏｎは、プリントスキーマフレームワークおよび派生されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントによって使われる同じ技法を用いて説明される。この理由のため、ＰｒｉｎｔＴｉｃｋｅｔは、理解されるべきＯｐｔｉｏｎ定義モデルの起こり得る移植性利益をすべて提供する。これ以上の情報については、プリントスキーマフレームワークを参照されたい。このセクションにおける情報を使用する人は、以下のグループを含む。
【０４４２】
・  ＰｒｉｎｔＴｉｃｋｅｔ／ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダインターフェースの実装者
・  ＰｒｉｎｔＴｉｃｋｅｔの利用者
・  ＰｒｉｎｔＴｉｃｋｅｔ／ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダインターフェースのクライアント
上記のリストにおける第１のカテゴリのメンバは、このセクションの残りの部分ではＰｒｉｎｔＴｉｃｋｅｔプロバイダと呼ばれる。後の２つのカテゴリのメンバは、ＰｒｉｎｔＴｉｃｋｅｔ利用者と呼ばれる。
【０４４３】
ＰｒｉｎｔＴｉｃｋｅｔおよびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは両方とも、プリントスキーマの特殊化された部分である。プリントスキーマのこうしたサブセットの間の構造上の主な違いは、ＰｒｉｎｔＴｉｃｋｅｔスキーマは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマに含まれないＰｒｏｐｅｒｔｙおよびＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを含み、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマは、ＰｒｉｎｔＴｉｃｋｅｔスキーマに含まれないＰｒｏｐｅｒｔｙおよびＰａｒａｍｅｔｅｒＤｅｆインスタンスを含む点である。こうした違いを除いて、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔスキーマは概して、互いの内容を映し、Ｆｅａｔｕｒｅ、Ｏｐｔｉｏｎ、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙ、およびＶａｌｕｅインスタンスを共有する。共有されるこのようなどの内容も、最新に保たれなければならない。例えば、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマ中のＭｅｄｉａＳｉｚｅ  Ｆｅａｔｕｒｅにおいて変更が行われた場合、同じ変更が、ＰｒｉｎｔＴｉｃｋｅｔスキーマにおいて行われなければならない。
【０４４４】
ＰｒｉｎｔＴｉｃｋｅｔの機能性の概要
ＰｒｉｎｔＴｉｃｋｅｔは、プリントスキーマフレームワークのＦｅａｔｕｒｅ／Ｏｐｔｉｏｎおよびパラメータ構文を使って、デバイスコンフィギュレーション情報を表現する拡張マークアップ言語（ＸＭＬ）ベースの形式を使用する。これは、プリントスキーマフレームワークの標準要素型ならびに拡張性機能をすべて含む。ＰｒｉｎｔＴｉｃｋｅｔは、１つのページがどのように処理されるかの内蔵型記述であると仮定される。ある特定のドキュメント形式からのこのようなＰｒｉｎｔＴｉｃｋｅｔの抽出および構築に関わるステップについては、ここでは扱わない。
【０４４５】
ＰｒｉｎｔＴｉｃｋｅｔは、ある特定のコンフィギュレーション用のデバイスの特性を記述するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを入手するのに使うことができる。代替として、ＰｒｉｎｔＴｉｃｋｅｔを１組のレンダリング命令とともに提出して、ＰｒｉｎｔＴｉｃｋｅｔにおいて特定されたコンフィギュレーションに従ってレンダリングされ処理される出力ページを生じることができる。
【０４４６】
ＰｒｉｎｔＴｉｃｋｅｔの主要な目的は、印刷ジョブコンフィギュレーションを表現することである。デバイスが想定する可能なすべてのコンフィギュレーション（デバイスのコンフィギュレーション空間）を定義するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントとは対照的に、ＰｒｉｎｔＴｉｃｋｅｔの目的は、処理中のジョブのオブジェクト（この場合、ページ）に適用されるただ１つの特有のコンフィギュレーションを定義することである。コンフィギュレーションの移植性および一貫性を促すために、プリントスキーマキーワードセクションにおいて提示される特有のキーワードおよび階層が、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓおよびＰｒｉｎｔＴｉｃｋｅｔテクノロジ両方によって使われる。さらに、プリントスキーマフレームワークは、両方のテクノロジの基本構文を、ジョブのフォーマット設定およびＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの、あいまいさのない、公開された拡張可能な伝達を促進するように定義する。
【０４４７】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓにおいて定義されるデバイス属性の選択肢の提供に加え、ＰｒｉｎｔＴｉｃｋｅｔは、付加情報がクライアントによってＰｒｏｐｅｒｔｙ要素の形で追加されるようにする。プリントスキーマは、いくつかの標準Ｐｒｏｐｅｒｔｙインスタンスを定義し、インターフェースプロバイダは、プライベートＰｒｏｐｅｒｔｙインスタンスを同様に自由に導入する。例えば、ある組織のメンバが、自分達の印刷ジョブのほとんどを中央バッチ機構に送った場合、こうしたメンバは、各ジョブごとに、戻りアドレスを含むプライベートＰｒｏｐｅｒｔｙインスタンスを特定する。このＰｒｏｐｅｒｔｙは、発信者への完了したジョブの配送をより容易にする。
【０４４８】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマセクションにおいて説明したように、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中で表現される可能なコンフィギュレーション結果のいくつかは、デバイスにとって無効である。無効であるコンフィギュレーションは、制約の競合（ＰＰＤ／ＧＰＤファイルの世界で使われる用語）を含むと言われる。制約の競合を防止するために、ＰｒｉｎｔＴｉｃｋｅｔプロバイダは、クライアントが自分達のＰｒｉｎｔＴｉｃｋｅｔに対して認証を実施するのに用いるＰｒｉｎｔＴｉｃｋｅｔ認証動作をサポートしなければならない。この動作は、特定されたコンフィギュレーションがデバイス上で起こり得るかどうかを検出するべきである。コンフィギュレーションが起こり得ない（特定されたＦｅａｔｕｒｅおよびＯｐｔｉｏｎ要素が現在のデバイスに存在しない、またはコンフィギュレーションが制約を受けるので）場合、動作は、入力ＰｒｉｎｔＴｉｃｋｅｔを、有効な、制約を受けない設定を含むように変更するべきである。動作は、ＰｒｉｎｔＴｉｃｋｅｔ中の他の情報を同様に削除することも検証することもできよう。制約の競合が起こると、認証コードは、制約の競合を回避するために、デバイス属性の１つの設定を変えなければならないことに留意されたい。Ｏｐｔｉｏｎ定義は、ユーザの元々の意図を最もよく保存するためにどのデバイス属性を変えるべきか判定するのに、スコアづけアルゴリズムを使うよう提案する。認証コードは、あるデバイス属性を別の属性よりも好むようにスコアづけアルゴリズムをハードコードしてもよく、解像度を導くためのＰｒｉｎｔＴｉｃｋｅｔにおいて、ある特定のＰｒｏｐｅｒｔｙインスタンスによって供給される情報を用いてもよい。クライアントに各デバイス属性の相対的重要度を特定させるプリントスキーマキーワードにおいて定義されるＰｒｏｐｅｒｔｙはないので、この目的のために使われるどのプライベートＰｒｉｎｔＴｉｃｋｅｔプロパティ要素も、他のＰｒｉｎｔＴｉｃｋｅｔプロバイダによって無視される可能性が高い。
【０４４９】
ＰｒｉｎｔＴｉｃｋｅｔのシンタクスおよびスキーマ
ＰｒｉｎｔＴｉｃｋｅｔは、拡張マークアップ言語（ＸＭＬ）ベースのプリントスキーマフレームワークのシンタクスで表現される。ＰｒｉｎｔＴｉｃｋｅｔスキーマは、使われる要素型において、ならびに親および子要素によって表現される一般的な構造において、プリントスキーマフレームワークに厳密に匹敵する。ＰａｒａｍｅｔｅｒＤｅｆ要素は、ＰｒｉｎｔＴｉｃｋｅｔ中では許可されず、ＰａｒａｍｅｔｅｒＩｎｉｔ要素は、ＰｒｉｎｔＴｉｃｋｅｔ中でのみ許可されることに留意されたい。
【０４５０】
ＰｒｉｎｔＴｉｃｋｅｔコンフィギュレーションのチェックリスト
このセクションでは、ＰｒｉｎｔＴｉｃｋｅｔクライアントの作者が、プリントスキーマフレームワークにおいて定義される要素型をどのように使って、デバイスの意図を記述するＰｒｉｎｔＴｉｃｋｅｔを作成するか実証する。ＰｒｉｎｔＴｉｃｋｅｔは、汎用的（特有のデバイスに関係しない）でもよく、デバイス特有でもよい。ＰｒｉｎｔＴｉｃｋｅｔのセマンティクスをより詳細に提示する。さらに、このセクションは、後続セクションでより深くカバーされる概念および用語の概論を含む。
【０４５１】
ＰｒｉｎｔＴｉｃｋｅｔを構築する、根本的に異なる２つの手法がある。どちらの手法を用いてもよい。
【０４５２】
一般的ＰｒｉｎｔＴｉｃｋｅｔを作成することによって、ＰｒｉｎｔＴｉｃｋｅｔを、未知または汎用デバイスに向ける。自分の主要な目的が、エンドユーザの意図を保存することである場合、ドキュメントを用いて、未検証の一般的ＰｒｉｎｔＴｉｃｋｅｔを構築し格納することによって、この手法をとりたいと思うであろう。
【０４５３】
デバイス特有のＰｒｉｎｔＴｉｃｋｅｔを作成することによって、ＰｒｉｎｔＴｉｃｋｅｔを特有のデバイスに向ける。ある特定のデバイスによって提供される特徴すべてを利用することにより興味がある場合、この手法をとりたいと思うであろう。
【０４５４】
デバイス用のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントが利用不可能な場合、またはターゲットデバイスが未知の場合、一般的ＰｒｉｎｔＴｉｃｋｅｔを構成するべきである。１組のＦｅａｔｕｒｅおよびＯｐｔｉｏｎ要素、またはパラメータを提供するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントがないので、こうした要素型の、サポートされるインスタンスは、プリントスキーマキーワードから直接入手しなければならない。
【０４５５】
一般的ＰｒｉｎｔＴｉｃｋｅｔを作成する際、以下のリストに示すステップを用いるべきである。
【０４５６】
１．ＰｒｉｎｔＴｉｃｋｅｔルートを含む空の拡張マークアップ言語（ＸＭＬ）ドキュメントを作成する。プリントスキーマ名前空間に、名前空間接頭部を割り当てる。スキーマバージョンを特定する。
【０４５７】
２．プリントスキーマキーワード中のＦｅａｔｕｒｅインスタンスを調べ、そのうちのどれを、自分のＰｒｉｎｔＴｉｃｋｅｔにおいて定義したいか判定する。こうしたＦｅａｔｕｒｅインスタンスを自分のＰｒｉｎｔＴｉｃｋｅｔに追加する。サブフィーチャを転送する際、親Ｆｅａｔｕｒｅを転送し、Ｆｅａｔｕｒｅとサブフィーチャの間の親子関係をＰｒｉｎｔＴｉｃｋｅｔに保存しなければならない。
【０４５８】
転送する各Ｆｅａｔｕｒｅインスタンスに対して、どのＯｐｔｉｏｎインスタンスが自分のＰｒｉｎｔＴｉｃｋｅｔに適用可能か判定する。Ｏｐｔｉｏｎインスタンスのこの組から、各Ｏｐｔｉｏｎインスタンス全体を、プリントスキーマ中に現れたときに転送し、次いで、自分のＰｒｉｎｔＴｉｃｋｅｔにとって重要である可能性のあるものは例外として、存在するどのＰｒｏｐｅｒｔｙインスタンスも削除する。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスすべてをもち続け、確実にその場所を保存する。こうしたインスタンスは、Ｏｐｔｉｏｎ定義の不可欠な一部である。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの子であるＡｔｔｒｉｂｕｔｅインスタンスがある場合、もち続けても、削除してもよい。
【０４５９】
３．ＡｔｔｒｉｂｕｔｅまたはＰｒｏｐｅｒｔｙインスタンスを、どのＳｃｏｒｅｄＰｒｏｐｅｒｔｙに追加してもよい。ＡｔｔｒｉｂｕｔｅおよびＰｒｏｐｅｒｔｙ要素は、ＰｒｉｎｔＴｉｃｋｅｔプロバイダがその使用を明示的にサポートする場合のみ適用可能である。各プロバイダは、サポートされるすべてのＡｔｔｒｉｂｕｔｅおよびＰｒｏｐｅｒｔｙインスタンスの目的および使用をドキュメント化するべきである。システムＰｒｉｎｔＴｉｃｋｅｔプロバイダのみが、Ａｔｔｒｉｂｕｔｅインスタンスを定義しまたは導入することができる。プライベートＰｒｉｎｔＴｉｃｋｅｔプロバイダは、システム定義のＡｔｔｒｉｂｕｔｅインスタンスをサポートすることができるが、プライベートＡｔｔｒｉｂｕｔｅインスタンスを導入することは許可されない。どのプロバイダがＰｒｉｎｔＴｉｃｋｅｔを処理するかはわからないので、システムＰｒｉｎｔＴｉｃｋｅｔプロバイダによって明示的にサポートされるＡｔｔｒｉｂｕｔｅおよびＰｒｏｐｅｒｔｙインスタンスのみを付加したいと思うであろう。
【０４６０】
４．プリントスキーマキーワードが、ＳｅｌｅｃｔｉｏｎＴｙｐｅプロパティを、ある特定のＦｅａｔｕｒｅに対してＰｉｃｋＭａｎｙに設定した場合、ＩｄｅｎｔｉｔｙＯｐｔｉｏｎとして指定されるＯｐｔｉｏｎが、選択されたＯｐｔｉｏｎの１つではないという条件で、そのＦｅａｔｕｒｅに対して複数のＯｐｔｉｏｎを選択することができる。プリントスキーマ中のＩｄｅｎｔｉｔｙＯｐｔｉｏｎは、Ｐｏｓｔｓｃｒｉｐｔ  ＰＰＤファイルおよびＵｎｉｄｒｖ  ＧＰＤファイルにおけるＮｏｎｅオプションと同じ影響を有する。すなわち、ｎｏ−ｏｐとして働く。
【０４６１】
５．自分のＰｒｉｎｔＴｉｃｋｅｔ中で初期化されるべきＰａｒａｍｅｔｅｒＤｅｆインスタンス用のプリントスキーマキーワードを調べる。このような各ＰａｒａｍｅｔｅｒＤｅｆインスタンスごとに、ＰｒｉｎｔＴｉｃｋｅｔ中のＰａｒａｍｅｔｅｒＩｎｉｔインスタンスにおいて使われるＶａｌｕｅを選択する。このＶａｌｕｅは、正しいデータ型でなければならず、ＰａｒａｍｅｔｅｒＤｅｆインスタンスによって定義される範囲内でなければならず、ＰａｒａｍｅｔｅｒＤｅｆインスタンスにおいて特定された他の要件をすべて満たさなければならない。ＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを使って、パラメータを、自分が選択したＶａｌｕｅに初期化する。
【０４６２】
ユーザインターフェース（ＵＩ）コンポーネントを開発している場合、自分のＰｒｉｎｔＴｉｃｋｅｔ生成メソッドを設計し、そうすることによって、ユーザは、ＰａｒａｍｅｔｅｒＩｎｉｔ要素用のＶａｌｕｅを入れることができるようになり、さらに、ＵＩエントリメソッドは、関連づけられたＰａｒａｍｅｔｅｒＤｅｆ要素によって特定されるどの入力制限も順守し準拠するはずである。
【０４６３】
６．ＰａｒａｍｅｔｅｒＲｅｆの出現に対して、ＰｒｉｎｔＴｉｃｋｅｔに現れる各Ｏｐｔｉｏｎインスタンスの内容を調べる。対応するＰａｒａｍｅｔｅｒＩｎｉｔインスタンスが、ＰｒｉｎｔＴｉｃｋｅｔにまだ現れていない場合、前述のステップに従って、ＰｒｉｎｔＴｉｃｋｅｔにおいてＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを作成する。このＰａｒａｍｅｔｅｒＩｎｉｔインスタンスの目的は、ＰａｒａｍｅｔｅｒＲｅｆインスタンスによって参照されるパラメータを初期化することである。
【０４６４】
７．ジョブを処理するデバイスは、ＰｒｉｎｔＴｉｃｋｅｔ中で特定された全Ｆｅａｔｕｒｅをサポートできるわけではない可能性があることに留意する。名前つきＦｅａｔｕｒｅはサポートされる可能性があるが、そのＦｅａｔｕｒｅの特定されたＯｐｔｉｏｎはサポートされない可能性があることにも留意する。同じ注意事項が、パラメータに適用される。デバイスが、名前つきパラメータをサポートする場合であっても、ＰａｒａｍｅｔｅｒＩｎｉｔインスタンスにおいて特定されたＶａｌｕｅが、デバイスにとって有効な範囲内にない可能性がある。
【０４６５】
８．自分のＰｒｉｎｔＴｉｃｋｅｔに存在しなければならないＰｒｏｐｅｒｔｙインスタンス用のプリントスキーマキーワードを調べる。こうしたＫｅｙｗｏｒｄそれぞれに対して、自分のＰｒｉｎｔＴｉｃｋｅｔにＰｒｏｐｅｒｔｙインスタンスを追加し、Ｖａｌｕｅ要素型を使って適切な値を与える。Ｐｒｏｐｅｒｔｙインスタンスが、確実にＰｒｉｎｔＴｉｃｋｅｔに正しく置かれるようにする。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマではなくＰｒｉｎｔＴｉｃｋｅｔスキーマを確実に参考にするようにする。
【０４６６】
９．ＰｒｉｎｔＴｉｃｋｅｔスキーマにおいて定義される任意選択のＰｒｏｐｅｒｔｙインスタンスを調べる。自分のＰｒｉｎｔＴｉｃｋｅｔにあるべきこのようなＰｒｏｐｅｒｔｙインスタンスがある場合、自分のＰｒｉｎｔＴｉｃｋｅｔ中に作成する。
【０４６７】
デバイス特有のＰｒｉｎｔＴｉｃｋｅｔは、ある特定のデバイスをターゲットにするので、概して多数のデバイスに渡って移植可能ではない。
【０４６８】
デバイス特有のＰｒｉｎｔＴｉｃｋｅｔを作成する際は、以下のリストに示すステップを使うべきである。
【０４６９】
１．デバイス用に、適切なＦｅａｔｕｒｅインスタンスのみを含むＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを入手する。デフォルトＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを要求する。この要求のために、入力ＰｒｉｎｔＴｉｃｋｅｔを特定する必要はない。というのは、ＰｒｉｎｔＴｉｃｋｅｔを構成するのに使われるデバイス属性（ＦｅａｔｕｒｅおよびＯｐｔｉｏｎインスタンスおよびパラメータ）はコンフィギュレーションに依存しないからである。
【０４７０】
２．ＰｒｉｎｔＴｉｃｋｅｔルートを含む空の拡張マークアップ言語（ＸＭＬ）ドキュメントを作成する。プリントスキーマ名前空間に名前空間接頭部を割り当て、ＰｒｉｎｔＴｉｃｋｅｔによって使われる他のすべての名前空間に対して接頭辞を割り当てる。ＰｒｉｎｔＴｉｃｋｅｔスキーマバージョンを特定する。
【０４７１】
３．ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて報告される、または自分にとって興味がある全ＦｅａｔｕｒｅおよびＰａｒａｍｅｔｅｒＤｅｆインスタンス用のＰｒｉｎｔＴｉｃｋｅｔにおいて、設定を定義することができる。部分的なＰｒｉｎｔＴｉｃｋｅｔがＰｒｉｎｔＴｉｃｋｅｔインターフェースに対して提示されている場合、ＰｒｉｎｔＴｉｃｋｅｔ認証中に、省略されたＦｅａｔｕｒｅおよびＰａｒａｍｅｔｅｒＤｅｆインスタンスに対して、デフォルトが自動的に与えられる。
【０４７２】
４．Ｆｅａｔｕｒｅインスタンス用のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを調べ、そのうちのどれを自分のＰｒｉｎｔＴｉｃｋｅｔにおいて定義したいか決定する。こうしたＦｅａｔｕｒｅインスタンスをＰｒｉｎｔＴｉｃｋｅｔに追加するが、Ｆｅａｔｕｒｅインスタンスの内容を自分のＰｒｉｎｔＴｉｃｋｅｔに転送してはならない。サブフィーチャを転送する場合、親Ｆｅａｔｕｒｅも転送しなければならず、親子関係はＰｒｉｎｔＴｉｃｋｅｔに保存しなければならない。
【０４７３】
転送する各Ｆｅａｔｕｒｅごとに、どのＯｐｔｉｏｎインスタンスが自分のＰｒｉｎｔＴｉｃｋｅｔに適用可能か判定する。Ｏｐｔｉｏｎ全体を、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中で定義されるものとして転送し、次いで、存在するどのＰｒｏｐｅｒｔｙインスタンスも削除する。Ｐｒｏｐｅｒｔｙインスタンスは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて使われるが、ＰｒｉｎｔＴｉｃｋｅｔにおいて何の目的にも役立たない。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスをすべてもち続け、確実にその場所を保存する。こうしたインスタンスは、Ｏｐｔｉｏｎ定義の不可欠な部分だからである。ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの子であるＡｔｔｒｉｂｕｔｅインスタンスがある場合、もち続けても、削除してもよい。
【０４７４】
５．ＡｔｔｒｉｂｕｔｅまたはＰｒｏｐｅｒｔｙインスタンスを、どのＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスに追加してもよい。ＡｔｔｒｉｂｕｔｅおよびＰｒｏｐｅｒｔｙインスタンスは、ＰｒｉｎｔＴｉｃｋｅｔプロバイダがその使用を明示的にサポートする場合のみ使われる。各プロバイダは、サポートされるすべてのＡｔｔｒｉｂｕｔｅおよびＰｒｏｐｅｒｔｙインスタンスの目的および使用をドキュメント化しなければならない。システムＰｒｉｎｔＴｉｃｋｅｔプロバイダのみが、Ａｔｔｒｉｂｕｔｅインスタンスを定義しまたは導入することができる。プライベートＰｒｉｎｔＴｉｃｋｅｔプロバイダは、システム定義のＡｔｔｒｉｂｕｔｅインスタンスをサポートすることができるが、プライベートＡｔｔｒｉｂｕｔｅインスタンスを導入することは許可されない。認証の間、Ｏｐｔｉｏｎインスタンスに含まれるどのＰｒｏｐｅｒｔｙインスタンスも、Ｐｒｏｐｅｒｔｙの名前空間がターゲットＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓまたはＰｒｉｎｔＴｉｃｋｅｔプロバイダによって認識され、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスが、参照Ｏｐｔｉｏｎで定義されるものに完全に一致するＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の候補Ｏｐｔｉｏｎがみつからない限りは、はぎ取られることに留意されたい。
【０４７５】
６．プリントスキーマキーワードが、ＳｅｌｅｃｔｉｏｎＴｙｐｅプロパティを、ある特定のＦｅａｔｕｒｅに対してＰｉｃｋＭａｎｙに設定した場合、ＩｄｅｎｔｉｔｙＯｐｔｉｏｎとして指定されるＯｐｔｉｏｎが、選択されたＯｐｔｉｏｎの１つではないという条件で、そのＦｅａｔｕｒｅに対して複数のＯｐｔｉｏｎを選択することができる。プリントスキーマ中のＩｄｅｎｔｉｔｙＯｐｔｉｏｎは、Ｐｏｓｔｓｃｒｉｐｔ  ＰＰＤファイルおよびＵｎｉｄｒｖ  ＧＰＤファイルにおけるＮｏｎｅオプションと同じ影響を有する。すなわち、ｎｏ−ｏｐとして働く。
【０４７６】
７．自分のＰｒｉｎｔＴｉｃｋｅｔ中で設定されるべきＰａｒａｍｅｔｅｒＤｅｆインスタンス用のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを調べる。このような各ＰａｒａｍｅｔｅｒＤｅｆインスタンスごとに、ＰｒｉｎｔＴｉｃｋｅｔ中のＰａｒａｍｅｔｅｒＩｎｉｔインスタンスにおいて使われるＶａｌｕｅを選択する。このＶａｌｕｅは、正しいデータ型でなければならず、ＰａｒａｍｅｔｅｒＤｅｆインスタンス中で定義される範囲内でなければならず、ＰａｒａｍｅｔｅｒＤｅｆインスタンス中で特定された他の要件をすべて満たさなければならない。ＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを使って、パラメータを、自分が選択したＶａｌｕｅに初期化する。
【０４７７】
８．ＰａｒａｍｅｔｅｒＲｅｆインスタンスの出現に対して、ＰｒｉｎｔＴｉｃｋｅｔに現れる各Ｏｐｔｉｏｎインスタンスの内容を調べる。対応するＰａｒａｍｅｔｅｒＩｎｉｔインスタンスが、ＰｒｉｎｔＴｉｃｋｅｔにまだ現れていない場合、前述のステップに従って、ＰｒｉｎｔＴｉｃｋｅｔにおいてＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを作成する。このＰａｒａｍｅｔｅｒＩｎｉｔインスタンスの目的は、ＰａｒａｍｅｔｅｒＲｅｆインスタンスによって参照されるパラメータを初期化することである。
【０４７８】
９．制約が競合すると、自分がＰｒｉｎｔＴｉｃｋｅｔにおいて指定したコンフィギュレーションにデバイスが適用しない可能性があることに留意する。必要な場合、認証プロセスが、ＰｒｉｎｔＴｉｃｋｅｔにおいて定義されたコンフィギュレーションを、競合がないコンフィギュレーションに変更する。
【０４７９】
１０．自分のＰｒｉｎｔＴｉｃｋｅｔに存在しなければならないＰｒｏｐｅｒｔｙインスタンス用のプリントスキーマキーワードを調べる。必要とされるＫｅｙｗｏｒｄそれぞれに対して、自分のＰｒｉｎｔＴｉｃｋｅｔにＰｒｏｐｅｒｔｙインスタンスを追加し、Ｖａｌｕｅ要素型を使って適切な値を与える。Ｐｒｏｐｅｒｔｙインスタンスが、確実にＰｒｉｎｔＴｉｃｋｅｔに正しく置かれるようにする。
【０４８０】
１１．ＰｒｉｎｔＴｉｃｋｅｔスキーマ中の任意選択のＰｒｏｐｅｒｔｙインスタンスを調べる。自分のＰｒｉｎｔＴｉｃｋｅｔにあるべきこのようなＰｒｏｐｅｒｔｙインスタンスがある場合、自分のＰｒｉｎｔＴｉｃｋｅｔ中に作成する。
【０４８１】
１２．ルートレベルで、あるいはどのＦｅａｔｕｒｅ、Ｏｐｔｉｏｎ、またはＰｒｏｐｅｒｔｙインスタンスにも、個人定義のＰｒｏｐｅｒｔｙインスタンスを追加することもできる。ただし、こうした個人定義のＰｒｏｐｅｒｔｙインスタンスは、属している名前空間がターゲットＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓまたはＰｒｉｎｔＴｉｃｋｅｔプロバイダによって認識されない限り、認証の間にはぎ取られることに留意されたい。さらに、Ｏｐｔｉｏｎインスタンス中のどこにでも現れるＰｒｏｐｅｒｔｙインスタンスは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントが完全一致であるＯｐｔｉｏｎを含まない限り、認証の間にはぎ取られる。２つのＯｐｔｉｏｎインスタンスは、一方のＯｐｔｉｏｎインスタンス中の全ＳｃｏｒｅｄＰｒｏｐｅｒｔｙが、他方のＯｐｔｉｏｎインスタンス中に対応するＳｃｏｒｅｄＰｒｏｐｅｒｔｙを有し、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの値が同じである場合、完全一致である。認識されるプライベートＰｒｏｐｅｒｔｙインスタンスおよびその使用法のリストについては、ＰｒｉｎｔＴｉｃｋｅｔプロバイダのプライベートスキーマを参考にする。
【０４８２】
ＰｒｉｎｔＴｉｃｋｅｔ認証チェックリスト
ＰｒｉｎｔＴｉｃｋｅｔプロバイダは、どの目的で使用するときも、使用に先立って、ＰｒｉｎｔＴｉｃｋｅｔを検証しなければならない。ＰｒｉｎｔＴｉｃｋｅｔは、検証された後でクライアントに戻すこともでき、使用後に廃棄することもできる。このチェックリストは、プロバイダが認証の間に実施しなければならないタスクをカバーする。認証プロセスは、ＰｒｉｎｔＴｉｃｋｅｔの内容を頻繁に改変するが、以前検証されたＰｒｉｎｔＴｉｃｋｅｔは改変しない。
【０４８３】
認証は、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて定義される１組のＦｅａｔｕｒｅ、Ｏｐｔｉｏｎ、およびＰａｒａｍｅｔｅｒＤｅｆインスタンスを有する特有のデバイスに対して常に実施される。認証コードは、Ｆｅａｔｕｒｅインスタンス（および含まれるＯｐｔｉｏｎインスタンス）ならびに特有のデバイス用のＰａｒａｍｅｔｅｒＤｅｆインスタンスの組へのアクセス権を有するはずであり、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓにアクセスする必要はないはずである。Ｆｅａｔｕｒｅ、Ｏｐｔｉｏｎ、およびＰａｒａｍｅｔｅｒＤｅｆインスタンスからの情報は、認証プロセスの特定の部分において必要とされる。
【０４８４】
１．対応する、または一致する要素の位置決めを試みる間、要素の名前空間は、いずれかの修飾名が一致とみなされる前に一致しなければならないことに留意されたい。すべての要素名、Ａｔｔｒｉｂｕｔｅ名、およびインスタンス名は、名前空間で修飾される。ネストされる要素の場合、その場所は、要素が一致とみなされる前に一致しなければならない。
【０４８５】
２．すべての要素タグが、パブリック名前空間内にあり、ＰｒｉｎｔＴｉｃｋｅｔスキーマによって定義され、適正な拡張マークアップ言語（ＸＭＬ）ＡｔｔｒｉｂｕｔｅおよびＡｔｔｒｉｂｕｔｅ値を含むこと、および各要素型の場所がＰｒｉｎｔＴｉｃｋｅｔスキーマ定義の使用法に従うことを確かめる。
【０４８６】
３．ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントによって報告されるすべての名前空間を判定する。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントによって報告されていない名前空間にインスタンス名が属すＰｒｉｎｔＴｉｃｋｅｔから、すべての要素（およびその子孫）を削除する。既知の名前空間に認識されていないインスタンス名を含む、この場合と以下の場合との違いに留意されたい。
【０４８７】
４．スキーマが、新しい要素インスタンス定義の追加によって継続的に拡張されている事実により、認証コードは、所与の名前空間内の全インスタンス名が既知であるという仮定の下で書かれるべきでない。認証コードは、既知の名前空間内で認識されていないインスタンス名をエラーとして扱うことも、ＰｒｉｎｔＴｉｃｋｅｔからそうしたインスタンス名を消去することもできない。
【０４８８】
５．いずれかの要素インスタンスが、ＰｒｉｎｔＴｉｃｋｅｔスキーマによって許可されない重複する兄弟を有する場合、最初の出現のみを保持し、重複要素の内容も含めて、重複を消去する。
【０４８９】
６．ＰｒｉｎｔＴｉｃｋｅｔから、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中に対応するＦｅａｔｕｒｅがないどのＦｅａｔｕｒｅまたはサブフィーチャ（およびすべてのその子）も削除する。
【０４９０】
７．ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントにおいて定義されるＳｅｌｅｃｔｉｏｎＴｙｐｅプロパティを、ＰｒｉｎｔＴｉｃｋｅｔ中の残っているＦｅａｔｕｒｅインスタンスそれぞれに対してチェックする。ＳｅｌｅｃｔｉｏｎＴｙｐｅプロパティがＰｉｃｋＯｎｅに設定されているどのＦｅａｔｕｒｅも、ＰｒｉｎｔＴｉｃｋｅｔに存在する厳密に１つのＯｐｔｉｏｎインスタンスをもたなければならないが、ＳｅｌｅｃｔｉｏｎＴｙｐｅプロパティがＰｉｃｋＭａｎｙであるＦｅａｔｕｒｅは、複数のＯｐｔｉｏｎインスタンスをもつことができる。ＰｒｉｎｔＴｉｃｋｅｔ  ＦｅａｔｕｒｅがＯｐｔｉｏｎインスタンスをもたない場合、デフォルトのＯｐｔｉｏｎインスタンスを与える。プロバイダであるならば、どれがデフォルトＯｐｔｉｏｎであるかを、全Ｆｅａｔｕｒｅに関して知っている。
【０４９１】
ＳｅｌｅｃｔｉｏｎＴｙｐｅプロパティがＰｉｃｋＭａｎｙであり、複数のＯｐｔｉｏｎがＰｒｉｎｔＴｉｃｋｅｔにおいて選択されているＦｅａｔｕｒｅに対して、どのＯｐｔｉｏｎもＩｄｅｎｔｉｔｙＯｐｔｉｏｎとして指定されていないことを確かめる。ＩｄｅｎｔｉｔｙＯｐｔｉｏｎとして指定されているＯｐｔｉｏｎがある場合、他の全Ｏｐｔｉｏｎを消去し、特定された１つのＩｄｅｎｔｉｔｙＯｐｔｉｏｎのみを残す。
【０４９２】
８．ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中に対応するＰａｒａｍｅｔｅｒＤｅｆインスタンスがない、ＰｒｉｎｔＴｉｃｋｅｔ中のどのＰａｒａｍｅｔｅｒＩｎｉｔインスタンスも削除する。
【０４９３】
ＰｒｉｎｔＴｉｃｋｅｔ中の他のどのＰａｒａｍｅｔｅｒＩｎｉｔインスタンスに対しても、それぞれに対するＶａｌｕｅが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのＰａｒａｍｅｔｅｒＤｅｆインスタンスに従うことを確かめる。Ｖａｌｕｅが欠けている場合、ＰａｒａｍｅｔｅｒＤｅｆ中で与えられるデフォルトを供給する。
【０４９４】
９．スコアづけアルゴリズムの結果に基づいて、ＰｒｉｎｔＴｉｃｋｅｔ中の各Ｏｐｔｉｏｎインスタンスを、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中の対応するＦｅａｔｕｒｅにおいて列挙されるＯｐｔｉｏｎと対にする。スコアづけは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中で、ＰｒｉｎｔＴｉｃｋｅｔ中で名づけられたＯｐｔｉｏｎと最良一致するＯｐｔｉｏｎをみつけるプロセスである。スコアづけプロセス中の考慮事項の説明に関しては、Ｏｐｔｉｏｎ定義を参照されたい。ＰｒｉｎｔＴｉｃｋｅｔ中の各参照Ｏｐｔｉｏｎを、対応する最良一致候補のＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントＯｐｔｉｏｎで置き換える。制約の競合により、最良一致候補が使われなくなった場合、候補をすべて、スコアでランクづけし、この情報を、解決段階で渡すこともできる。このような場合、解決アルゴリズムは、別の候補をランダムに選ぶのではなく、次善候補を使うことができる。
【０４９５】
１０．ＳｅｌｅｃｔｉｏｎＴｙｐｅプロパティがＰｉｃｋＭａｎｙに設定されており、ＰｒｉｎｔＴｉｃｋｅｔ中で複数のＯｐｔｉｏｎを選択しているＦｅａｔｕｒｅに対して、ＯｐｔｉｏｎがＩｄｅｎｔｉｔｙＯｐｔｉｏｎとして指定されていないことを確かめる。このようなＯｐｔｉｏｎが存在する場合、他の全Ｏｐｔｉｏｎを消去し、特定された１つのＩｄｅｎｔｉｔｙＯｐｔｉｏｎのみを残す。このステップは、スコアづけアルゴリズムが適用される前と後に実施されなければならない。
【０４９６】
このステップが２回実施されなければならない理由は、スコアづけプロセスが、多数の参照Ｏｐｔｉｏｎインスタンスを同じ候補Ｏｐｔｉｏｎにマッピングする可能性があるからである。このようなマッピングが生じた場合、ある特定のＰｉｃｋＭａｎｙ  Ｆｅａｔｕｒｅ向けに列挙されたＯｐｔｉｏｎが一意となるように、重複するどのＯｐｔｉｏｎインスタンスも消去する。
【０４９７】
１１．ＰｒｉｎｔＴｉｃｋｅｔに現れない、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに存在するどのＦｅａｔｕｒｅも、ＰｒｉｎｔＴｉｃｋｅｔに追加する。このようなＦｅａｔｕｒｅに対して、デフォルトＯｐｔｉｏｎを、選択されているＯｐｔｉｏｎとして特定する。
【０４９８】
１２．以下の基準をすべて満たすＰａｒａｍｅｔｅｒＤｅｆインスタンスがあるかどうか判定する。
【０４９９】
ＰａｒａｍｅｔｅｒＤｅｆインスタンスが、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに現れるが、ＰｒｉｎｔＴｉｃｋｅｔには現れない。
【０５００】
ＰａｒａｍｅｔｅｒＤｅｆインスタンスのＭａｎｄａｔｏｒｙプロパティが、ＵｎｃｏｎｄｉｔｉｏｎａｌまたはＣｏｎｄｉｔｉｏｎａｌどちらかに設定されている。
【０５０１】
ＰａｒａｍｅｔｅｒＤｅｆインスタンスが、ＯｐｔｉｏｎインスタンスにおいてＰｒｉｎｔＴｉｃｋｅｔ中のＰａｒａｍｅｔｅｒＲｅｆインスタンスによって参照される。
【０５０２】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント中のこのような各ＰａｒａｍｅｔｅｒＤｅｆインスタンスごとに、対応するＰａｒａｍｅｔｅｒＩｎｉｔインスタンスをＰｒｉｎｔＴｉｃｋｅｔに追加する。新たに追加されたＰａｒａｍｅｔｅｒＩｎｉｔインスタンスのＶａｌｕｅを、対応するＰａｒａｍｅｔｅｒＤｅｆインスタンスによって特定されたデフォルトＶａｌｕｅに設定する。
【０５０３】
１３．制約の競合検出を実施し、このようなどの競合も排除するように、コンフィギュレーションを変更する。このトピックでは、制約の競合を解決するのに用いるための具体的なアルゴリズムは定義しない。どのＦｅａｔｕｒｅまたはＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを変えることができるか判定し、ＰｒｉｎｔＴｉｃｋｅｔにおいて特定されたコンフィギュレーションの全体的な意図に対して最も影響が少ない適切なＯｐｔｉｏｎまたはＶａｌｕｅをそれぞれ選択する必要がある。前述したように、各Ｏｐｔｉｏｎのマッピングスコアを使用し、２番目に高いスコアのＯｐｔｉｏｎを使いたいと思う場合がある。どのＦｅａｔｕｒｅまたはＰａｒａｍｅｔｅｒＩｎｉｔを変えるかを決定するために、クライアントがＰｒｉｎｔＴｉｃｋｅｔに追加することができるプライベートＰｒｏｐｅｒｔｙを定義したいと思うかもしれない。このＰｒｏｐｅｒｔｙは、ＦｅａｔｕｒｅおよびＰａｒａｍｅｔｅｒＩｎｉｔインスタンスに対する重要度を定義し、そうすることによって、リゾルバアルゴリズムは、どのＦｅａｔｕｒｅまたはＰａｒａｍｅｔｅｒＩｎｉｔインスタンスがクライアントにとって重要であり（ＰｒｉｎｔＴｉｃｋｅｔに保存される必要がある）、どれがより重要でないかを知らされる。
【０５０４】
１４．制約解決プロセスが、ＰｒｉｎｔＴｉｃｋｅｔを、ＭａｎｄａｔｏｒｙプロパティがＣｏｎｄｉｔｉｏｎａｌに設定されているいずれかのＰａｒａｍｅｔｅｒＲｅｆインスタンスに変更させた場合、現在現れているＰａｒａｍｅｔｅｒＲｅｆインスタンスに対して、デフォルト値をもつＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを追加し、これ以降現れることのないＰａｒａｍｅｔｅｒＲｅｆインスタンスに関しては、どのＰａｒａｍｅｔｅｒＩｎｉｔインスタンスも削除する。
【０５０５】
１５．ＰｒｉｎｔＴｉｃｋｅｔ中のＯｐｔｉｏｎインスタンス内に現れるすべてのＰｒｏｐｅｒｔｙインスタンスおよびその内容を削除する。Ｐｒｏｐｅｒｔｙ要素は、ＰｒｉｎｔＴｉｃｋｅｔにおいて何の役割ももたない。ある特定のＦｅａｔｕｒｅ用の検証済のＯｐｔｉｏｎが、検証済みのＯｐｔｉｏｎに完全に一致する場合、Ｐｒｏｐｅｒｔｙインスタンスの名前空間がＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントに登録されるという条件に合う、そのＯｐｔｉｏｎ中のＰｒｏｐｅｒｔｙおよびＡｔｔｒｉｂｕｔｅインスタンスを、事前検証ＰｒｉｎｔＴｉｃｋｅｔから現在検証されているＰｒｉｎｔＴｉｃｋｅｔにすべて転送する。２つのＯｐｔｉｏｎインスタンスが完全一致とみなされるためには、１つのＯｐｔｉｏｎでみつかった全ＳｃｏｒｅｄＰｒｏｐｅｒｔｙに対して、対応するＳｃｏｒｅｄＰｒｏｐｅｒｔｙが他方のＯｐｔｉｏｎ中にあり、両方のＳｃｏｒｅｄＰｒｏｐｅｒｔｙインスタンスの値が同じでなければならないことに留意されたい。
【０５０６】
１６．自分のＰｒｉｎｔＴｉｃｋｅｔプロバイダが、この時点まで存続したいずれかのプライベートまたはパブリックＰｒｏｐｅｒｔｙインスタンスを認識しサポートする場合、そうしたインスタンスに対して、認証を実施する。この時点で、自分が認識していないという理由だけでＰｒｏｐｅｒｔｙを消去してはならない。Ｐｒｏｐｅｒｔｙは、ドキュメント処理の別のフェーズを対象としている場合がある。
【０５０７】
ＰｒｉｎｔＴｉｃｋｅｔプロバイダに対する追加検討事項
ＰｒｉｎｔＴｉｃｋｅｔプロバイダインターフェースは、既存のＰｒｉｎｔＴｉｃｋｅｔに対して漸進的な変更を行うのに用いることができるメソッドを有する。この漸進的なＰｒｉｎｔＴｉｃｋｅｔ変更は、ＰｒｉｎｔＴｉｃｋｅｔデルタとして知られる部分的ＰｒｉｎｔＴｉｃｋｅｔにおいて指定することができる。改定ＰｒｉｎｔＴｉｃｋｅｔが、ＰｒｉｎｔＴｉｃｋｅｔデルタを既存のＰｒｉｎｔＴｉｃｋｅｔとマージすることによって作成される。ＰｒｉｎｔＴｉｃｋｅｔデルタを伴うメソッドについてのより多くの情報に関しては、発行予定のＰｒｉｎｔＴｉｃｋｅｔプロバイダインターフェースドキュメントを参照されたい。
【０５０８】
ＰｒｉｎｔＴｉｃｋｅｔデルタが処理される際、以下のステップが実施されなければならない。
【０５０９】
１．既存のＰｒｉｎｔＴｉｃｋｅｔ（ターゲットＰｒｉｎｔＴｉｃｋｅｔ）およびＰｒｉｎｔＴｉｃｋｅｔデルタの両方にとって共通のＦｅａｔｕｒｅまたはＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを識別する。
【０５１０】
ターゲットＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＴｉｃｋｅｔデルタの両方にとって共通の各Ｆｅａｔｕｒｅに対して、ターゲットＰｒｉｎｔＴｉｃｋｅｔ中のＦｅａｔｕｒｅを、ＰｒｉｎｔＴｉｃｋｅｔデルタにおける対応するＦｅａｔｕｒｅで置き換える。
【０５１１】
ターゲットＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＴｉｃｋｅｔデルタの両方にとって共通の各ＰａｒａｍｅｔｅｒＩｎｉｔに対して、ターゲットＰｒｉｎｔＴｉｃｋｅｔ中のＰａｒａｍｅｔｅｒＩｎｉｔを、ＰｒｉｎｔＴｉｃｋｅｔデルタ中の対応するＰａｒａｍｅｔｅｒＩｎｉｔで置き換える。
【０５１２】
２．ＰｒｉｎｔＴｉｃｋｅｔデルタ中の、残っているすべてのＦｅａｔｕｒｅおよびＰａｒａｍｅｔｅｒＩｎｉｔインスタンスを、ターゲットＰｒｉｎｔＴｉｃｋｅｔにコピーする。
【０５１３】
３．自分の競合解決アルゴリズムが、ＰｒｉｎｔＴｉｃｋｅｔ自体において重要度を特定させる場合、ＰｒｉｎｔＴｉｃｋｅｔデルタにおいて名づけられたＦｅａｔｕｒｅおよびＰａｒａｍｅｔｅｒＩｎｉｔインスタンスの重要度を上げることを選ぶことができる。
【０５１４】
４．ＰｒｉｎｔＴｉｃｋｅｔ認証チェックリスト中に記述されているように、ＰｒｉｎｔＴｉｃｋｅｔ認証を実施する。
【０５１５】
ＰｒｉｎｔＴｉｃｋｅｔプロバイダインターフェースは、デフォルトＰｒｉｎｔＴｉｃｋｅｔを返す一メソッドを含む。さらに、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダインターフェースは、デフォルトＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメント、つまり、デフォルトＰｒｉｎｔＴｉｃｋｅｔを使って作成されるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのスナップショットを返すメソッドを有する。このようなデフォルトＰｒｉｎｔＴｉｃｋｅｔは、以下のプロセスによって自動的に生成されなければならない。
【０５１６】
ＰｒｉｎｔＴｉｃｋｅｔは、検証された後、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのスナップショットを作成するのに使うことができる。プロバイダは、Ｖａｌｕｅがデバイスコンフィギュレーションに依存するどのＰｒｏｐｅｒｔｙに対しても内部表現をもたなければならない。例えば、ＳｐｏｔＤｉａｍｅｔｅｒが、ＲｅｓｏｌｕｔｉｏｎおよびＭｅｄｉａＴｙｐｅ  Ｆｅａｔｕｒｅの両方に依存するＰｒｏｐｅｒｔｙである場合、ＲｅｓｏｌｕｔｉｏｎおよびＭｅｄｉａＴｙｐｅの様々な値に関連するＳｐｏｔＤｉａｍｅｔｅｒの内部表現は、以下のテーブルにあるように現れ得る。
【０５１７】
【表４４】
2006155611.tif 000046
【０５１８】
この例に対して、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓプロバイダは、与えられたＰｒｉｎｔＴｉｃｋｅｔを使って、内部テーブルから適正なエントリを選択し、このエントリを、ＳｐｏｔＤｉａｍｅｔｅｒプロパティ用のＶａｌｕｅとして報告する。このプロセスは、全多値Ｐｒｏｐｅｒｔｙに対して（Ｖａｌｕｅがコンフィギュレーションに依存する全Ｐｒｏｐｅｒｔｙに対して）繰り返される。ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓスキーマおよびドキュメント構成セクションでは、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓのスナップショット作成に関わる他のステップを説明する。
【０５１９】
デフォルトＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントのスナップショットを作成するために、デフォルトＰｒｉｎｔＴｉｃｋｅｔ（任意のＰｒｉｎｔＴｉｃｋｅｔではなく）を、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントを作成するメソッドに与える。
【０５２０】
ＰｒｉｎｔＴｉｃｋｅｔの例
以下は、ＰｒｉｎｔＴｉｃｋｅｔの例を構成する。デフォルト名前空間は、ＸＭＬ  Ａｔｔｒｉｂｕｔｅには適用されない。こうしたＡｔｔｒｉｂｕｔｅは、明示的に接頭部で修飾されなければならない。この例におけるインスタンス名は、プリントスキーマキーワード草稿ドキュメントにおいて定義される現在のインスタンス名を反映しているが、例示に過ぎない。このＰｒｉｎｔＴｉｃｋｅｔは、特にＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓドキュメントの例によって表される仮定デバイス用に組み立てられる。
【０５２１】
【表４５】
2006155611.tif 000047
【０５２２】
【表４６】
2006155611.tif 000048
【０５２３】
例示的なコンピュータシステム
図１は、上述したプロセスを実装するのに使うことができる例示的なコンピューティングデバイスを示す。コンピューティングデバイス１４２は、処理ユニット１４４、システムメモリ１４６、およびシステムメモリ１４６など様々なシステムコンポーネントを処理ユニット１４４に結合するバス１４８を含む。バス１４８は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、高速グラフィックポート、およびプロセッサまたはローカルバスなどいくつかのタイプのバス構造のいずれかの１つまたは複数を表す。システムメモリ１４６は、ＲＯＭ（読出し専用メモリ）１５０およびＲＡＭ（ランダムアクセスメモリ）１５２を含む。ＢＩＯＳ（基本入出力システム）１５４は、例えば起動中にコンピューティングデバイス１４２内部の要素間の情報の転送を助ける基本ルーチンを含み、ＲＯＭ１５０に格納される。
【０５２４】
コンピューティングデバイス１４２は、ハードディスク（図示せず）からの読出しおよびそこへの書込みを行うハードディスクドライブ１５６、取外し可能磁気ディスク１６０からの読出しおよびそこへの書込みを行う磁気ディスクドライブ１５８、ならびに、例えばＣＤ  ＲＯＭや他の光学媒体などの取外し可能光ディスク１６４からの読出しまたはそこへの書込みを行う光ディスクドライブ１６２をさらに含み得る。ハードディスクドライブ１５６、磁気ディスクドライブ１５８、および光ディスクドライブ１６２は、ＳＣＳＩインターフェース１６６によって、バス１４８に接続される。こうしたドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶をコンピュータ１４２にもたらす。本明細書で説明する例示的な環境は、ハードディスク、取外し可能磁気ディスク１６０、および取外し可能光ディスク１６４を使用するが、コンピュータによってアクセス可能なデータを格納することができる、コンピュータ可読である他のタイプの媒体も、例示的な動作環境において使うことができることを当業者は理解されたい。このような他の型の媒体として、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読出し専用メモリ）なども、例示的な動作環境において使うことができる。
【０５２５】
オペレーティングシステム１７０、１つまたは複数のアプリケーションプログラム１７２（ユーザエージェントやブラウザなど）、他のプログラムモジュール１７４、およびプログラムデータ１７６など、いくつかのプログラムモジュールを、ハードディスク、磁気ディスク１６０、光ディスク１６４、ＲＯＭ１５０、またはＲＡＭ１５２に格納することができる。ユーザは、キーボード１７８などの入力デバイス、およびポインティングデバイス１８０を介して、コマンドおよび情報をコンピュータ１４２に入力することができる。他の入力デバイス（図示せず）は、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどを含み得る。こうしたおよび他の入力デバイスはしばしば、バス１４８に結合されるインターフェース１８２を介して処理ユニット１４４に接続される。モニタ１８４または他のタイプの表示デバイスも、ビデオアダプタ１８６などのインターフェースを介してバス１４８に接続される。モニタに加え、パーソナルコンピュータは通常、他の周辺出力デバイス（図示せず）、例えばスピーカおよびプリンタを含む。
【０５２６】
コンピュータ１４２は一般に、リモートコンピュータ１８８などの１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において動作することができる。リモートコンピュータ１８８は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードでよく、通常、コンピュータ１４２に関連して上述した要素の多くまたはすべてを備える。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１９０およびＷＡＮ（ワイドエリアネットワーク）１９２を備える。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見られる。
【０５２７】
ＬＡＮネットワーク環境において使われる場合、コンピュータ１４２は、ネットワークインターフェースまたはアダプタ１９４を介してローカルネットワークに接続される。ＷＡＮネットワーク環境において使われる場合、コンピュータ１４２は通常、モデム１９６、または、例えばインターネットなどのワイドエリアネットワーク１９２を介した通信を確立する他の手段を含む。モデム１９６は、内部にあっても外部にあってもよく、シリアルポートインターフェース１６８を介してバス１４８に接続される。ネットワーク接続された環境では、パーソナルコンピュータ１４２に関連して図示したプログラムモジュールまたはその一部は、リモートメモリ記憶装置に格納することができる。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使用できることが理解されよう。
【０５２８】
概して、コンピュータ１４２のデータプロセッサは、コンピュータの様々なコンピュータ可読記憶媒体にそれぞれ異なるときに格納された命令を用いてプログラミングされる。プログラムおよびオペレーティングシステムは通常、例えば、フロッピー（登録商標）ディスクまたはＣＤ−ＲＯＭ上に分散される。そうした場所から、コンピュータの補助記憶装置にインストールされ、またはロードされる。実行時は、コンピュータの主要な電子メモリに少なくとも部分的にロードされる。このようなメディアが、マイクロプロセッサまたは他のデータプロセッサとともに説明するブロックを実行する命令またはプログラムを含むとき、本明細書において説明するシステムは、こうしたおよび他の様々なタイプのコンピュータ可読記憶媒体を備える。説明するシステムは、本明細書において説明する方法および技術によってプログラミングされると、コンピュータ自体も備えることができる。
【０５２９】
例示のために、オペレーティングシステムなど、プログラムおよび他の実行可能プログラムコンポーネントを、本明細書では別個のブロックとして示したが、このようなプログラムおよびコンポーネントは、様々なときにコンピュータの異なる記憶コンポーネントに存在し、コンピュータのデータプロセッサ（群）によって実行されることに理解されたい。
【０５３０】
結論
上述した方法およびシステムは、デバイス機能の記述に用いることができる。例示的なスキーマは、アプリケーションとデバイスの間の伝達言語の構成要素となる。一実施形態では、スキーマは、アプリケーション、印刷サブシステムコンポーネント、およびデバイスの間の伝達言語の構成要素となる。スキーマは、スキーマキーワードを使ってある特定のデバイス用にユーザコンフィグレーション可能機能のフルセットを表現するフレームワーク上に構築される。例示し説明した実施形態において、スキーマは、デバイスの機能を表現する際に様々なレベルの精度を可能にする階層構造を使用する。このような表現の一例が、例えば２００４／０３／０５に出願した「Multilevel Ticket-Based Job Management Architecture for Computing Devices」という名称の特許文献１に記載されている。
【０５３１】
以上、構造上の特徴および／または方法におけるステップに特有の言葉で本発明を説明したが、添付の特許請求の範囲において定義される本発明は、説明した特定の特徴にもステップにも必ずしも限定されないことを理解されたい。そうではなく、こうした特定の特徴およびステップは、権利請求される本発明を実装する例示的な形として開示されるものである。
【図面の簡単な説明】
【０５３２】
【図１】説明する実施形態を実施するのに用いることができる、例示的なコンピューティングデバイスを示す図である。
【符号の説明】
【０５３３】
１４４  処理ユニット
１４６  システムメモリ
１４８  バス
１６６  ＳＣＳＩインターフェース
１６８  シリアルポート
１７０  オペレーティングシステム
１７２  アプリケーションプログラム
１７４  他のプログラム
１７６  プログラムデータ
１７８  キーボード
１８２  キーボード／マウスインターフェース
１８６  ビデオアダプタ
１９０  ローカルエリアネットワーク
１９２  ワイドエリアネットワーク
１９４  ネットワークインターフェース
１９６  モデム
【図１】
2006155611.tif 000049