CN1804835A - 多级设备性能分层结构 - Google Patents
多级设备性能分层结构 Download PDFInfo
- Publication number
- CN1804835A CN1804835A CNA2005101248147A CN200510124814A CN1804835A CN 1804835 A CN1804835 A CN 1804835A CN A2005101248147 A CNA2005101248147 A CN A2005101248147A CN 200510124814 A CN200510124814 A CN 200510124814A CN 1804835 A CN1804835 A CN 1804835A
- Authority
- CN
- China
- Prior art keywords
- option
- document
- property
- hierarchy
- performance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1204—Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1205—Improving or facilitating administration, e.g. print management resulting in increased flexibility in print job configuration, e.g. job settings, print requirements, job tickets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1229—Printer resources management or printer maintenance, e.g. device status, power levels
- G06F3/1232—Transmitting printer device capabilities, e.g. upon request or periodically
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1297—Printer code translation, conversion, emulation, compression; Configuration of printer parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/117—Tagging; Marking up; Designating a block; Setting of attributes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
- Input From Keyboards Or The Like (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明描述了用于描述设备性能的方法和系统。提出了示例性的模式,该模式组成了应用程和设备之间的通信语言。该模式是构建在使用模式关键字表示特定设备的用户可配置性能的完整集合的框架上。在所示和所述实施例中,该模式利用分层结构,在表示设备性能中允许不同等级的粒度。
Description
技术领域
本发明涉及用于发现设备性能的方法和系统。
背景技术
发现诸如用户可配置性能等设备性能可便利于设备的使用。例如,如果应用程序能够确定特定硬件或固件设备的性能,那么应用程序和用户应该能够充分利用设备的性能。例如,在打印空间中,如果应用程序能够确定驱动程序和诸如打印机处理器等驱动程序相关组件的性能,应用程序就可以充分利用相关联的打印机。然而,不存在描述设备性能的一致的、开放的和可扩展的方式。而是趋于使用平面的、固定的列表来描述设备性能。描述性能的这种方式具有有限的效用,并且不允许对性能的仔细研究。
相应地,本发明源于关于提供描述诸如设别的设置等设备性能的改进的方法和系统的考虑,并使用对那些性能的描述来更有效地使用设备。
发明内容
描述了描述设备性能的方法和系统。提出了示例性模式,由所述示例性模式组成了应用程序和设备之间的通信语言。模式是基于使用模式关键字来为特定设备表述全套的用户可配置性能的框架构造的。在所示和所描述的实施例中,模式使用分级结构,它在表示诸如设备可用设置等设备性能时允许不同级别的粒度。当接收到设备可用设置的表示后,客户机现在能够选择和使用特定的设备配置。
附图说明
图1是用于实现所述实施例的示例性计算设备。
详细描述
概述
在以下的讨论中,描述了用于描述设备性能的方法和系统。示出了一个示例性模式,该示例性模式组成了应用程序和设备之间的通信语言。该模式是在使用模式关键字表示特定设备的全套用户可配置性能的框架上构造的。在所示和所述的实施例中,模式利用分层结构,它允许此不同等级的粒度表示设备性能。
在随后的讨论中,会在打印系统的环境中描述模式及其使用,所述打印系统包括使用打印模式来向应用程序描述其性能的打印设备。在这些实施例中,模式构成了应用程序、打印子系统组件和设备之间的通信语言。打印系统组件包括(通过示例而非限制)打印机驱动程序以及以及未来的过滤器管道过滤器等。然而,应该理解,该模式及其使用并不只限于打印环境。相应地,模式的原理及其使用可以应用到除打印环境外其他的环境中,而不背离所作权力要求的主题的精神和范围。
在以下的讨论中,在纯文本分层结构的文档中发布或描述设备性能,所述文档被称为“PrintCapabilities”文档。在一个实施例中,分层结构文档包括一XML文档。PrintCapabilities文档包括以打印模式关键字定义的术语和私有扩展。当受到客户机查询时,设备或设备驱动程序生成关于它们当前的可配置选项组的PrintCapabilities文档,所述客户机可以是应用程序或打印子系统。在所述实施例中,PrintCapabilities文档明确地描述设备的所有属性以及每个属性可允许的设置。通过使用打印模式框架,可以精确地描述和有效地比较设备属性。通过使用包含在打印模式关键字文档中的关键字和在打印模式框架中定义的结构,设备可以使得客户机更有效地使用设备性能。
在所示和所述的实施例中,PrintCapabilities文档表示了多层性能的分层结构。在以下所述的特定例子中,描述了三层性能-作业、文档和页面-由XML文档表示。每个层次表示某个打印作业组件并指定如何在PrintTicket中定义设置和在PrintTicket处理中应用设置,以下会对此作出更详细的描述。
首先,在描述PrintCapabilities文档及其使用之前,且为了提供对该讨论的一些背景,在主标题“打印模式”之下描述了PrintCapabilities文档构建于其上的示例性打印模式。该讨论之后,出现在主标题“PrintCapabilities模式和文档构建”之下的是对PrintCapabilities模式和文档的讨论。最后,为了提供如何使用PrintCapabilities文档的例子,在主标题“PrintTicket模式和文档构建”下提供了对使用包含在PrintCapabilities文档中的信息的PrintTicket的讨论。
打印模式
打印模式提供了基于可扩展标记语言(XML)的格式,用于用分层结构方式表示和组织描述作业格式或PrintCapabilities的较大属性组。在所示和所述的实施例中,打印模式是一涵盖性术语,包括两个组件,即打印模式关键字和打印模式框架。打印模式关键字文档是定义一组元素实例的公共模式,所述元素实例用于描述设备属性和打印作业格式。打印模式框架是定义XML元素类型的分层结构集合的公共模式,并指定如何一起使用这些元素类型。
打印模式关键字和打印模式框架形成了两种打印模式相关技术的基础,所述两种打印模式即PrintCapabilities模式和PrintTicket模式。
打印模式的目标之一是供应商能支持模式扩展。即不限制供应商仅使用这些构建于打印模式框架之上的技术中打印模式关键字中定义的特性、特征、选项或ParameterInit实例。而是,可以将供应商专用元素自由地散布在打印模式关键字中定义的元素实例中。唯一的要求是供应商一专用(即私有)特性实例必须属于明确地与供应商相关联的名称空间。
打印模式背景
打印模式旨在解决与打印子系统的组件之间的内部通信和与打印子系统和应用程序之间的外部通信相关联的不透明和不明确的问题。打印模式及其相关技术提供了以统一且合理的方式传递设置和性能的一致的、明确的和可扩展的方法。
打印模式关键字和打印模式框架的概念上的基础是一致的、不模糊的和可扩展的。一致性是通过使用打印模式关键字和打印模式框架作为打印组件之间的通信构建块来达到的。应用程序、Microsoft_Windows_打印子系统和IHV插件程序及驱动程序使用这种通用机制来交互。这些关键字、它们的结构和它们的含义会由公共模式明确定义。这防止了特定关键字含义的模糊性,并防止了冗余或重复的关键字。所有组件可以依赖于使用特定关键字来传送某个意图并且使得接收者能够很好地理解该意图。可扩展性增进了打印模式关键字的长寿命,确保公共模式是动态实体。由于期望将来把私有关键字包含到公共模式中以保持一致性并防止模糊,该结构也允许私有扩展,这给予独立硬件开发商(IHV)自由地进行革新的灵活性。
打印模式相关技术
如上所述,两种基于打印模式构造的相关技术是PrintCapabilities和PrintTicket技术。
PrintCapabilities技术是发布可配置PrintCapabilities的方法。PrintCapabilities在被称为PrintCapabilities文档的纯文本可扩展标记语言(XML)文档中发布,该文档由在打印模式关键字和私有扩展中定义的术语组成。该文档描述了当前设备上可用的所有可配置PrintCapabilities,诸如结束选项和页面布局选项。PrintCapabilities文档明确地描述了设备的所有属性和每个属性所允许的设置。通过使用打印模式框架,可以精确地描述和有效地比较设备属性。通过使用包含在打印模式关键字文档中的关键字以及在打印模式框架中定义的结构,设备可以使得客户机能够更有效地使用PrintCapabilities。
相对于Microsoft_Windows_Server 2003和更早版本中的打印子系统,PrintCapabilities技术允许专户和打印子系统组件透明地查看包含在当前Microsoft Win32_系统二进制PrintCapabilities中的信息。这使得用户能够查询PrintCapabilities、接收一致的和很好理解的XML快照,并使用它来为设备构建PrintTickets而无需调用驱动程序用户界面(UI)。
旨在替代当前DEVMODE结构的使用的PrintTicket技术是指定和坚持作业格式以及设备配置信息的XML方法。一PrintTicket实例是为设备属性分配特定设置和传递用户意向的纯文本XML文档。有两类PrintTickets:一般PrintTickets,对特定设备不会生成一般PrintTickets;以及设备特定PrintTickets,对特定设备构建设备特定PrintTickets。旨在可以在各设备之间移植的一般PrintTickets通过为在打印模式关键字中专门描述的每个设备属性选择设置来获取它们的内容。设备特定PrintTickets从PrintCapabilities文档获取它们的内容,这是通过为由该文档提及的每个设备属性选择设置。PrintTickets也包括特定于一个设备模型或设备模型族的私有扩展。
相对于当前打印子系统,PrintTicket技术使打印子系统的所有组件和客户机能够透明地访问当前存储在DEVMODE结构的公用和私用部分中的使用明确定义的XML格式的信息。这种设计解决了当前在为PrintTicket技术设计的驱动程序中在驱动程序升级或降级和驱动程序不匹配情况下遇到的问题。当前这些情况可以导致丢失设置并因此导致负面的用户经历。PrintTicket也允许了新的情况,诸如允许打印机驱动程序以一致和明确的方式将其私有DEVMODE设置提供给应用程序和定制插件程序。这使得打印组件能够更为透明且能够更清楚地处理设置移植。PrintTicket界面将通过受管理编码对象上的方法提供给应用程序,所述受管理编码对象也会对脚本可用。在基于Microsoft的“Longhorn”中受管理编码对象构建的新的应用程序框架中,PrintTicket是描述文档设置的标准方法。
打印模式中使用的术语
依照一个实施例,以下部分包含特定于打印模式和相关技术的术语。
属性名称是标准可扩展标记语言(XML)属性等号左边的记号。标准的XML属性的表示是<attribute name>=″<attribute value>″。虽然类似,但是术语“attributevalue”不能与打印模式框架中定义的名称属性相混淆。在打印模式框架中定义的名称属性是属性名称的特定实例。
候选者选项是属于在评价过程中评估的列表的任意选项。下面看术语评价或映射选项和参考选项。
术语配置描述了设备可以采取或被置于的状态之一。设备在每个状态中不同地执行其任务。在这些状态的每一个中的设备的表现之间有着明显的和可以辨认的差别。例如,在一个状态中,从一个盘中取出介质并在另一个盘中结束。这些盘中任意一个或两者中的变化确定了不同的状态。
约束是指确定配置的有效性所需的信息。约束通常是以下形式:设置成Optionl的FeatureA与设置成Option2的FeatureB不兼容。
对应元素是指相对于指定的原始元素对具有相同的位置。原始元素通常是进行比较的两个选项元素。
默认选项是指由打印模式或PrintCapabilities供应商指定的选项,当PrintTicket不包含用于一特征的明确设置时该选项被分配给该特征。每个特征具有指定的默认选项。
默认配置属性是指对设备配置的定义有用的设备属性。设备配置属性在打印模式框架中用特征/选项或参数构造来表示。注意这种情况下所使用的属性与XML属性或打印模式框架定义的属性元素无关。
元素类型是指在打印模式框架中定义的每个XML元素的类型并且由其XML元素标记来标识。
共有元素与上述的对应元素意思相同。
特征是指打印模式框架定义的构造,用于表示特定设备配置属性。每个特征实例表示一个设备属性。特征实例是通过明确地定义它的每个状态来定义的。
身份选项是指当选择时没有看得见的效果的选项;实际上是″no-op″(无选项)。不管这个选项被选择几次结果总是相同的。
实例名称是指标识元素类型的特定实例的XML属性。参见以下的名称属性。
界面客户机只是消费PrintCapabilities的文档和构建和消费PrintTickets的实体。界面客户机的通用例子包括用户界面(UI)模块和渲染模块。
界面供应商是指通过界面实现和提供功能的实体。在打印模式中,这等同于创建PrintCapabilities文档和确认PrintTickets。
元素位置是指元素层次中一元素的特定实例的位置。该位置是由特定元素和该元素的所有祖先定义的。换而言之,位置等同于文件系统中的完全限定路径。
名称属性是指给予具有“name”的属性名称的XML属性的名称。该属性出现在打印模式框架中定义的大多数元素类型中。它标识和定义了每种元素类型的实例。以下两个术语是指名称属性:兄弟唯一性规则和命名空间约定。
命名空间约定规定了模式定义的名称属性以及任一模式定义的对象存在于一专用命名空间、公用命名空间中,以及私有定义的名称属性必须存在于不同的名称空间中,所述不同的名称空间可以被标识为属于定义方。
选项是用于表示每种特征可以采取或置于的状态的打印模式框架构造。例如,如果特征表示介质大小,典型的选项值可以是信件、法定、A4等。
参数是由打印模式支持的且描述了用于用户输入的参数化的数据。在参数输入中有三种起作用的打印模式框架元素类型:ParameterDef、ParameterInit和ParameterRef。ParameterDef元素表示参数的特征(其值的范围、其数据的类型以及其他特征)。ParameterInit元素用于初始化参数。ParameterRef元素用于参考ParameterInit元素的一特定实例。
参数化选项是包含至少一个ScoredProperty元素的选项实例,所述ScoredProperty元素包含一ParameterDef元素而非值元素。
完全匹配选项是指如果对于一个选项实例中每个ScoredProperty元素,在其他的选项实例中有对应的ScoredProperty实例,且对应ScoredProperty实例的两个值元素是等价的,那么这两个选项实例被认为是完全匹配的。
PrintCapabilities模式是指定义PrintCapabilities文档所使用的语法和语义的模式。PrintCapabilities模式和PrintTicket模式是打印模式的子集。参见以下打印模式框架。
PrintTicket模式是指定义PrintTicket所使用的语法和语义的模式。PrintTicket模式和PrintCapabilities模式是打印模式的子集。也参见以下打印模式框架。
打印模式框架是指定义打印模式技术所使用的语法和语义的模式。例如,打印模式框架定义的元素类型的集合以及它们的使用,但是没有枚举所有的元素实例。
打印模式关键字是指定义通常用于描述设备和作业格式的特性、特征和选项元素的个体实例。该模式定义了使得PrintCapabilities文档和PrintTickets可移植的通用语言。也被称为公用模式。
私有定义是指出现在PrintCapabilities文档或PrintTickets中没有在打印模式关键字中明确定义的元素的任何实例。这些元素实例必须明确地符合每个供应商的私有名称空间。
参考选项是指将每个候选选项与之作比较的选项。参考选项一般来自PrintTicket。参见术语评价或映射选项以及候选选项。
根层次是打印模式框架的层次结构的基础。根层次元素被定义为PrintCapabilities元素和PrintTicket元素的子元素。
ScoredProperty是用于表示将一个选项实例与另一个相区别的性质的打印模式框架结构。一个例子是信件和法定尺寸纸张的不同。
评价或映射选项是指从列表中选出最好地匹配给定(参考)选项实例的(候选)选项实例的过程。紧密相关的术语是候选选项和参考选项。
兄弟唯一性原则规定了相同元素类型的所有兄弟必须具有唯一的名称属性。一些元素类型可以豁免该规则。这些例外在打印模式框架中定义。
单值相对多值特性是一特性,其值是恒定的(不取决于配置),被认为是单值。这样的特性在任何可能的配置下只有单一的值。取决于配置的特性被认为是多值。
确认指验证PrintTicket符合模式并表示可以由特定设备执行的配置的过程。
打印模式的语法
打印模式使用可扩展标记语言(XML)语法表示。因此,期望读者熟悉XML语法和术语,诸如元素、元素标记、元素内容、属性和名称空间。打印模式框架是由少量元素类型构成的;每种元素类型在构建于打印模式上的技术中为特定目的服务。
元素类型通过它们的XML元素标记来区分。打印模式框架通过为每种元素类型表示哪些元素类型被允许作为子元素而定义了相关技术的全部结构和组织。
许多元素类型是通过名称属性与相同类型的其他元素区分,这在模式中起到重要的作用。名称属性用作标识每个元素类型的实例。打印模式关键字为许多元素类型的名称属性定义了一组值。在多数情况下,供应商可以将它们自己的值分配给名称属性。它们只需要保证这些值是对用供应商唯一的名称空间限定的XML QNames。
元素类型总结
这个部分列出了在打印模式框架中定义的元素类型,用于表示打印模式相关技术。每种元素类型在后续部分中详细描述。这些描述也指定了元素类型可以出现的环境(可以成为给定元素的父元素的元素)以及所允许的元素内容。
属性
属性元素用于以明确定义的方式指定打印模式框架元素的含义。系统使用属性元素来定制它对特性和ScoredProperty元素的处理。属性元素应该仅在打印模式所指示的地方出现,用于完成打印模式指定的目的。
元素标记是“<Attribute>”,其XML属性如下:名称保存属性的名称。打印模式关键字文档定义了每个标准属性的目的以及它可以出现的特定环境。只允许在打印模式关键字中定义的属性名称。注意打印模式关键字文档的当前版本不定义任何属性名称;传播确定属性元素可以在其中出现的导出文档。当前没有为该可扩展标记语言(XML)属性定义的值。
以下表格列出了可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | 属性AttributeSet(属性集)特性ScoredProperty(评价特性) |
子元素 | 属性(大于等于0)值(大于等于0) |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
属性元素可以不具有任何配置相关性。以下例子示出一属性元素。<Attribute name=″myAttr″>
<Value xsi:type=″string″>Sample</Value></Attribute>
AttributeSet(属性集)
AttributeSet元素允许一个或多个属性元素参考相同的属性元素集,由此避免对属性元素不必要的重复。单个特性元素可以参考单个属性元素以及多个AttributeSet元素。如果属性的定义允许它被覆盖且属性被多重定义,那么优先的是单个属性元素覆盖AttributeSet元素,且在每种类型中(类型:单个属性或AttributeSet元素),首先出现的属性元素具有较高的优先权。
元素标记是“<AttributeSet>”且其XML属性如下:名称定义了当前文档的环境内唯一的名称。AttributeSetRef元素用于参考特定的AttributeSet元素。重复的AttributeSet名称使得PrintC apabilities文档或PrintTicket无效。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | PrintCapabilities(打印性能)PrintTicket(打印标签) |
子元素 | 属性(一个或多个) |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
AttributeSet元素可以不具有任何配置相关性。以下例子示出了包含两个属性元素myAttr1和myAttr2的AttriSuteSet元素。<AttributeSet name=″myAttrSet″>
<Attribute name=″myAttr1″>
<Value xsi:type=″string″>Samplel</Value>
</Attribute>
<Attribute name=″myAttr2″>
<Value xsi:type=″float″>123.4</Value>
</Attribute></AttributeSet>
AttributeSetRef
AttributeSetRef元素允许属性元素参考包含在AttributeSet中的一组属性元素,消除了对属性元素作为子元素直接驻留在特性中的要求。这允许由多个属性元素共享一组属性元素。
元素标记是“<AttributeSetRef>”,其XML属性如下:名称指定了在当前文档的环境内要参考的AttributeSet元素的名称属性。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | 特性ScoredProperty(评价特性) |
子元素 | 不允许。 |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
AttributeSet元素可以不具有任何配置相关性。以下例子示出了包含AttributeSetRef元素的特性元素。<Property name=″myProperty″>
<AttributeSetRef name=″myAttrSet″/></Property>
特征
特征元素包含选项和特性元素的完整列表,完整地描述了设备属性、作业格式、设置或其他相关特征。其元素标记是“<Feature>”,其XML属性如下:名称持有特征的名称,标准特征或私有定义特征。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | PrintCapabilities(打印性能)特征 |
子元素 | 以下组之一:特征(大于等于0)选项(大于等于0)特性(大于等于0)或特征(大于等于0)选项(大于等于0)特性(大于等于0) |
该元素 | 不允许字符数据。允许重复的作为兄弟的子选项元素。允许重复的名称属性快捷方式。 |
特征元素可以不具有任何配置相关性。其使用的一个例子如下: <Feature name=″Collate″>
<Property name=″SelectionType″>
<Value xsi:type=″string″>PickOne</Value>
</Property>
<!--指定自动分页.-->
<Option name=″Collate″/>
<!--指定不自动分页.-->
<Option name=″Uncollated″>
<Property name=″IdentityOption″>
<Value xsi:type=″string″>True</Value>
</Property>
</Option></Feature>
选项
选项元素包含所有与该选项相关联的特性和ScoredProperty元素。其元素标记是“<Option>”,其XML属性如下:约束表示选项对选择或使用是否可用。该可扩展标记语言(XML)属性可以被设置成以下值之一:无(none)表示选项不受约束;PrintTicketSettings表示选项受到PrintTicket设置的约束;AdminSettings表示选项受到管理员的设置的约束——它不能由用户启用;DeviceSettings表示选项受到设备设置或物理安装的设备选项约束。该属性对于PrititCapabilities文档是可选的。名称属性包含选项的名称。注意这是名称为OptionName的ScoredProperty的快捷方式。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | 特征 |
子元素 | 特性(大于等于0)ScoredProperty(评价特性)(大于等于0) |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
选项定义元素可以不具有任何配置相关性。以下例子定义了包含名称为OptionName的ScoredProperty元素的选项元素。ScoredProperty元素的值是“Letterl信件’”。<Option>
<ScoredProperty name=″OptionName″>
<Value xsi:type=″string″>Letter</Value>
</ScoredProperty></Option>
以下定义使用了为选项定义名称的快捷方式,但是在功能上等同于先前的例子。<Option name=”Letter″/>
ParameterDef
ParameterDef定义参数化输入的有效特征。该值是通过ParameterInit元素输入的。元素标记是“<ParameterDef>”,其XML属性如下:名称定义了当前文档的环境内唯一的名称。重复的ParameterDef名称属性使得PrintCapabilities无效。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | PrintCapabilities(打印性能) |
子元素 | 特性(大于等于0)以下标准属性元素必须作为ParameterDef元素的内容出现。DataType(数据类型)DefaultValue(默认值)InitializerSrc* |
Mandatory(强制)MaxLength或MaxValue(最大长度或最大值)MinLength或MinValue(最小长度或最小值)Multiple(多种)UnitType(单位类型) | |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
为在“Longhorn”中不支持。在“Longhorn”之后的操作系统版本中,PrintCapabilities和PrintTicket供应商必须能够处理这个特性。
ParameterDef及其到任何嵌套层的内容可以不具有任何配置相关性。
以下例子为这个参数设置了所有需要的属性元素。ParameterInit中的例子示出了如何初始化这个参数。<ParameterDef name=″CopyCount″>
<Property name=″DataType″>
<Value xsi:type=″string″>integer</Value></Property>
<Property name=″DefaultValue″>
<Value xsi:type=″integer″>1</Value></Property>
<Property name=″Mandatory″>
<Value xsi:type=″string″>Unconditional</Value></Property>
<Property name=″MaxValue″><!--device dependent-->
<Value xsi:type=″integer″>999</Value></Property>
<Property name=″MinValue″>
<Value xsi:type=″integer″>1</Value></Property>
<Property name=″Multiple″>
<Value xsi:type=″integer″>1</Value></Property>
<Property name=″UnitType″>
<Value xsi:type=″string″>Copies</Value></Property></ParameterDef>
ParameterInit
为ParameterDef元素的实例定义了值。ParameterInit元素是ParameterDef元素作出的参考的目标。其元素标记是“<ParameterInit>”,其XML属性如下:名称持有要在当前文档的环境下初始化的ParameterDef元素的名称属性。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | PrintTicket(PrintTicket根部) |
子元素 | 值(大于等于0) |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
这里没有配置相关性。以下例子将参数初始化为3。ParameterDef中的例子示出了如何为该参数设置所有所需的属性元素。<ParameterInit name=″CopyCount″>3</ParameterInit>
ParameterRef
ParameterRef元素定义对ParameterInit元素的参考。包含ParameterRef的ScoredProperty元素不具有明确设置的值元素。而是,ScoredProperty元素从ParameterRef元素参考的ParameterInit元素接收其值。它的元素标记是“<ParameterRef>”,其XML属性如下:名称持有在当前文档的环境中参考的ParameterDef元素的名称属性。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | ScoredProperty(评价特性) |
子元素 | 不允许。 |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
ParameterRef元素可以不具有任何配置相关性。以下例子示出了如何使用ParameterRef元素使得用户能够输入定制介质大小参数。<Option name=″CustomMediaSize″>
<ScoredProperty name=″psk:MediaSizeX″>
<ParameterRef name=″PageMediaSizeMediaSizeX″/>
</ScoredProperty>
<ScoredProperty name=″psk:MediaSizeY″>
<ParameterRef name=″PageMediaSizeMediaSizeY″/>
</ScoredProperty>
<Property name=″psk:FeedOrientation″>
<Value xsi:type=″xs:string″>ShortEdgeFirst</Value>
</Property></Option>
PrintCapabilities
PrintCapabilities元素表示PrintCapabilities文档的根部。给定特定的设备配置,PrintCapabilities文档包含描述所支持的设备属性所需的所有信息。它的元素标记是“<PrintCapabilities>”,其XML属性如下:版本指定了定义元素类型和它们的结构的模式的版本。版本属性的类型是整数。当前模式版本被指定为“1”。这个属性是所需的。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | 仅文档根。 |
子元素 | AttributeSet(属性集)(大于等于0)特征(大于等于0)ParameterDef(大于等于0)特性(大于等于0) |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
根元素可以不具有任何配置相关性。使用例子,参见以下PrintCapabilities文档示例。
PrintTicket
PrintTicket元素是PrintTicket文档的根元素。PrintTicket元素包含输出作业所需的所有作业格式信息。它的元素标记是“<PrintTicket>”,其XML属性如下:版本指定了定义元素类型和它们的结构的模式的版本,文字类型是整数。当前模式版本为“1”。这个属性是所需的。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | 仅文档根。 |
子元素 | AttributeSet(属性集)(大于等于0)特征(大于等于0)ParameterInit大于等于0)特性(大于等于0) |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
配置相关性只可应用到PrintCapabilities文档中的元素。举例参见以下PrintTicket示例。
特性
属性元素声明了由其名称属性给定名称的设备、作业格式以及其他相关特性。值元素用于将值分配给特性。
特性可以是复合的,可能包含多个子特性。子特性也可以由属性元素表示。它的元素标记是“<Property>”,其XML属性如下:名称持有特性的名称属性,可以是标准特性或私有定义的特性。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | PrintCapabilities(打印性能)Feature(特征)PrintTicket(打印票)Option(选项)ParameterDefProperty(特性)ScoredProperty(评价特性) |
子元素 | 系统不会向元素的排序分配重要性。如果用户选择要在元素的排序中归属一些重要性,他们能够自由地那么做。属性(0或更多私有属性,0标准属性)AttributeSetRef(大于等于0)特性(大于等于0)值(大于等于0) |
该元素 | 不允许字符数据。允许重复的子兄弟。 |
特性可以具有配置相关性,除了它在ParameterDef元素中出现的时候。其使用的例子如下:
Declare a Property named ModelName with a Value of″HP 1200C″.(使用值″HP 1200C″来声明名称为ModelName的特性。 <Property name=″ModelName″>
<Value xsi:type=″string″>HP 1200C</Value>
</Property>
ScoredProperty
ScoredProperty元素声明选项定义本质的特性。当评价所请求的选项如何紧密地匹配设备支持选项时,应该比较这样的特性。它的元素标记是“<ScoredProperty>”,其XML属性如下:名称持有ScoredProperty的名称属性,可以是标准特性或私有定义的特性。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | 选项ScoredProperty(评价特性) |
子元素 | 属性(大于等于0,0标准属性)AttributeSetRef(大于等于0)或是ParameterRef或是值特性(大于等于0)ScoredProperty(评价特性)(大于等于0) |
该元素 | 不允许字符数据。不允许重复的子兄弟。 |
ScoredProperty元素可以不具有任何配置相关性。其使用的例子如下:
Declare a ScoredProperty element named MediaSizeX with a Value of 11.(使用值11来声明名称为MediaSizeX的ScoredProperty元素。)<ScoredProperty name=″MediaSize″>
<Value xsi:type=″integer″>11</Value></ScoredProperty>
值
值元素将文字与类型相关联。它的元素标记是“<Value>”,其XML属性如下:xsi:类型(xsi:type)指定了值的数据类型,它必须是以下XSD定义的类型之一:字符串、整数、十进制、QName。如果没有,那默认数据类型是字符串。
以下表格列出可以成为该元素的父元素的元素、可以成为该元素的子元素的元素以及对元素自身的任何限制。
种类 | 细节 |
父元素 | AttributePropertyScoredProperty(属性特性评价特性) |
子元素 | 仅允许字符内容。 |
该元素 | 允许空内容。字符内容必须符合由数据类型定义的语法。不允许重复的子兄弟。 |
出现在ScoredPropert和属性元素中的值元素可以不具有任何配置相关性。出现在属性元素中的值元素对于配置可以具有任意的相关性。其使用的例子如下:
Define a Value of type decimal and initialize it to″128.5″.(将值的类型定义为十进制,并将其初始化为″128.5″。)<Value xsi:type=″decimal″>128.5</Value>
打印模式框架
这个部分提供了打印模式元素类型的含义和使用更为详细的信息。打印模式框架最初版本的主要是为了表示设备属性的配置和性能。在高层,这个框架提供了两种描述设备属性的不同风格:特征/选项结构或参数结构。如果设备属性具有较小数量的可用值或状态,那么应该将属性描述为具有所允许的称为选项元素的值或状态的特征。相反,如果设备属性具有较大数量的可用值或状态,且可以简单定义所用有能值的集合而无需采用明确的枚举,那么应该将设备属性描述为参数。(使用ParameterDef元素定义参数,并使用ParameterInit元素初始化参数实例。)在特征/选项和参数结构中使用特性和属性元素以便提供较好的差异水平。
特征/选项结构
在特征/选项表示中,设备属性由特征元素来表示。设备属性由设备属性的特征元素中的名称属性来唯一地标识,如下例。在这个例子中,设备属性是分辨率(Resolution)。
<Feature name=″Resolution″></Feature>
打印模式为某些特征实例定义一组名称属性。这些名称属性用于标识一组与特定可配置设备属性相关联的、预定义的特征实例。只要可应用,就应该使用这些特征实例名称,因为它们增加了从它们获取的PrintCapabilities文档和PrintTickets的可移植性。如果某些设备属性不对应于任意模式定义的特征实例,就可以引入私有定义的特征实例。对于关于名称属性的语法和应用到模式定义和私有定义名称的约定的信息,参见以下XML属性。
由选项元素表示每个可能的状态。每个选项定义包含一个或多个ScoredProperty元素,它们共同地用来唯一地描述或刻画所表示的状态。用于创建选项定义的技术在选项元素中描述。与特定特征元素相关联的所有选项元素作为特征元素的子元素。
对于子特征,考虑以下描述。打印模式框架也允许以层次结构将特征元素聚集到一起。即,特征元素自身可以包含一个或多个子特征元素(子特征)。这对于组织相关特征元素或对于控制设备特征的各方面的特征元素而言是有用的。一个例子是支持装订的设备。这样的设备可以向用户提供选择在哪里定位装订,诸如在左上角或者在右上角,或者沿着上边或沿着左边。这个设备的用户界面(UI)应该首先能够向用户呈现最高层的选择,在这里的情况下为是否使用装订。只有当用户决定使用装订后,才向他或她呈现第二层的选择,装订位置。特征层次增加了其他的结构,使得可能实现这样的用户界面。打印模式框架允许子特征拥有它们自己的子孙子特征,由此允许不限制层的嵌套。
打印模式框架也允许选项元素出现在子特征的相同层次上;即,作为具有相同父特征元素的兄弟。这允许用户在作出子特征选择之前作出高层决策(是否使用装订)。对于这个例子的根特征元素“装订”可能包含两个选项元素“On”和“Off”以及名称为“StapleLocation”的子特征。
选项元素
选择元素的目的是刻画由特征元素表示的设备配置属性可以采取的状态之一。每个选项元素定义包含一个或多个描述该选项的本质或基本特征的ScoredProperty元素。为了便于移植和保存意向,打印模式定义了许多通用的特征元素和每个特征的多种选项元素。因此,如果可以的话,在创建自己的选项定义之前使用打印模式定义的选项元素是重要的。理解定义选项元素的过程提供了对于在“Longhorn”打印框架中使用PrintCapabilities文档和PrintTickets的方式的有用的洞察。
打印模式定义了在许多特征元素的选项定义中广泛使用的特殊ScoredProperty元素。这个ScoredProperty元素的名称属性是OptionName。在其最简单的形式中,该ScoredProperty仅持有单值元素,其xsi:类型属性被模式定义为QName。不存在其他的子元素。因为选项名称特性的这个简单形式是如此广泛的被使用,打印模式框架提供了特殊的快捷符号。选项名称可以被指定为选项元素中的名称属性。如果选项定义仅包含单个ScoredProperty,这个快捷方式可以大大地减少选项定义的冗长。举例而言,选项定义可以用常规语法如下表示:<Option>
<ScoredProperty name=″OptionName″>
<Value xsi:type=″QName″>LetterExtra</Value>
</ScoredProperty></Option>
先前的选项定义也可以用以下简写符号表示。<Option name=″LetterExtra″/>
这个简写符号具有以下限制:
●该简写符号只能用于其名称属性为″OptionName″的ScoredProperty元素。
●ScoredProperty元素必须作为选项元素的子元素(而非其他后代)存在。
●ScoredProperty元素不能包含除了单个值元素之外的任何子元素。
●在值元素中指定的xsi:类型必须是QName。
简写符号可以用于OptionName特性,即使选项定义包含其他ScoredProperty元素。
参数结构
参数通过简明地描述值的可接收范围而非值的离散列举来补足特征/选项构造。打印模式框架定义了特定于参数的三个元素:ParameterDef元素描述参数及其特征,ParameterInit元素为参数定义特定实例或值,以及ParameterRef元素是指在其他地方定义的特定ParameterInit元素。
ParameterDef元素与ParameterInit元素的不同在于前者描述了ParameterInit可以包含的值,而ParameterInit元素将值分配给参数。ParameterDef元素由属性元素的特定组和其他信息组成,所述属性元素的特定组是ParameterDef元素的子元素,指定了数据的数据类型、最大值、最小值以及默认值。这些属性元素将在下文中讨论。
ParameterDef元素可以仅出现在它们允许的情况下。对于打印模式的初始版本,它们可以位于PrintCapabilities文档的根层次处。ParameterDef元素的名称属性定义了参数名称。PrintCapabilities文档中的每个ParameterDef元素必须被分配唯一的名称属性。
参数名称的含义是通用的;即如果一个PrintCapabilities文档中的ParameterDef元素与另一个PrintCapabilities文档中的ParameterDef元素具有相同的名称属性(从名称空间和ParameterDef元素的描述性名称形成的字符串),就设想这些元素度表示相同的概念并且应该以相同的方式翻译。因此,在PrintTicket中为一个PrintCapabilities文档定义的ParameterDef元素可以用于初始化在不同的PrintCapabilities文档中定义的相同名称的ParameterInit元素。
因为所有的名称属性都是真的,参数名称是可扩展标记语言(XML)QName的形式。模式定义的参数结构具有用公用名称空间限定的名称,形成了名称属性,而私有定义的参数结构的名称属性用创建者而言唯一的私有名称空间限定。
在打印模式关键字中定义的ParameterDef元素必须在PrintCapabilities文档中完整定义。打印模式关键字文档为ParameterDef元素的一些属性元素提供了公称的值(诸如DefaultValue及其它),但是PrintCapabilities文档的创建者负责定义剩余的属性元素。在任一情况下,必须在ParameterDef元素中明确地定义所有的属性元素,包括那些在打印模式关键字中定义的。
出现在打印模式关键字中的每个ParameterDef元素的某些属性元素被指定为恒定的。这意味着打印模式关键字定义的ParameterDef元素的所有PrintCapabilities文档定义必须保存这些属性元素而无修改。这些恒定的属性元素允许参数结构可以跨所有PrintCapabilities文档移植并且是明确的。一主要的例子是在ParameterDef元素中使用的单位。这些单位应该是恒定的,以便促使对它们的含义的一致的理解。被指定为非恒定的ParameterDef的属性元素会在PrintCapabilities文档中重新定义。
ParameterDef元素是由以下属性元素组成的。除非另外指出,所有的都必须出现。
属性名称 | 值 | 描述 | 恒定? |
DataType(数据类型) | 整数十进制字符串无默认值 | 指定参数值是否为整数或浮点数或文本字符串。参数的值以对应的XSD基本数据类型相同的格式来表示;即整数、十进制或字符串。 | 是 |
DefaultValue(默认值) | 由DataType特性指定类型。没有默认值。 | 指定初始化用户界面(UI)控制所使用的值。或者如果相关参数元素从PrintTicket丢失,指定要使用的值。 | 否 |
InitializerSrc | ″Longhorn″的打印子系统不使用这个特性。PrintCapabilities或PrintTicket供应商必须能够在″Longhorn″以后的操作系统中处理这个特性。 | 指定用于初始化参数的值的来源。 | 否 |
Mandatory | 无条件:必须总是提供 | 指示何时ParameterInit元素必 | 否 |
(强制) | ParameterInit元素。条件:只有在PrintTicket的选项元素中参考该参数时才需要ParameterInit元素。默认值:有条件。 | 须明确地出现。如果有条件,当PrintTicket包含参考该参数的选项时必须初始化ParameterInit。由UI客户机和PrintCapabilities或PrintTicket供应商使用。注意在任一约束下,ParameterDef元素的强制特性必须被设置成无条件。ParameterDef必须具有定义的值,否则不能评估相关值或约束。 | |
MaxLength(最大长度) | 如果DataType特性指定字符串,就为整数。默认值:无强制最大值。 | 对于字符串值参数,指定所允许的最长字符串。UI和PrintCapabilities或PrintTicket供应商使用这个特性来确认ParameterDef元素。 | 否 |
MaxValue(最大值) | 如果DataType特性指定整数,就为整数。如果DataType特性指定十进制,就为十进制。默认值:无强制最大值。 | 对于整数或十进制值的ParameterDef元素,定义所允许的最大值。 | 否 |
MinLength(最小长度) | 如果DataType特性指定字符串,就为整数。默认值:无强制最小值。 | 对于字符串值,定义所允许的最短字符串。UI和PrintCapabilities或PrintTicket供应商使用这个特性来确认ParameterDef元素。 | 否 |
MinValue(最小值) | 如果DataType特性指定整数,就为整数。 | 对于整数或十进制值的参数,定义所允许的最小值。 | 否 |
如果DataType特性指定十进制,就为十进制。默认值:无强制最小值。 | |||
Multiple(倍数) | 如果DataType特性指定整数,就为整数。如果DataType特性指定十进制,就为十进制。默认值:1 | 对于整数或十进制值的参数,参数的值应该是这个数的倍数。如需更多信息,参见本表格之后的关于倍数的注解。 | 否 |
UnitType(单位类型) | 字符串值,指示用于该参数的单位。没有默认值。 | 表示其中表示参数的单位。举例而言,用十分之一的度数表示的角度、用微米表示的长度等等。 | 是 |
对于具有整数或十进制值的ParameterInit元素,ParameterInit的值应该是这个数的倍数。例如,十进制值的ParameterInit元素可以通过将这个特性设置为0.1来将其限制为十分之一。当UI元素构建对话或UI控制时使用这个特性。此外,PrintTicket确认码可以使用这个特性来将ParameterInit的值四舍五入到由倍数表示的最近值。注意:设备驱动程序和PrintCapabilities供应商不应该设想ParameterInit值是这个特性值的倍数。每个供应商必须能够将任意值四舍五入到最近的可用值,这是由于不同的供应商会为该特性指定不同的或冲突的值的可能性。
ParameterRef元素明确地应用到选项元素,允许该选项元素参考特定的ParameterDef元素的能力。对于这些选项元素,描述选项性质的ScoredProperty元素不是在PrintCapabilities文档中硬编码的值,而是变量。为了允许这个可变性,这些ScoredProperty元素包含一ParameterRef元素。ScoredProperty元素可能不包含值元素和ParameterRef元素。包含一个或多个ParameterRef元素的选项元素被称为参数化的选项元素。
打印模式框架允许选项元素包含任意数量的参考参数元素的ScoredProperty元素以及任意数量的包含值元素的ScoredProperty元素。该框架也允许任意数量的属性元素包含参数化的选项元素,并且对于每个特征元素允许任意数量的参数化的选项元素。同样地,可以由几个不同的选项元素参考相同的参数结构,这些选项元素可以属于相同或不同的特征元素。
属性元素
除了出现在特征和选项元素之内以外,属性元素可以出现在各自基础技术的根层次处。打印模式以可移植方式定义可用于描述设备的一组属性元素。然而,如果这些特性对于作为PrintCapabilities供应商的需要不够(一般是因为所支持的设备具有打印模式未预期的新颖方面),可以引入自己的私有属性元素。可以通过增加一个或多个私有子特性作为公用特性的元素内容来增加和加工由公用特性提供的信息。
使用可扩展标记语言(XML)元素标记<Property>来定义属性元素。每个特性通过其名称属性被分配一名称。该名称必须是XML QName且必须符合名称空间规则。详情参见XML属性。特性名称属性以及它在父属性元素的层次中的位置(如果它是子特性)唯一地标识PrintCapabilities文档或PrintTicket内的特性。
特性可以包含一个或多个值元素、或一个或多个子属性元素(称为子特性)或两者的组合。当特性自身是由多个组件组成时,子特性是有用的。例如″ConsumableColor″特性可能具有″C″、″M″和″Y″组件。
属性元素也可以包含属性元素,这引导系统处理特性数据。没有为打印模式框架的初始版本定义的属性元素。
属性、AttributeSet(属性集)和AttributeSetRef元素
本标题讨论属性元素和两种相关元素类型:AttributeSet(属性组)和AttributeSetRef元素。
不允许PrintCapabilities或PrintTicket文档的供应商定义属性实例;只允许打印模式可以这么做。因为打印模式的当前版本(主要版本“1”)不定义任何属性实例,所以在任何版本“1”的PrintCapabilities或PrintTicket文档中也不应该出现。打印模式关键字将来的版本可能会定义属性实例。提及这个使得现在写的PrintCapabilities和PrintTicket确认例程处理将来可能包含属性元素的PrintCapabilities文档或PrintTicket时,它们将正确地工作。元素类型的总结描述属性元素的语法和用法。注意属性元素是可扩展标记语言(XML)元素,不应将它们与XML属性相混淆,这在XML属性中讨论。
AttributeSet元素是在各自基础技术(PrintCapabilities文档或PrintTicket)的根层次处定义的一个或多个属性元素的集合。打印模式关键字或私有方可以定义这个元素类型的实例。从可以是属性元素的父元素的任何元素中能参考AttributeSet。
AttributeSetRef元素用作对AttributeSet实例的参考。这是通过对AttributeSetRef使用与相应的AttributeSet元素相同的名称属性来完成的。打印模式框架将对AttributeSet元素的参考定义为等价于出现在AttributeSetRef元素自身位置中的AttributeSet的内容。如果PrintCapabilities文档的消费者支持或访问属性元素,他们必须能够支持这个“macro expansion(宏扩展)”。
AttributeSet元素必须出现在根层次处。必须通过AttributeSet的名称属性给出AttributeSet一名称。Namespace约定应用到名称属性,如同兄弟唯一性规则(在打印模式中使用的术语中定义)。组成AttributeSet的属性实例作为AttributeSet实例的内容出现。
值元素
值元素会出现在特性、ScroedProperty或属性元素中。值元素的目的是表示出一标准可扩展标记语言(XML)数据类型的值。该数据类型被指定为值元素的XML属性,xsi:类型。注意不是所有的XSD定义的或XML-定义的类型都是支持的。关于所支持类型的列表,参见元素类型的总结。值元素可以只含有字符内容。没有其他东西可以作为内容出现在值元素中。
一些打印模式定义的特性、ScoredProperty和属性元素不含有值元素,因为它们的目的只是成为子特性的父特性。因为这些特性不含有值元素,不应该对这样的特性加上值元素。
为了符合打印模式框架,它要求在支持值的元素中出现值元素或子元素,应该通过将值元素示为空元素来表示空或未定义的值;即,<Value></Value>。
打印模式关键字中定义的对象和名称
打印模式框架定义包括在打印模式关键字中定义的元素和可扩展标记语言(XML)属性的名称空间。这包括诸如特征、选项和ScoredProperty等元素;诸如名称和传播等属性名称;以及诸如约束等XML属性的值。换而言之,在打印模式关键字中定义的名称的每种使用应该明确地符合这个名称空间,或通过应该使用默认的xmlns属性隐含地与这个名称空间相关联。打印模式关键字文档定义可能出现在任何给定情况或位置的公共元素实例。元素实例必须仅出现在打印模式框架中指定的情况或位置中。例如在打印模式关键字中定义的<Option name=″Letter″>实例必须出现在<Feature name=″MediaSize″>实例(也在打印模式关键字中定义)中。没有将给定的选项实例在其指定情况外使用的自由。
对于私有定义的元素实例,只要元素类型出现在打印模式框架允许的情况中,它们可以出现在任何地方。
XML属性
在打印模式框架中定义的几个元素类型中出现多个可扩展标记语言(XML)属性。具有相同名称的XML属性通常具有相同的含义并遵守相同的规则,不管它们驻留在哪个元素类型中。因此,这里按名称而非它们的宿主元素类型列出XML属性。不允许私有定义的XML属性。只有在这里定义的XML属性才能用在PrintCapabilities文档或PrintTicket中,并且只能用在定义的情况下。
虽然不允许私有方将新的定义引入到另一方的名称空间,但是允许他们利用来自另一私有名称空间的现有名称,只要其使用符合另一方建立的用法。因此选项会包含由几个不同方定义的ScoredProperty元素,每个驻留在不同的名称空间中。
属性名称 | 数据类型和值 | 目的 |
name(名称) | XML QName参见表格之后的关于名称属性的注释。 | 该XML属性标识出元素实例。它将一个元素与另一个相同元素类型的元素区分开。该XML属性被如此广泛地使用使得它被称为名称属 |
性。限制列表,参见表格之后的关于名称属性的注释。 | ||
propagate(传播) | 枚举没有当前定义的值。 | 在打印模式框架的初始版本中不使用传播属性。将它在此归档可以使得为打印模式框架的初始版本实现的PrintCapabilities或PrintTicket确认代码将能够无误地处理将来的模式版本。 |
constrained(约束) | 枚举允许的值:无(None)PrintTicketSettings(打印票设置)AdmnSettings(管理设置)DeviceSettings(设备设置) | 表示选项是否对选择或使用可用。更多信息,参见表格之后的关于名称属性的注释。 |
xmlns | URI | 该XML属性建立了名称空间统一资源标识符(URI)和出现在XMLQName中的名称空间前缀之间的连接。在能够使用任何框架定义的元素标记、属性、名称属性等之前必须建立到为打印模式框架定义的 |
名称空间URI的这样的连接。可以声明该名称空间为默认以避免实际上要求元素标记带有名称空间前缀,虽然所有其他的QName必须明确地限定。标准名称空间必须在适当的根元素中定义。遵守所有的关于xmlns属性的使用的XML规则和约定。 |
以下要点关于名称属性。
名称属性必须是有效的XML定义的QName的形式。即,它必须由有效的XML名称空间来限定。作为名称属性的值出现的QName必须明确地用名称空间限定即使定义了默认的名称空间。
字符内容必须是有效的XML定义的QName。
私有定义的名称必须用唯一地与引入名称属性方相关联的名称空间来限定。
兄弟唯一性要求:没有属于相同元素类型的两个兄弟元素具有相同的名称属性。唯一的例外是选项元素,其中名称属性实际上是以OptionName为名称的ScoredProperty的语法上的简写。这个多兄弟选项元素可以具有相同的名称属性。
以下元素类型可以含有名称属性:属性、AttributeSet、特性、ScroedProperty、ParameterDef、选项和特征。
要求名称属性出现在包含它们的每个元素类型中,除了选项元素,其中它们是可选的。
PrintCapabilities和PrintTicket供应商和客户机可能希望在执行进一步的处理之前,将选项元素中的名称属性快捷方式扩展到完全表示。这简化了实现。
约束属性所允许的值具有以下含义。注意这些值是顺序排列的,从最少的限制(无)到最多限制(DeviceSettings(设备设置)):无(None)意为选项不受约束;PrintTicketSettings意为选项受到PrintTicket设置的约束。这意味着改变配置可以删除约束;AdminSettings意为选项受到管理员设置的约束;该选项不能由用户启动;DeviceSettings意为选项受到设备设置或物理安装的设备选项的限制;该选项不能由用户或管理员启动。
当PrintCapabilities供应商报告约束属性的值时,应该报告所找到的最多限制性的约束。例如,如果选项同时受到管理员设置和设备设置的限制,那么PrintCapabilities供应商应该报告DeviceSettings。
打印模式关键字
以下部分描述打印模式关键字,它被分为以下几个部分:PrintCapabilities和PrintTicket。PrintCapabilities部分包含以下子部分:用户可配置元素、管理员可配置元素、设备信息和参数定义。
PrintCapabilities
以下描述了旨在使得最终用户可以通过客户机用户界面(UI)配置的PrintCapabilities元素。应该理解以下例子只是组成例子,可以使用与以下讨论的那些元素不同或附加的其他元素,而不背离本发明的精神和范围。
DeviceInputBins
描述了设备中安装的输入箱以及设备所支持的输入箱的完整列表。
DeviceOutputBins
描述了设备中安装的输出箱以及设备所支持的输出箱的完整列表。
DevicePageProtection
描述设备是否会作出保护以防止页面太大不适合存储器。
DocumentBannerSheet
描述标题页。每个文档会有独立的一页。
DocumentBinding
描述装订的方式。每个文档是独立装订的。
DocumentCollate
描述输出的分页特征。每个文档都会独立分页。
DocumentCoverBack
描述后面的(结束)封面页。每个文档有独立的一页。
DocumentCoverFront
描述前面的(开始)封面页。每个文档有独立的一页。
DocumentDuplex
描述输出的双面特征。每个文档是独立分成双面。
DocumentHolePunch
描述输出的打洞特征。每个文档是独立打洞的。
DocumentNUp
描述将多个逻辑页输出到单个的物理页。每个文档独立地编辑。
DocumentPageRanges
用页描述文档的输出范围。
DocumentRollCut
描述卷纸的切割方法。每个文档是独立处理的。
DocumentSeparatorSheet
描述文档的分隔页。
DocumentStaple
描述输出的装订特征。每个文档是独立装订的。
JobAccountingSheet
描述核算页。整个文档有一页。
JobBannerSheet
描述标题页。整个作业有一页。
JobBinding
描述装订方法。所有文档一起装订。
JobCollate
描述输出的分页特征。整个作业会被分页为一单元。
JobCoverBack
描述后面的(结束)封面页。整个作业有一页。
JobCoverFront
描述前面的(开始)封面页。整个作业有一页。
JobDatatype
指定用于发送作业到打印子系统的数据格式。
JobDeviceLanguage
描述所支持的设备语言。
JobDuplex
描述输出的双面特征。所有文档是一起分成双面的。
JobErrorSheet
描述错误页输出。整个作业会有一错误页。
JobHolePunch
描述输出的打洞特征。所有文档一起打洞。
JobInputBins
描述了设备中安装的输入箱以及设备所支持的输入箱的完整列表。
JobNUp
描述将多个逻辑页输出到单个的物理页。所有文档一起编辑。
JobOutputBins
描述了设备中安装的输出箱以及设备所支持的输出箱的完整列表。
JobOutputOptimization
描述旨在为特定使用情况优化输出的作业处理。
JobPageOrder
为作业定义页面的顺序。
JobPageStreaming
描述作业的流化特征。为整个作业使用单个页面流。
JobRollCut
描述卷纸的切割方法。作业中的所有文档是同样处理的。
JobStaple
描述输出的装订特征。所有文档是一起装订的。
PageBorderless
描述页面的无边界特征。
PageCanvasSize
描述排版和渲染的图形画布。这会基于PageMediaSize和PageOrientation来报告。
PageCompression
描述用于压缩输出的压缩算法。
PageDeviceFontSubstitution
描述设备字体替代的允许/不允许状态。
PageForceFrontSide
强制输出出现在介质页的前面。关于介质纸在每一面上具有不同的表面。
PageMediaColor
描述MediaColor选项和每个选项的特征。
PageMediaSize
描述用于输出的MediaSize。
PageMediaType
描述MediaType选项和每个选项的特征。
PageMirrorImage
描述输出的镜像设置。
PageNegativeImage
描述输出的画片设置。
PageOrientation
描述介质页的方向。
PageOutputColor
描述输出的颜色设置。
PageOutputQuality
描述输出的质量。
PagePhotoPrintingIntent
向驱动程序指示高层意向以填充照片打印设置。
PagePoster
描述将单页输出到多个物理介质页。
PageResolution
描述输出分辨率。
PageScaling
描述输出的缩放特征。
PageTrueTypeFontMode
描述要使用的TrueType字体处理的方法。
PageWatermark
描述输出的水印设置和水印特征。
以下描述了旨在由打印队列的管理员可配置的PrintCapabilities元素。
DeviceComment
指定对设备显示的注释(例如″Device down until 1:00P.M.formaintenance″(设备到下午1:00关闭用于维护))
DeviceDescription
特定设备的描述。
DeviceHostName
指定设备的主机名称(如果可应用)。
DeviceLocation
指定设备的描述位置。
DeviceName
指定设备的描述名称。
以下描述了将有关设备的信息报告给客户机的PrintCapabilities元素,但是是只读的。
DeviceBiDi
描述设备的BiDi性能。
DeviceCompatibleIDs
指定与设备兼容的ID列表。
DeviceFallbackURI
如果指定的设备不可用,指定默认设备后退。
DeviceFirmwareVersion
指定设备的固件版本。
DeviceID
指定设备的唯一的ID。
DeviceIP
指定设备的IP地址(如果可应用)。
DeviceManufacturer
指定设备的制造商。
DeviceMaxJobSizeAllowed
指定可以发送给设备的最大作业大小。
DeviceMediaSize
描述设备的介质大小性能。
DeviceMemory
指定设备存储器的详情。
DeviceModelName
指定设备的制造商的模型名称。
DeviceMonitorEnvironment
指定监视器被设计用作的操作系统环境。
DeviceMonitorID
指定监视器的唯一的ID。
DeviceMonitorName
指定设备的监视器名称。
DevicePnPID
指定设备的即插即用ID。
DevicePortID
指定端口的唯一的ID。
DevicePortType
描述设备端口类型。
DevicePrintRate
指定当前打印速度性能。
DevicePrintSchemaVersion
指定设备所支持的最高打印模式版本。
DevicePSMemory
指定PostSeript使用的设备存储器的详情。
DeviceSerialNumber
指定设备的制造商的序列号。
DeviceTechnology
指定设备支持的输出技术的列表。
DeviceType
指定设备的通用类型。
DeviceTypeFunction
指定设备的通用类型。
DeviceURI
指定设备的URI,如果可应用。
以下是PrintCpabilities所参考的参数列表。
DocumentBannerSheetSource
指定定制标题页的来源。
DocumentCopyCount
指定文档拷贝的数目。
DocumentCoverBackSource
指定定制反面封面页的来源。
DocumentCoverFrontSource
指定定制正面封面页的来源。
JobAccountUsername
指定作业应该属于的帐户信息的用户名称。例如,这可以是某个组的所有成员使用的通用帐户,即市场人员都使用相同帐户。
JobBannerSheetSource
指定定制标题页的来源。
JobComment
指定与作业相关的注释。例如:″Please deliver to room 1234 whencompleted″.(诸完成后送到1234房间。)
JobCopyCount
指定作业拷贝的数目。
JobCoverBackSource
指定定制反面封面页的来源。
JobCoverFrontSource
指定定制正面封面页的来源。
JobErrorSheetSource
指定定制错误页的来源。
JobOwnerUsername
指定与打印作业相关联的用户名称。这通常是发起作业的用户,且可能或可能不对应于JobAccountUsername。
JobPageStreamingPagesPerSubset
为页面流化指定每个子集的页。
JobPriority
为作业指定用数字表示的优先级。1是最高优先级,而255是最低优先级。
PageCopyCount
指定作业拷贝的数目。
PageMediaColorCIELabA
指定定制MediaColor选项的CIELab红-绿值。
PageMediaColorCIELabB
指定定制MediaColor选项的CIELab黄一篮值。
PageMediaColorCIELabL
指定定制MediaColor选项的CIELab亮度值。
PageMediaSizeMediaSizeX
指定定制MeidaSize选项的维MediaSizeX方向。
PageMediaSizeMediaSizeY
指定定制MeidaSize选项的维MediaSizeY方向。
PageMediaSizePSHeight
指定页面的高度,平行于进纸方向。
PageMediaSizePSHeightOffset
指定偏移量,平行于进纸方向。
PageMediaSizePSOrientation
指定与进纸方向相关的方向。
PageMediaSizePSWidth
指定垂直于进纸方向的页面宽度。
PageMediaSizePSWidthOffset
指定垂直于进纸方向的偏移量。
PageScalingScaleX
指定用于定制缩放的CanvasSizeX方向上的缩放偏移量。
PageScalingScaleY
指定用于定制缩放的CanvasSizeY方向上的缩放偏移量.
PageScalingScale
指定用于定制方形缩放的缩放因子。
PageScalingScaleX
指定用于定制缩放的CanvasSizeX方向上的缩放因子。
PageScalingScaleY
指定用于定制缩放的CanvasSizeY方向上的缩放因子。
PageWatermarkOriginX
指定与PageCanvasSize的原点相关的水印的原点。
PageWatermarkOriginY
指定与PageCanvasSize的原点相关的水印的原点。
PageWatermarkSizeX
指定与PageCanvasSize X方向相关的水印的尺寸。
PageWatermarkSizeY
指定与PageCanvasSize Y方向相关的水印的尺寸。
PageWatermarkTextAngle
指定与PageCanvasSize X方向相关的水印文本的角度。
PageWatermarkTextText
指定水印的文本。
PrintTicket
以下示出了旨在使得最终用户能够通过客户机UI配置的PrintTicket元素。PrintTicket元素也包括上述的所有PrintCapabilities元素。简洁起见,这里不再描述那些元素。
DocumentID
指定文档的唯一的ID。
DocumentName
指定文档的描述名称。
DocumentURI
指定文档的URI。
JobID
指定作业的唯一的ID。
JobName
指定作业的描述名称。
JobURI
指定文档的URI。
PrintCapabilities模式和文档结构
一些系统能够严格地限制非驱动程序组件可以获取关于打印设备性能和特性的信息的类型。此外,许多系统不支持发布打印处理器的性能,也没有方法可以枚举非标准特征。因此,除了驱动程序外组件不能构造完整的用户界面。此外,客户机或应用程序不能完整地确定设备或打印队列的性能。
PrintCapabilities模式旨在通过提供这些功能提供的功能超集来消除许多这样的限制。如果需要更多的功能,PrintCapabilities文档的供应商可以通过在打印模式框架限制内增加私有定义的元素实例来扩展打印模式关键字。因为它依赖于可扩展标记语言(XML)作为交换的中介,PrintCapabilities文档的任何消费者能够无限制地访问文档中的所有数据,而无需考虑于不同操作系统版本的兼容性。这个部分描述了PrintCapabilities模式并详述了其使用。
这个部分中描述的信息可以被以下各方利用:PrintTicket/PrintCapabilities供应商界面的实施者、PrintCapabilities 的消费者以及PrintTicket/PrintCapabilities供应商界面的客户机。
在先前段落中的第一类被称为这个部分的其余部分中的PrintCapabilities供应商。第二和第三类被称为PrintCapabilities消费者。
PrintCapabilities和PrintTicket模式都是打印模式的专门部分。打印模式的这些子集之间的主要结构差异是PrintCapabilities模式包括不包含在PrintTicket模式中的特性和ParameterDef实例,而PrintTicket模式包含不包含在PrintCapabilities模式中特性和ParameterInit实例。除了这些差异,PrintCapabilities和PrintTicket模式通常在内容上互相镜像,共享特征、选项、ScoredProperty和值实例。任何这样的共享内容必须保持最新。例如,如果在PrintCapabilities模式中的MediaSize特征中作出改变,那么必须在PrintTicket模式中作出相同的改变。
PrintCapabilities概述
PrintCapabilities描述了设备上可用的可配置设备属性。由PrintCapabilities描述的设备通常可以置于多种不同的配置中。在打印设备的情况下,典型的打印属性包括双面打印、分辨率和介质尺寸。如果设备支持这些属性,它们是该设备的配置的一部分。用户通过将特定的值分配给每个可用属性来选择特定的配置;例如,双面:单面,分辨率:600dpi且MediaSize:法定。
PrintCapabilities构建在打印模式框架之上,所述打印模式框架定义了可以在PrintCapabilities中使用的元素。打印模式关键字定义了通常使用的元素层次或关键字,以便提高个体客户机之间信息和意向的可移植性。然而,打印模式关键字也允许私有扩展,这样使得PrintCapabilities能够被修改成符合特定的要求。
设备的配置空间是可以被分配给所有设备属性的所有可能值的集合。在PrintCapabilities中描述设备的配置空间的两个最重要的原因如下。
信息对增进对设备性能的理解起到了重要的作用。这个信息使得PrintCapabilities的客户机生成用户界面(UI)元素变得简单,这使得最终用户选择特定的配置来处理作业变得简单。通过向应用程序并最终向最终用户提供设备性能的更多详情,用户的打印意向可以得到更为有效的实现。
PrintCapabilities出现的某些设备特性会取决于客户机所选的特定配置。
有些信息不应该包含到PrintCapabilities中。这包括不影响作业创建方式、不对作业创建方式强加约束、另外也不会影响设备特性的信息。举例而言,设备会能够报告状态信息,诸如等待处理的作业组。这个信息对格式化作业所需的信息没有影响,它也不会对设备中的可用性能提供任何指示。因此,这类信息无需出现在PrintCapabilities中。
由于对设备的约束,许多设备不支持配置空间中的所有可能的配置。例如,可以约束设备不能在透明介质进行双面打印。约束可以表示物理限制:一些介质类型因为过硬而不能通过设备中某些纸张路径,因此不能将它们置于某些输入槽或者不能将它们发送到一些输出箱。当前,确认输入PrintTicket表示的配置是PrintCapabilities或PrintTicket供应商的责任,检验它不表示无效的配置。如果配置无效,那么PrintCapabilities或PrintTicket供应商应该修改该配置使得它有效。
PrintCapabilities描述的设备可能具有取决于设备的状态或配置的特性。例如,如果设备是打印机,那么SamplePrintRate特性可能具有取决于选择彩色还是单色或是否选择双面的值。虽然PrintCapabilities表示了设备的完整的配置空间,PrintCapabilities供应商生成PrintCapabilities的配置相关实例,称为PrintCapabilities文档。这个配置相关PrintCapabilities文档避免使得PrintCapabilities模式负担表示多值数据的复杂性。更重要的是,为了减轻PrintCapabilities文档的消费者从多值数据表示中提取适当的值的负担,要求PrintCapabilities文档中所有的特性和ScoredProperty实例都是单值的。换而言之,相对于输入配置,PrintCapabilities文档中的每个特性和ScoredProperty实例都必须具有一固定值。每个PrintCapabilities文档可以被想象成当设备处于特定状态中设备特性的快照。因此,在构建PrintCapabilities文档之前,必须提供所使用的配置。
PrintCapabilities文档的创建者定义组成配置的设备属性。在PrintCapabilities文档中,创建者可以选择将设备属性表示为特征/选项结构或参数结构。
如果设备属性具有不落入任何种类的明显模式的相对少量的可能状态,特征/选项结构通常是较好的选择。例如,如果MediaSize设备属性所允许的值是值信件、法定、A4ISO、文摘和信封10,特征/选项结构将会是用于表示的较好选择。参数结构不适用于MediaSize属性,因为与在没有明确的枚举的情况下表示所允许的值相关联的困难与不明确性。
如果设备属性可以由整数范围表示,那么参数表示通常是更好的选择,尤其对于包含许多值的范围。例如,如果打印机的特定模型的CopyCount设备属性的范围是l到99999,那么应该通过定义ParameterDef实例将这个属性归类为参数。将值分配给ParameterDef元素的MinValue和MaxValue标准特性实例来定义CopyCount属性的值的范围。特征/选项表示不适用于CopyCount设备属性,因为必须将大量的值明确地列为选项元素。
PrintCapabilities旨在将可配置设备属性表示为特征/选项结构或参数结构。这个信息定义了设备的配置空间,并且可以被用户界面(UI)客户机用于构建UI。打印模式关键字定义了一组标准特征实例、用于标准特征实例的选项实例和ParameterDef实例。
PrintCapabilities中的特征/选项或参数结构旨在持有描述设备并受到假脱机子系统支持的特性或ScoredProperty实例。这些特性和ScoredProperty实例通常是设备的客户机感兴趣的,并包含由Microsoft_Win32_DevCaps功能提供的信息。打印模式关键字定义了一组标准特性和ScoredProperty实例。
应该强调PrintCapabilities文档旨在表示单值数据:不取决于设备的特定配置的数据。PrintCapabilities文档仅提供配置相关数据的快照。
PrintCapabilities模式中的配置相关性
就所使用的元素和由父和子元素表示的通用结构而言,PrintCapabilities模式基本类似于打印模式。特定地关于PrintCapabilities的配置相关性在这里列为通用框架的扩展。配置相关性涉及以下事实:作为配置相关性的结果,一些元素包括它们的内容可以被改变,甚至可以从一个PrintCapabilities文档中删除至下一个。即使要求父元素独立于配置,其子元素可能具有相关性。这种相关性使用在GPD文件的*Switch/*Case结构表示。
作为配置相关性的例子,考虑与PrintCapabilities文档中每个特性相关的值。每个PrintCapabilities文档可以在所定义的特性实例和分配给那些特性实例的值实例上不同。
元素类型 | 配置相关性 |
属性AttributeReference(属性参考)AttributeSet(属性集)PrintCapabilities(打印性能)特征PrintTicket(打印票)选项ParameterInitParameterRef特性ScoredProperty | 这些元素必须没有配置相关性。 |
(评价特性) | |
ParameterDef | ParameterDef元素和包含在它们中的任一嵌套层中的元素必须没有配置相关性。 |
Property(特性) | 属性元素可以具有配置相关性,除了它们出现在ParameterDef元素中的时候。 |
Value(值) | 出现在ScoredProperty或属性元素中值元素必须没有配置相关性。出现在属性元素中的值元素可以具有任意的配置相关性。 |
PrintCapabilities文档构建清单
元素类型总结讨论了组成PrintCapabilities文档的各个元素。这个部分提供了PrintCapabilities文档的创建者可以用来创建描述设备的PrintCapabilities文档的清单。
标识出所有对设备配置起作用的设备属性。对于每个这样的设备属性,确定它是否应该表示成特征/选项结构或参数结构。
对于每个设备特性,确定它是否可以用打印模式关键字中定义的特征来表示。如果不能,需要引入新的私有定义的特征(和相应的名称属性)。
对于打印模式关键字定义的特征实例,标识出这个特征可以设置成的每个可用状态。确定这些状态中的哪些对应于与这个特征相关联的打印模式定义的选项实例,以及哪些状态需要定制的选项实例。选项定义主题提出了如何构建新的选项实例和如何从现有选项实例获取新的选项实例的信息。
对于非标准特征实例,标识出可以用于将一个选项与另一个相区分的特征。用ScoredProperty元素表示这些特征并在每个选项实例中分配给每个ScoredProperty一特定于该选项的值。确保有足够的ScoredProperty元素,使得给定特征的每一个选项都是唯一的。非标准特征和选项实例由它们的性质决定是不可移植的。即,另一个驱动程序将不能找到任何等价的特征或选项,来匹配一个驱动程序创建的PrintTicket中指定的非标准特性或选项。
确定是否任一选项必须包含ParameterRef元素。更多信息,参见参数结构和参数参考元素。
方便起见,可以使用OptionName ScoredProperty的简写符号。注意,该简写表示不受到兄弟唯一性规则的支配,所述兄弟唯一性规则应用于其他名称属性。
对于参数,确定打印模式关键字中定义的ParameterDef实例之一是否充分匹配。如果是,从打印模式关键字中拷贝ParameterDef实例并将每个可变特性实例的值调整到最佳匹配。如果在打印模式关键字中没有一个ParameterDef实例是充分匹配的,就创建自己的ParameterDef实例。更多信息,参见PrintCapabilities文档中的参数。
确保打印模式关键字文档所需的所有特性和ScoredProperty实例都出现在PrintCapabilities文档中,且它们被适当地初始化。
在需要时增加其他特性和子特性实例。如果打印模式关键字中定义的特性实例没有包含需要表述的设备某些方面的特征,那么可以引入私有定义的特性实例。
遵守名称属性的名称空间约定。这应用于私有定义的名称属性以及那些在打印模式关键字中定义的属性。
注意无论是否是快照,所报告的特性、选项和ParameterDef实例组不能改变。组成每个选项实例的ScoredProperty实例和分配给每个ScoredProperty元素的值也不能改变。这对于组成每个ParameterDef实例的特性实例也一样。
必须提供以便完整地定义特征/选项结构和参数的其他特性实例的列表,见ParameterDef和ParameterInit。举例而言,每个特征必须指定其使用界面(UI)动作,特别是一次可以准确地为每个特征选择一个或多个选项实例。打印模式关键字文档定义这些特性实例,它们必须出现在PrintCapabilities文档的哪个位置以及在打印模式关键字中定义的哪个值实例是可用的。
PrintCapabilities供应商负责为所有配置相关特性实例发放适当的值。例如,如果打印速度取决于所使用的色彩模式和分辨率,那么PrintCapabilities供应商必须注意在客户机提供的PrintTicket中指定的色彩模式和分辨率,并且必须报告打印速度的适当值。注意每个ScoredProperty实例必须是单值的-当设备配置改变时,其值实例不能改变。
也要注意在打印模式关键字中定义的特性实例必须出现在那里指定的位置。它们不能出现在PrintCapabilities文档中的任意位置。私有定义的特性实例可以出现在任何位置,甚至作为模式定义的特性实例中的子特性。
PrintCapabilities模式的详述
该部分描述包含在应用到PrintCapabilities模式中的打印模式框架中元素类型的语义和用法。
特征/选项和参数结构用在PrintCapabilities文档中以便表示对设备配置的定义起作用的设备属性。对于特征/选项结构的例子,考虑能够在几种分辨率下打印的打印设备。定义分辨率的设备属性可以表示为特征实例,每个可能的输出分辨率值表示为单个选项实例。一个选项实例可以表示300dpi的分辨率,另一个可以表示600dpi的分辨率等等。
应该注意打印模式要求在每个PrintCapabilities文档中报告的特征、选项和ParameterDef实例的列表必须保持不变,与配置无关。这样可以明确地表示配置以及配置的相关性。这个要求的含义是每个特征和子特征必须具有明确定义的设置,不管任何其他的特征和子特征的设置。因此,每个子特征必须具有等价于no-op(关闭、禁用或无设置)的选项,当用户选择父特征中的no-op选项时会自动地选择所有子特征。因此,当子特征之一被设置成启用选项时,也启用了父特征和其他相关子特征。同时,PrintTicket供应商必须确保(在PrintTicket确认期间)不管设备配置如何为所有特征和子特征实例定义了设置,且该子特征设置与父特征设置一致。这确保不会给设备不一致的PrintTicket,例如其中一些子特征指示启用装订,而其他子特征指示禁用装订。
注意不要求PrintCapabilities创建者利用特征元素的嵌套性能。如果期望,它们可以在平坦结构中表示所有的特征实例,彼此之间如同兄弟。也要注意特征实例的嵌套集合可以通过将所有的子特征移到根层次来简单地使其变得扁平。唯一要注意的必须采用这个来确保这些特征实例的名称属性是唯一的。
定义选项时主要考虑的是要采用这样的方式,使得它可以有目的地与包含在相同特征中其他选项实例作比较。比较必须是有目的的,因为选项实例用于定义配置-不仅是设备的配置,也是作业的配置-而无关用于创建配置的设备或PrintCapabilities。特征中其他选项实例可以出现在相同的PrintCapabilities文档中或表示不同设备的另一个PrintCapabilities文档中,由独立工作的另一方定义的PrintCapabilities文档。在客户机选择用于渲染作业或文档的设备配置后,一般将该配置与作业或文档以PrintTicket的形式保存下来。PrintTicket包含一组选项实例,一般对于每个在PrintCapabilities文档中定义的特征为一个实例。选项实例必须是可移植的且必须保留打印意图,这样使得当将这个PrintTicket给到另一个设备时可以传递该意图,所述不同的设备甚至可以具有由不同创建者所写的不同的PrintCapabilities文档。这个可移植性的主要好处在于如果不同的设备不是特定地支持包含在PrintTicket中的选项,那么设备驱动程序或子系统能够标识和选择在功能上最接近的选项。
驱动程序的主要PrintTicket的功能之一是标识PrintCapabilities文档中的最接近地匹配PrintTicket中所列的特定选项的设备选项。在这个匹配或评价过程中,PrintTicket中的选项被称为参考选项,而PrintCapabilities文档中的选项被称为候选选项。通用匹配度量是候选和参考选项实例中匹配ScoredProperty实例的数目;较大数目的匹配通常表示对打印意图较好的保存。在评价算法时,会选择给一些ScoredProperty元素比别的元素更高的权数。
可以通过确保属于相同特征的所有选项实例具有一个或多个共同的ScoredProperty元素以使得选项实例可移植。这意味着在每个选项实例(属于相同的特征)中有一组ScoredProperty元素。例如,如果每个选项实例包含定义了本质MediaSize特性(MediaSizeX、MediaSizeY和FeedOrientation)的ScoredProperty元素,MediaSize特征的选项实例可以是可移植的。设备驱动程序和子系统编码于是可以通过比较ScoredProperty值之间的差异来确定两个选项实例有多么接近。如果在PrintCapabilities文档中没有选项完全匹配PrintTicket中的一个选项,那么设备驱动程序可以简单地确定和选择最接近地匹配介质尺寸的选项。
如果满足以下三个条件,就说两个对象(在这种情况下为选项实例)具有共同的元素或等价地具有相应的元素。
1.两个元素具有相同的元素类型。
2.两个元素的名称属性是相同的(或两个元素都没有名称属性)。
3.向上经过考虑中的两个对象的作比较的元素的父元素的链必须满足条件1和2。
例如,考虑以下情况:有两个选项实例,每个包含-ScoredProperty实例,这些ScoredProperty实例的每一个包含一特性实例。明显地,满足了第一个条件(两个特性实例是相同的类型),部分满足了第三个条件(特性实例的父元素具有相同的类型、ScoredProperty,且那些元素的父元素也是相同类型的选项实例。)如果特性实例各自的名称属性、ScoredProperty实例以及选项实例是相同的或没有提供,那么这两个选项实例具有相同的元素。
如上所述,创建选项实例的第一步是定义一组出现在多数或全部选项实例中的ScoredProperty元素。如果可以用标准特征(打印模式关键字中列出的)表示设备配置属性,将共同的ScoredProperty元素记录在标准选项实例中。应该确保引入的任一新选项实例也包含这些ScoredProperty元素。总是可以在需要时自由地增加其他ScoredProperty元素,用于将选项实例与标准选项实例相区分。如果有好的理由,甚至可以删除一个或多个共同的ScoredProperty元素,虽然这会降低这样的选项的可移植性。当然,移植性考虑建议使用未经修改的标准选项实例,除非在你的选项和标准选项实例之间存在某些本质的差别,必须反映在新的选项实例中。
以下例子示出了可能希望向选项实例增加ScoredProperty元素的情况。MediaSize特征的所有标准选项实例具有共同的MediaSizeX和MediaSizeYScoredProperty元素。假设通过通过横向(LongEdgeFirst)或纵向(ShortEdgeFirst)进纸,设备可以支持一种标准信纸介质尺寸。假设不希望引入新的进纸方向特征以开放这种程度的自由,可以替代地修改信件的两个MediaSize选项实例来包含进纸方向。对于这两个信件选项实例,以标准MediaSize选项实例开始,并增加新的ScoredProperty元素以表示FeedOrientation。在一个选项实例中,将FeedOrientation ScoredProperty设置成LongEdgeFirst;在另一个选项实例中,将FeedOrientation设置成ShortEdgeFirst。注意这些新的选项实例维持了它们的可移植性。如果选项表示信纸,ShortEdgeFirst被保存到PrintTicket,只支持信纸标准选项的不同设备被选择以渲染作业,选项匹配编码可以快速地确定该标准选项信件最佳地匹配选项信件ShortEdgeFirst。这是最佳匹配的原因在于所有的ScoredProperty实例一致,例外是不存在于信件标准选项中的FeedOrientationScoredProperty。
也可能碰到这样的情况:对选项的修改实际上很大程度上改变了其意义,使得经修改的选项不再能被视为原选项的特定情况。在这种情况下,应该改变选项的OptionName ScoredProperty以便反映出经修改和未经修改的选项实例之间的区别。只有特定设备的PrintCapabilities文档的创建者可以确定设备提供的选项是否与标准选项实例充分地不同以至于批准不兼容的定义。
现在考虑设备具有不对应于任一标准特征实例的设备配置属性的情况。在这种情况下,不能依赖于标准选项实例来提供共同ScoredProperty元素列表。当创建ScoredProperty实例时,主要目的是区分特征中的每个选项与其他选项,并描述用户为何要选择一个选项而非另一个。基线是使用唯一的名称属性来表述每个选项的特征,持有该名称属性的ScoredProperty用于确定公共元素。
在建立了一组公共元素之后,将适当的值分配给每个ScoredProperty以便创建每个选项是简单的。如先前的例子,对于某些选项实例,可能需要增加另外的ScoredProperty实例或删除一些公共的元素来创建合适的选顶实例。
应该注意打印模式要求ScoredProperty实例组、它们的位置和分配给选项中每个ScoredProperty的值必须保持不变,而与配置无关。打印模式的整个概念依赖于选项实例具有固定的、可以确认的特性和在许多设备之间共享的ScoredProperty实例。
注意并不限制增加ScoredProperty实例作为选项实例的子元素。ScoredProperty实例也可以在其他ScoredProperty实例中嵌套。当设备特性是复合的且最好是有多个子特性表示时,这是有用的。向现有(或公共)特性或ScoredProperty增加子特性在保持现有选项实例的可移植性的同时增强选项的好方法。例如MediaType特征的标准选项实例包含ScoredProperty,描述介质的重量:轻、中、重或超重。如果期望对重量更为精确的描述,那么可以增加包含介质的100页纸的实际重量(克)的子特性(在以下例子中为GramsPer100Shets(每100张值的克数))。增强选项可以如以下例子。<Option name=″psk:Bond″>
<ScoredProperty name=″psk:BackCoating″>
<Value xsi:type=″xs:string″>None</Value>
</ScoredProperty>
<ScoredProperty name=″psk:FrontCoating″>
<Value xsi:type=″xs:string″>None</Value>
</ScoredProperty>
<ScoredProperty name=″psk:Material″>
<Value xsi:type=″xs:string″>Paper</Value>
</ScoredProperty>
<!--注意:下面的ScoredProperty不是打印模式关键字之一-->
<!--在此包括要为了说明.-->
<ScoredProperty name=″MediaWeight″>
<Value xsi:type=″string″>Medium</Value>
<ScoredProperty name=″GramsPer100Sheets″>
<Value xsi:type=″decimal″>109.5</Value>
</ScoredProperty>
</ScoredProperty>
<!--其它Property/ScoredProperty实例-->
</Option>
将原始和增强实例的比较产生了几乎完全匹配,因为增强的选项时原始选项的超集,且保持了每个原始ScoredProperty实例的位置和值。
包括ParameterRef原始的选项的具体例子是定制介质尺寸选项。注意它参考两个参数:PageMediaSizeMediaSizeX和PageMediaSizeMediaSizeY。每个ParameterRef实例参考在PrintCapabilities文档中其他地方定义的ParameterDef实例。关于ParameterDef元素的信息,参见ParameterDef。有关定义参数的概念上的信息,参见ParameterDef和ParameterInit元素。<Option name=″CustomMediaSize″>
<ScoredProperty name=″psk:MediaSizeX″>
<ParameterRef name=″PageMediaSizeMediaSizeX″/>
</ScoredProperty>
<ScoredProperty name=″psk:MediaSizeY″>
<ParameterRef name=″PageMediaSizeMediaSizeY″/>
</ScoredProperty>
<Property name=″psk:FeedOrientation″>
<Value xsi:type=″xs:string″>ShortEdgeFirst</Value>
</Property>
</Option>
仅创建参数化的选项不足以确保选项会被正确处理。PrintCapabilities/PrintTicket供应商和客户机必须提供其他支持以便适当地实现参数化的选项实例。所需动作在以下部分中描述。
假设正在创建PrintCapabilities客户机,这些客户机在PrintCapabilities文档中阅读,从每个特征中选择一个或多个选项并使用它们来构建指定用于处理作业的配置的PrintTicket。对于每个感兴趣的特征,客户机必须检查每个选项并确定该选项是否适合当前的任务。对于未经参数化的选项,可以通过访问每个ScoredProperty的值来评估它。在非经参数化的介质尺寸选项的情况下,客户机确定在每个选项中报告的介质的X和Y尺寸是否与所需尺寸相匹配。
在经参数化的选项的情况下,客户机必须访问包含在一个ScoredProperty实例中的ParameterRef实例中指示的ParameterDef实例。ParameterDef通常定义参数所允许的值的范围以及值所示的单位(英寸、毫米等)。如果所需尺寸落入每个参数所允许的值的范围内,那么客户机就有另外的任务,即初始化PrintTicket中的参数(通过ParameterInit实例)。这是特别重要的任务。例如,PrintTicket不应该指定定制介质尺寸而不指定介质的尺寸,因为所得的PrintTicket会是含糊的和不清楚的。
如果客户机是用户界面,必须处理一组类似的情况。用户界面通常显示为每个选项定义的ScoredProperty实例的值。清楚起见,必须显示参数化选项中参数的所允许的范围和单位。此外,如果用户选择了参数化选项,那么用户界面必须提示用户输入值用于初始化每个参数。最后,UI必须编写PrintTicket,以反映所有的用户选择。
PrintCapabilities和PrintTicket供应商必须在PrintTicket确认处理期间正确地处理参数化的选项实例。如在选项定义中所述,在PrintTicket确认中执行的一个步骤是找出当前设备的PrintCapabilities文档(候选选项)中最佳地匹配在PrintTicket(参考选项)中指定选项的选项。当一个或两个选项实例都被参数化了,有三种情况必须通过评价算法来处理:一种情况是有两个选项实例都被参数化,两种情况是一个选项被参数化而另一个未被参数化。在以下情况中,假设在PrintTicketOption中的参数化的ScoredProperty实例与PrintCapabilitiesOption中的特定ScoredProperty之间有对应关系。如果没有对应关系,那么评价算法可以用它处理任意其他非对应ScoredProperty实例相同的方式来对待这些ScoredProperty实例。
情况1-参数化的PrintTicket和PrintCapabilities文档选项
在这种情况下,参考选项(PrintTicket中)和候选选项(PrintCapabilities文档中)都被参数化。访问候选选项参考的ParameterDef实例(都在PrintCapabilities文档中),并确定在PrintTicket指定的ParameterInit值是否落入ParameterDef实例允许的范围。如果是,就认为这个ScoredProperty是匹配的。否则,这个ScoredProperty是不匹配的。
情况2-参数化的PrintTicket选项,未参数化的PrintCapabilities文档选项
在这种情况下,PrintTicket包含带有参数化的选项的特征,而PrintCapabilities文档中相应特征至少包含一个未经参数化的选项。即使PrintCapabilities文档也包含参数化的其他选项实例,评价算法必须应用到每个选项,因为目标是识别出最佳匹配选项。客户机必须能够将未参数化的候选选项与参数化的参考选项作比较。
因为经参数化的选项出现在PrintTicket中,所以ParameterInit实例应该也出现,如上述情况中所示。评价算法可以简单地用PrintTicket的ParameterInit实例指定的值替代PrintTicket的参数化选项中任一ParameterRef实例。这有效地将参数化的选项转换成未参数化的选项。此时,可以使用传统的匹配算法。
情况3-非参数化的PrintTicket选项,参数化的PrintCapabilities Document选项
在这种情况中,在PrintTicket中的参考选项不是参数化的,同时在PrintCapabilities文档中的候选选项是参数化的。访问PrintCapabilities文档中的ParameterDef实例,并确定在参考选项中为相应的ScoredProperty定义的值是否落入ParameterDef实例所允许的范围,PrintTicket中候选选项的ParameterRef实例参考所述的PrintCapabilities文档。如果这样,认为这个ScoredProperty是匹配的。如果不是这样,这个ScoredProperty不是匹配的。
需要强调的是通过ScoredProperty实例所匹配的数目(和重要性)来确定两个选项实例的接近程度,独立于ScoredProperty实例是否包含确切的Value实例或ParameterRef实例。候选选项是最好的匹配是有可能的,即使包含一些与参数选项不匹配或在参考选项中没有相应特性的特性实例。
打印模式允许特性实例出现在选项实例中。PrintCapabilities文档中所定义的特性实例没有传播到保存在PrintTicket中的选项实例。多两个选项实例被比较时,属性元素不影响评价程序的结果,但是ScoredProperty实例确对此产生影响。所有执行评估算法的设备驱动程序都应该遵守这个约定。PrintCapabilities供应商被允许向选项添加特性实例,如果这些实例特定于该选项而非其他选项,或者如果供应商希望这个特性的值在特征中的每个选项中都出现。例如,假设SamplePrintRate特性取决于为SampleResolution特征所选择的选项。若SamplePrintRate特性被放在PrintCapabilities文档的根层次,那它是单一值并且只反映当前选择的解决模式的打印速度。然而,若SamplePrintRate被放在每个SampleResolution选项内,SamplePrintRate特性的每个实例都可以反应包含在SampleResolution选项中的打印速度。PrintCapabilities文档可以包含SamplePrintRate的多重定义,每个SampleResolution选项对应一个。用一个简写的表示,PrintCapabilities包含:
<Feature name=″SampleResolution″>
<Option name=″300dpi″>
<Property name=″SamplePrintRate″>
<Value xsi:type=″string″>20ppm</Value>
</Property>
</Option>
<Option name=″600dpi″>
<Property name=″SamplePrintRate″>
<Value xsi:type=″string″>15ppm</Value>
</Property>
</Option>
</Feature>
在一些情形里,将打印速度特性放置在每个解决选项中对客户机来说是更方便的,因为客户机不需要为了每个解决方案设置都获得新的PrintCapabilities文档而只需要查看在打印速度上每个解决方案选项的结果就能做出决定。
注意特性实例也可以作为特征元素的子元素被添加。对于特性实例或者那些特定于每个特征的特性实例的值来说很有用。例如,可能有一特性指定了是否对于特征在某一时刻只有一个选项允许被选择,或者是否多个选项可以被选择。这是在PPD和GPD文件中使用的PICK_ONE和PICK_MANY特性。由于一些特征实例可能被标识为PICK_ONE,而其他则被标识为PICK_MANY,必须为每个特征定义该特性。将特性定位为特征的子元素,生成特性和特征之间的关联。
为了使PrintCapabilities客户机可以建立合理的PrintTicket,PrintCapabilities文档必须提供特征实例的某些特性以及特征中的选项实例。普通用户界面(UI)模块需要此信息来建立UI。这进而需要打印模式关键字(PrintSchema Keywords)定义一些显示为特征和选项元素子元素的特性实例。
特征元素可包含以下特性。
特性 | 值 | 用途 |
SelectionType(选择类型) | PickOne(选择一)PickMany(选择多) | 指定在给定时间可以为这个特征选择的选项的数目,一个(PickOne)或者多个(PickMany)。客户机可以使用这个信息来建立PrintTicket。这个信息影响用户界面的行为以及供应商的PrintTicket确认。 |
选项元素包含下列特性。
特性 | 值 | 用途 |
IdentityOption(身份选项) | True(真)False(假) | 选择身份选项(IdentityOption)特性被认为是表示”禁止此特征“。包含SelectionType(选择类型)特性的值为PickMany的特征一定也包含一拥有身份选项特性的选项。如果选择了身份选项(IdentityOption)特性,用户界面编码(或建立PrintTicket的)客户机必须取消选定任何其他选项。 |
特征、选项和ParameterDef元素可包含以下特性。
特性 | 值 | 用途 |
DisplayUI(显示用户界面) | Show(显示)Hide(隐藏) | 指定是否父元素应该被显示在用户界面上。Show(显示)表示元素应该被显示在用户界面中。Hide(隐藏)表示元素不应该被显示在用户界面中。若此特性不是为元素所定义的,默认的解释是Show(显示),表示这个元素被显示。 |
如在参数参考元素中所述,ParameterInit元素是可以从选项实例内被参考的,但参数结构也有独立于这个元素类型的用途。
非常适用于参数表示的设备配置属性的示例是CopyCount。被允许的这个设备配置属性的值可以很容易和简明的定义,而不需要明确的列出其中的每一个。虽然冗长乏味,但在其自身选项中列出每个CopyCount值是可能的,一些设备配置属性就是不能用特征/选项结构简单地表示出来。举例而言,考虑接受文本串的设备,文本要随后被用来在每个输出页面上生成虚拟水印。所有可能的文本串的组不能简单的被明确列举,但是文本串可以简单的用ParameterDef元素来描述。
Print Schema Keywords(打印模式关键字)文档定义了许多普通使用的参数结构,但是PrintCapabilities供应商可以自由的定义他们自己的附加参数结构。然而,由于另一方提供的PrintCapabilities文档没有定义这样的参数结构的事实,这些私有定义的参数结构对其他设备来说没有可移植性。无论是模式定义的或私有定义的,ParameterDef实例必须在参数被认可并被客户机使用前在PrintCapabilities文档中出现。这些参数称为指定参数。
除了适当地评价包含ParameterRef实例(参见参考参数)的选项之外,PrintCapabilities或PrintTicket供应商和客户机必须准备处理涉及参数的情况。
用户界面(UI)客户机必须在适当的时候提醒用户为指定的参数提供参数初始化程序(用于ParameterInit元素的值)以便适当的ParameterInit元素被插入到PrintTicket中。用户界面客户机必须能够区别两个种类的参数:无条件强制的和有条件强制的,并且必须能够适当的处理每个种类。对于无条件强制的参数,UI必须保证ParameterInit元素被提供给这个类型的参数。对于有条件强制参数,若参数被在PrintTicket中选择的选项所引用,用户界面必须提供ParameterInit值。参数的强制状态在ParameterDef实例中被指定。更多信息请参见ParameterDef和ParameterInit元素。用户界面客户机应该验证用户提供的ParameterInit值以确认它们满足ParameterDef实例中指定的要求。
PrintTicket供应商也应该检查由PrintTicket提供的ParameterInit实例以验证所有需要的参数存在并且它们满足ParameterDef实例中指定的要求。当ParameterInit值无数或丢失时,确认码应该提供合理的默认值。注意,ParameterDef允许默认值由于这个原因被提供。并且,如果有涉及参数的约束条件,例如“如果CopyCount比N大,那么不要使用小容量输入箱”,PrintTicket确认码应该侦测到这个约束条件并修改PrintTicket以避免激活这个约束条件。
若在PrintTicket指定的参数上有任何PrintCapabilities的相关性,PrintCapabilities供应商必须监控ParameterInit值并提供适当的PrintCapabilities文档。
PrintCapabilities模式提供给PrintCapabilities创建者在设备描述中可以使用的很大限度的灵活性和可表达性。然而,配置相应性在这种灵活性和可表达性上强加了限制。ParameterDef实例、特征元素列表、每个特征内的选项实例列表和每个选项内的ScoredProperty实例不能包含配置相关性。PrintCapabilities文档供应商必须检测到无效的配置组合并解决它们。
将PrintCaoabilities和Print Schema(打印模式)连接
通用PrintCapabilities模式包括各种元素类型的结构、目的和用法。它指定用于定义每个元素类型的特定实例的名称属性。它指定PrintCapabilities创建者可使用由打印模式关键字定义的元素的实例或者可以引入其私有定义的实例,只要这些私有定义的实例是在明确地标识为它们自身的名称空间中定义的。(PrintCapabilities创建者也可使用先前在另一个私有名称空间中定义的实例。)
打印模式关键字文档定义了在PrintCapabilities文档和PrintTickets中可以使用的每个元素类型的特定实例。它也说明了它们的目标和用途。打印模式关键字文档也定义若干元素类型的实例,如下:
特性和子特性实例驻留在PrintCapabilities文档的根部——这些元素描述了设备的不同方面和性能,并提供普通词汇表来描述设备。
特性和子特性实例是特征元素的子元素——这些元素描述了有关特定特征的不同方面。
特性和子特性实例是选项元素的子元素——这些元素描述了设备的不同方面和性能,它们取决于为特定特征选择的选项。这些可以被存在于PrintCapabilities根的特性实例所替代,在一些情况里提供额外的便利。更多信息参见
Adding Property Instances(添加特性实例)。
属性实例——这些元素影响系统处理和Attribute(属性)相关联的特性的方式。由于系统明确的实现了每个属性的行为并且响应每个属性,所以不支持私有定义的属性实例。
ScoredProperty实例——ScoredProperty实例定义了用于描述选项特征的语言。由于ScoredProperty实例在打印模式关键字中定义,这使由许多不同为许多设备缩写的迭项实例是可移值的,并被任何其他的设备驱动程序或者PrintCapabilities或PrintTicket供应商理解变成可能。最广泛使用的ScoredProperty是OptionName(选项名称)。
ScoredProperty值实例——这些值实例与ScoredProperty实例有同样的被提供的原因。
特征实例——每个选项必须属于一特定的特征,因此需要特征本身被定义。
ParameterDef实例——由打印模式关键字提供的ParameterDef实例)也为其包含的每个特性定义了值。PrintCapabilities供应商可以自由的为那些可以改变的特性实例修改值实例。更多关于哪些特性实例可被更该、哪些不能被更改的信息(不可改变的),请参见
ParameterDefand ParameterInit Elements(
ParameterDef和ParameterInit元素)。
重要的是注意PrintCapabilities模式不命名任何选项实例。选项实例单独由他们的被认为是一个整体的ScoredProperty实例所描述。普遍的误解是OptionName特性的简写标识选项实例,但这是不正确的。OptionName特性的值不需要相对于兄弟选项实例是唯一的,OptionName特性也不需要出现在选项中。
打印模式关键字文档定义了标准的名称空间,所有的PrintCapabilities和PrintTicket模式由的实例名称属性都属于这个空间。所有的元素类型使用的元素类型标签和可扩展标记语言(XML)属性也属于这个名称空间。
对于每个在PrintCapabilities模式中定义的实例,PrintCapabilities模式同时指定实例的名称属性和位置。供应商和客户机在他们的PrintCapabilities文档或PrintTicket中使用这个实例时,必须同时保存名称属性和位置。
打印模式关键字文档指定一些实例为强制性的。这些实例必须出现在每个PrintCapabilities文档内,并被适当的由有效的值进行初始化。打印模式关键字中没有被指定为强制性的所有实例都是可选的。
PrintCapabilities文档消费者的责任
PrintCapabilities文档的消费者具有必须在他们能使用PrintCapabilities文档之前确认的某些义务。以下是应用于PrintCapabilities文档的客户机的要求。
不能拒绝或失败地处理任何语句有效的PrintCapabilities;即,任何PrintCapabilities文档遵循PrintCapabilities模式。
必须能在发生意外或者缺少私有定义内容的情况下工作。这包括了在打印模式定义的元素内出现的私有定义的内容。
必须能在缺少可选打印模式的情况下工作。
必须了解何时需要请求新的文档。
特性实例的值配置相关的(因此,快照相关的)。当访问特性实例时,必须更新快照。
被复制到PrintTicket的特征、选项和ScoredProperty实例按定义是静态的。即,他们不是(且一定不是)在设备配置上相关。若要访问这些类型的任何实例,当配置改变时,不需要获得新的PrintCapabilities文档。
PrintCapabilities的消费者,也就是用户界面(UT)客户机,必须能够使用PrintCapabilities文档中的信息来建立用户界面并能根据用户选择建立有效的PrintTicket。这包括了解哪些ParameterInit实例须被指定,并确认那些被指定的实例。
PrintCapabilities供应商的责任
PrintCapabilities供应商必须支持最小的、由PrintTicket/PrintCapabilities供应商界面包含的性能集合。这些性能在此被列出。
它们必须遵循可扩展标记语言(XML)属性传播的方向,当其出现在适当的情况并包含那个情况下有效的值时。
它们必须产生与PrintCapabilities模式相一致的PrintCapabilities文档并满足打印模式中指定的要求。
它们必须能识别有效的PrintTicket。
它们必须能解释PrintTicket并理解其表示的特定配置。
它们必须能确定此配置是否包含约束冲突。
它们必须能修改无效的或相冲突的PrintTicket,通过作出最小的但必要的变化使其成为有效的且没有冲突。
它们必须能为特定的设备配置产生PrintCapabilities文档。
它们必须能产生默认配置或PrintTicket。
它们必须能产生与默认配置相应的PrintCapabilities文档。
它们必须实现能确定两个属于同一个特征的选项实例之间的匹配接近程度的选项评价的算法能力。此算法在PrintTicket确认过程中使用。
除了前述要求之外,PrintCapabilities文档必须包含对每个选项的每个XML属性都有效和正确的值(例如,受约束的)。
PrintCanabilities文档的例子
以下组成了示例性的PrintCapabilities文档。默认的名称空间不能应用于XML属性。这必须是明确地前缀限定的。在以下示例中使用的实例名称仅为了说明,虽然他们通常符合打印模式关键字中所定义的实例名称。
<psf:PrintCapabilities Version=″1″xmlns:psf=″http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework″xmlns:psk=″http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
xmlns:nsl=″http://www.privatenamespace1.com″
xmlns:ns2=″http://www.privatenamespace2.com″>
<!--具有值、子特性和AttributeRef实例的根层次特性的示例-->
<psf:Property name=″psk:DevicePrintRate″>
<psf:Property name=″psk:UnitType″>
<psf:Value xsi:type=″xs:string″>PPM</psf:Value>
</psf:Property>
<psf:Value xsi:type=″xs:integer″>20</psf:Value>
<psf:AttributeRef name=″psk:PrivateAttrbutes″/>
</psf:Property>
<!--属性集合的定义。注意没有为打印模式关键字版本定义的属性.-->
<psf:AttributeSet name=″ns1:PropertyAttribs″>
<psf:Attribute name=″psk:AttributeName1″>
<psf:Value xsi:type=″xs:string″>Test String</psf:Value>
</psf:Attribute>
<psf:Attribute name=″psk:AttributeName2″>
<psf:Value xsi:type=″xs:decimal″>1.234</psf:Value>
</psf:Attribute>
</psf:AttributeSet>
<ps:Feature name=″psk:MediaSize″>
<!--OptionName的简写表达示例。OptionName是这个选项定义中唯一的StoredPreperty.-->
<psf:Option name=″psk:AOISO″/>
<!--私有定义的OptionName的使用-->
<psf:Option name=″nsl:MyDeviceSpecificSize″/>
<!--OptionName的普通写法表达的示例.-->
<psf:Option>
<psf:ScoredProperty name=″OptionName″>
<psf:Value xsi:type=″QName″>psk:B0JIS</psf:Value>
</psf:ScoredProperty>
</psf:Option>
<!--包含两个StoredProperty实例的选项定义的示例.-->
<psf:Option name=″psk:C0ISO″>
<psf:ScoredProperty name=″psk:MediaSizeX″>
<psf:Value xsi:type=″xs:integer″>917000</psf:Value>
</psf:ScoredProperty>
<psf:ScoredProperty name=″psk:MediaSizeY″>
<psf:Value xsi:type=″xs:integer″>1297000</psf:Value>
</psf:ScoredProperty>
</psf:Option>
<!--没有选项名称的选项定义的示例,仅包含两个私有的ScoredProperty,每个有不同的各空间.-->
<psf:Option>
<psf:ScoredProperty name=″ns1:PaperID″>
<psf:Value xsi:type=″integer″>47</psf:Value>
</psf:ScoredProperty>
<psf:ScoredProperty name=″ns2:PaperID″>
<psf:Value xsi:type=″integer″>69</psf:Value>
</psf:ScoredProperty>
</psf:Option>
<!--具有私有的ScoredProperty的选项定义的示例-->
<psf:Option name=″psk:EnvelopelPRC″>
<psf:ScoredProperty name=″psk:MediaSizeX″>
<psf:Value xsi:type=″xs:integer″>102000</psf:Value>
</psf:ScoredProperty>
<pst:ScoredProperty name=″psk:MediaSizeY″>
<psf:Value xsi:type=″xs:integer″>165000</psf:Value>
</psf:ScoredProperty>
<psf:ScoredProperty name=″ns1:PriVateInfo″>
<psf:Value xsi:type=″xs:string″>MyValue</psf:Value>
</psf:ScoredProperty>
</psf:Option>
<!--包含Parameter Ref实例的选项定义-->
<psf:Option name=″CustomMediaSize″>
<psf:ScoredProperty name=″psk:MediaSizeX″>
<psf:ParameterRef name=″PageMediaSizeMediaSizeX″/>
</psf:ScoredProperty>
<psf:ScoredProperty name=″psk:MediaSizeY″>
<psf:ParameterRef name=″PageMediaSizeMediaSizeY″/>
</psf:ScoredProperty>
<psf:Property name=″psk:FeedOrientation″>
<psf:Value xsi:type=″xs:string″>LongEdgeFirst</psf:Value>
</psf:Property>
</psf:Option></psf:Feature><!--这个特征包含选项定义和子特征.--><psf:Feature name=″psk:DocumentNUp″>
<!--指定每个介质页1页-->
<psf:Option>
<psf:ScoredProperty name=″psk:PagesPerSheet″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value>
</psf:ScoredProperty>
</psf:Option>
<!--指定每个介质页2页-->
<psf:Option>
<psf:ScoredProperty name=″psk:PagesPerSheet″>
<psf:Value xsi:type=″xs:integer″>2</psf:Value>
</psf:ScoredProperty>
</psf:Option>
<!--其它选项…-->
<psf:Feature name=″psk:PresentationDirection″>
<!--指定左至右,上至下.-->
<psf:Option name=″psk:RightBottom″/>
<!--指定上至下,左至右.-->
<psf:Option name=″psk:BottomRight″/>
<!--其它选项…-->
</psf:Feature>
<!--私有定义的子特征-->
<psf:Feature name=″ns2:DeviceSpecificFeature3″>
<!--私有定义的特征的所有选项必须是私有的-->
<psf:Option name=″ns2:opt1″/>
<psf:Option name=″ns2:opt2″/>
<psf:Option name=″ns2:opt3″/>
<psf:Option name=″ns2:Off″/>
</psf:Feature></psf:Feature><!--从CustomMediaSize选项参考的两个参数的定义--><!--指定MediaSizeX ScoreProperty的值.--><psf:ParameterDef name=″psk:PageMediaSizeMediaSizeX″>
<psf:Property name=″psk:DataType″>
<psf:Value xsi:type=″xs:string″>xs:integer</psf:Value>
</psf:Property>
<psf:Property name=″psk:DefaultValue″>
<psf:Value xsi:type=″xs:integer″>0</psf:Value>
</psf:Property>
<psf:Property name=″psk:MaxValue″>
<psf:Value xsi:type=″xs:integer″>0</psf:Value><!--未定义的-->
</psf:Property>
<psf:Property name=″psk:MinValue″>
<psf:Value xsi:type=″xs:decimal″>0</psf:Value>
</psf:Property>
<psf:Property name=″psk:Multiple″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value>
</psf:Property>
<psf:Property name=″psk:Mandatory″>
<psf:Value xsi:type=″xs:string″>Conditional</psf:Value>
</psf:Property>
<psf:Property name=″psk:UnitType″>
<psf:Value xsi:type=″xs:string″>microns</psf:Value>
</psf:Property></psf:ParameterDef><!--指定MediaSizeY ScoredProperty的值.--><psf:ParameterDef name=″psk:PageMediaSizeMediaSizeY″>
<psf:Property name=″psk:DataType″>
<psf:Value xsi:type=″xs:string″>xs:integer</psf:Value>
</psf:Property>
<psf:Property name=″psk:DefaultValue″>
<psf:Value xsi:type=″xs:integer″>0</psf:Value>
</psf:Property>
<psf:Property name=″psk:MaxValue″>
<psf:Value xsi:type=″xs:integer″>0</psf:Value><!--undefined-->
</psf:Property>
<psf:Property name=″psk:MinValue″>
<psf:Value xsi:type=″xs:decimal″>0</psf:Value>
</psf:Property>
<psf:Property name=″psk:Multiple″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value>
</psf:Property>
<psf:Property name=″psk:Mandatory″>
<psf:Value xsi:type=″xs:string″>Conditional</psf:Value>
</psf:Property>
<psf:Property name=″psk:UnitType″>
<psf:Value xsi:type=″xs:string″>microns</psf:Value>
</psf:Property>
</psf:ParameterDef>
<!--不从任何选项参考的参数的定义-->
<!--指定页的拷贝数.-->
<psf:ParameterDef name=″psk:PageCopyCount″>
<psf:Property name=″psk:DataType″>
<psf:Value xsi:type=″xs:string″>xs:integer</psf:Value>
</psf:Property>
<psf:Property name=″psk:DefaultValue″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value>
</psf:Property>
<psf:Property name=″psk:MaxValue″>
<psf:Value xsi:type=″xs:integer″>0</psf:Value><!--undefined-->
</psf:Property>
<psf:Property name=″psk:MinValue″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value> </psf:Property>
<psf:Property name=″psk:Multiple″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value>
</psf:Property>
<psf:Property name=″psk:Mandatory″>
<psf:Value xsi:type=″xs:string″>Unconditional</psf:Value>
</psf:Property>
<psf:Property name=″psk:UnitType″>
<psf:Value xsi:type=″xs:string″>Copies</psf:Value>
</psf:Property>
</psf:ParameterDef>
</psf:PrintCapabilities>
PrintTicket模式和文档结构
目前采用DEVMODE结构指定设备配置信息的方法受到若干限制。首先,DEVMODE结构是二进制的结构,这会导致版本不一致的问题。其次,它被分割为不可扩展的公共部分和只能被驱动程序访问并只能由指定的驱动程序创建的私有部分。PrintTicket格式使用基于可扩展标记语言(XML)的打印模式框架来表示配置信息,由此消除了DEVMODE结构的这些缺陷。
PrintTicket模式能解决刚才提到的两个问题。首先,PrintTicket模式是基于XML的文本文件,因此有关可扩展性和版本的问题被消除。其次,配置信息对所有客户机是可用的,意味着任何客户机或者供应商都可以存储和重新得到任何包含在PrintTicket上的信息。选项使用被打印模式框架和所得到的PrintCapabilities文档使用相同的技术被描述。因此,PrintTicket提供全部要重现的选项定义模型的潜在的可移植性好处。更多信息请参见打印模式框架。需要使用这段中所包含信息的人有:
●PrintTicket/PrintCapabilities供应商界面的实现者
●PrintTicket的消费者
●PrintTicket/PrintCapabilities供应商界面的客户机
上述列表中的第一类成员在这一段落的剩余部分被认为是PrintTicket供应商。其他两类成员被认为是PrintTicket消费者。
PrintTicket模式和PrintCapabilities模式都是打印模式的专门部分。这些打印模式的子集间主要的结构上的差异是PrintTicket模式包含特性和ParameterInit实例而PrintCapabilities模式不包含,PrintCapabilities模式包含特性和ParameterDef实例而PrintTicket模式不包含。除了这些差异,PrintCapabilities模式和PrintTicket模式通常在内容上相互对应,共享特征、选项、ScoredProperty和值实例。任何这样共享的内容必须保持是最近的。例如,若PrintCapabilities模式中的MediaSize特征发生变化,同样的变化一定要在PrintTicket模式中发生。
PrintTicket功能性概述
PrintTicket利用基于可扩展标记语言(XML)的格式来表示设备配置信息,后者使用特征/选项和打印模式框架的参数结构。这包括所有的标准元素类型以及打印模式框架的可扩展性能力。PrintTicket被假设为自身包含单一页面如何被处理的描述。有关如何从特定文档格式中提取并建立这样的PrintTicket的步骤没有在这里提到。
PrintTicket可用于获得描述有特定配置设备的特性的PrintCapabilities文档。作为选择,可连同一组渲染指定提交PrintTicket以产生根据PrintTicket指定的配置渲染和处理的输出页面。
PrintTicket的主要目的是表达打印作业的配置。对照定义设备能采用的所有可能配置(设备配置空间)的PrintCapabilities文档,PrintTicket的目的是定义单一特定的已经应用于正在处理的作业目标的配置(在这个情况里是页面)。为了提升配置的可移植性和一致性,打印模式关键字段落中提供的特定的关键字和层次都被PrintCapabilities技术和PrintTicket技术使用。另外,打印模式框架定义了两个技术的基础结构,以便促进作业格式和PrintCapabilities明确的、开放的和可扩展的通讯。
除了为PrintCapabilities定义的设备属性提供选择以外,PrintTicket允许由客户机以属性元素的形式附加额外的信息。打印模式定义了许多标准特性实例,并且界面供应商也可以自由地引入私有特性实例。例如,如果组织的成员将它们的大多数打印作业发送到中央一批设备,他们可以为每个作业指定包含返回地址的私有特性实例。此特性可使将那些已完成的作业传递给创建者变得更简单。
如在PrintCapabilities模式那段中讨论的,一些表示在PrintCapabilities文档中表达的可能的配置结果对设备是无效的。那些无效的配置是包含约束冲突(在PPD/GPD文件领域内使用的术语)。为了防止约束冲突,PrintTicket供应商必须支持客户机用于对他们的PrintTicket执行确认的PrintTicket确认操作。此操作应该能侦测设备上是否出现指定的配置。若没有出现指定的配置(由于指定的特征和选项元素在当前设备中不存在,或由于是受约束的配置),此操作应该修改输入PrintTicket以便使其包含有效的、非受约束的设置。此操作也可能移除或确认PrintTicket的其他信息。注意,当遇到约束冲突,为了避免这个约束冲突,确认码必须改变设备属性之一的设置。选项定义建议,为了最好的保存用户的初始意图,评价算法应该用于确定哪个设备属性应该被改变。确认码可通过硬编码评价算法以支持设备属性中的一个,或者用PrintTicket中的特定特性实例提供的信息来引导解决模式。由于在打印模式关键字中没有定义过,使客户机可以指定每个设备属性的相对优先权的特性,任何用于这个目的的私有PrintTicketProperty元素很可能被其他PrintTicket供应商忽略。
PrintTicket语法和模式
PrintTicket是用基于可扩展标记语言(XML)的打印模式框架的语法来表示的。就所使用的元素类型和用父和子元素表示的通用结构,PrintTicket模式严密地平行于打印模式框架。注意在PrintTicket中不允许ParameterDef元素,只在PrintTicket中允许ParameterInit元素。
PrintTicket结构清单
这个部分说明了PrintTicket客户机的创建者是如何使用在打印模式框架中定义的元素类型来创建描述对设备的意向的PrintTicket。PrintTicket可以是通用的(不依赖于特定的设备),它或者可以是设备特定的。将更详细地示出PrintTicket的语义。此外,这个部分包含了对概念和术语的概述,这在后续的部分中将作更深入的描述。
有两种根本不同的方法来构造PrintTicket。可以使用任一种方法。
通过创建通用PrintTicket,使PrintTicket以未知或通用的设备为目标。如果主要目标是保存最终用户的意图,可能希望通过文档构建和存储未确认的通用PrintTicket来采取这种方法。
通过创建设备特定的PrintTicket,使PrintTicket以特定设备为目标。如果对利用特定设备提供的所有特征更为感兴趣,可能希望采用这种方法。
如果设备的PrintCapabilities文档不可用或者目标设备未知,应该构建通用PrintTicket。因为没有一组特征或选项元素或参数的PrintCapabilities文档,这些元素类型所支持的实例必须直接从打印模式关键字获得。
当创建通用PrintTicket时,应该使用以下列表所示的步骤。
1.创建空的可扩展标记语言(XML)文档,含有PrintTicket根。将名称空间前缀分配给打印模式名称空间。指定模式版本。
2.检查打印模式关键字中的特征实例并确定希望在PrintTicket中定义这些中的哪几个。将这些特征实例增加到PrintTicket中。当转移子特征时,必须也转移父特征,并保存PrintTicket中特征和子特征之间的父子关系。
对于转移的每个特征实例,确定哪些选项实例能应用到PrintTicket。从选项实例的这个组中,转移每个完整的选项实例,如同它在打印模式中所出现的,接着删除任何存在的特性实例,可能的例外是那些对PrintTicket重要的特性实例。保存所有的ScoredProperty实例,确保保存了它们的位置;它们是选项定义的本质部分。如果有任何的属性实例是ScoredProperty实例的子实例,可以保存它们或删除它们。
3.也可以将属性或特性实例增加到任一ScoredProperty中。只有在PrintTicket供应商明确地支持属性和属性元素的使用时,它们才是可应用的。每个供应商应该说明所有支持的属性和特性实例的目的和用途。只有系统PrintTicket的供应商才能够定义或引入私有的属性实例。私有PrintTicket供应商可以支持系统定义的属性实例,但是不允许引入属性实例。因为不知道哪个供应商会处理该PrintTicket,可能希望只增加系统PrintTicket供应商明确支持的属性和特性实例。
4.如果对于特定的特征,打印模式关键字将SelectionType特性设置成PickMany,那么可以为该特征选择多于一个选项,只要被指定为IdentityOption的选项不是所选中的那些选项之一。打印模式中的IdentityOption与PostSciptPPD文件和Unidrv GPD文件中的无(None)选项具有相同的效果;它用作no-op。
5.检查打印模式关键字以便获取应该在PrintTicket中初始化的ParameterDef实例。对于每个这样的ParameterDef实例,选择要在PrintTicket的ParameterInit实例中使用的值。这个值必须具有正确的数据类型、必须落入PetermeterDef实例定义的范围中,并且必须符合ParameterDef实例中指定的所有其他要求。使用ParameterInit实例将参数初始化为选定的值。
如果开发用户界面(UI)组件,设计PrintTicket生成方法使得用户可以为ParameterInit元素输入值。此外,UI输入方法应该遵守由相关联的ParameterDef元素指定的任一输入限制。
6.检查出现在PrintTicket中的每个选项实例的内容以便获取ParameterRef的出现。如果相应的ParameterInit实例没有在PrintTicket中出现过,就按照先前的步骤在PrintTicket中创建ParameterInit实例。这个ParameterInit实例的目的在于初始化ParameterRef实例参考的参数。
7.记住处理作业的设备可能不支持在PrintTicket中指定的每个特征。也记住可能支持指定的特征,但是该特征的指定选项可能不被支持。相同的警告应用于参数。即使设备支持指定的参数,在ParameterInit实例中指定的值可能不在设备的有效范围内。
8.检查打印模式关键字以便获取必须在PrintTicket中出现的特性实例。为这些中的每一个增加特性实例到PrintTicket中,并且使用值元素类型为它提供适当的值。确保特性实例在PrintTicket中被适当地定位。确保参考PrintTicket模式而非PrintCapabilities模式。
9.检查PrintTicket模式中定义的可选特性实例。如果在PrintTicket中应该存在任何这样的特性实例,在PrintTicket创建它们。
设备特定PrintTicket目标是特定的设备,因此不能在多个设备之间通用地移植。
当创建设备特定PrintTicket时,应该使用以下列表中所示步骤。
1.获取只包含设备的相关特征实例的PrintCapabilities文档。请求默认的PrintCapabilities文档。这不要求指定一输入PrintTicket,因为用于构建PrintTicket的设备属性(特征与选项实例和参数)独立于配置。
2.创建空的可扩展标记语言(XML)文档,含有PrintTicket根。将名称空间前缀分配给打印模式名称空间,并为PrintTicket将使用的所有其他名称空间分配前缀。指定PrintTicket模式的版本。
3.可以为在PrintCapabilities文档中报告的每个特征和ParameterDef实例或者只是那些感兴趣的实例在PrintTicket中定义设置。如果部分PrintTicket被提供给PrintTicket界面,那么在PrintTicket确认过程中会自动为省略的特征和ParameterDef实例提供默认值。
4.检查PrintCapabilities文件以便获取特征实例,并确定希望在PrintTicket中定义这些中的哪几个。将这些特征实例增加到PrintTicket中,但是并不将这些特征实例的内容转移到PrintTicket中。当转移子特征时,必须也转移父特征,并在PrintTicket中保存特征和子特征之间的父子关系。
对于转移的每个特征实例,确定哪些选项实例能应用到PrintTicket。转移完整的选项,如在PrintCapabilities文档中定义的,接着删除任何出现的特性实例。在PrintCapabilities文档中使用特性实例,但是它们在PrintTicket中没有用处。保存所有的ScoredProperty实例,确保保存了它们的位置;它们是选项定义的本质部分。如果有任何的属性实例是ScoredProperty实例的子实例,可以保存它们或删除它们。
5.也可以将属性或特性实例增加到任一ScoredProperty实例中。只有在PrintTicket供应商明确地支持属性和特性实例的使用时,它们才是可应用的。每个供应商应该说明所有支持的属性和特性实例的目的和用途。只有系统PrintTicket的供应商才能够定义或引入属性实例。私有PrintTicket供应商可以支持系统定义的属性实例,但是不允许引入属性实例。注意在确认期间,删除包含在选项实例中的任一特性实例,除非目标PrintCapabilities或PrintTicket供应商认可该特性的名称空间,并且在PrintCapabilities文档中发现候选选项,其ScoredProperty实例与在参考选项中定义的那些完全匹配。
6.如果对于特定的特征,打印模式关键字将SelectionType特性设置成PickMany,那么可以为该特征选择多于一个选项,只要被指定为IdentityOption的选项不是所选中的那些选项之一。打印模式中的IdentityOption与PostsciptPPD文件和Unidrv GPD文件中的无(None)选项具有相同的效果;它用作no-op。
7.检查PrintCapabilities文档以便获取应该在PrintTicket中设置的ParameterDef实例。对于每个这样的ParameterDef实例,选择要在PrintTicket的ParameterInit实例中使用的值。这个值必须具有正确的数据类型、必须落入PetermeterDef实例定义的范围中,并且必须符合ParameterDef实例中指定的所有其他要求。使用ParameterInit实例将参数初始化为选定的值。
8.检查出现在PrintTicket中的每个选项实例的内容以便获取ParameterRef的出现。如果相应的ParameterInit实例没有在PrintTicket中出现过,就按照先前的步骤在PrintTicket中创建ParameterInit实例。这个ParameterInit实例的目的在于初始化ParameterRef实例参考的参数。
9.记住约束冲突可能会阻止设备应用在PrintTicket中指定的配置。如果需要,确认过程将在PrintTicket中定义的配置修改成免于冲突的。
10.检查打印模式关键字以便获取必须在PrintTicket中出现的特性实例。将所需的每个特性实例增加到PrintTicket中,并且使用值元素类型为它提供适当的值。确保特性实例在PrintTicket中被适当地定位。
11.检查PrintTicket模式中的可选特性实例。如果在PrintTicket中应该存在任何这样的特性实例,在PrintTicket创建它们。
12.可以将私有定义的特性实例增加在根层次处,或者增加到任一特征、选项或特性实例中。然而注意,在确认期间这些私有定义的特性实例时被删除,除非目标PrintCapabilities或PrintTicket供应商认可它们所属的名称空间。此外,在确认期间出现在选项实例中任何位置的特性实例被删除,除非PrintCapabilities文档包含完全匹配的选项。如果一个选项实例中的每个ScoredProperty具有在另一个中相应的ScoredProperty,且ScoredProperty实例的值是相同的,那么两个选项实例是完全匹配的。参考PrintTicket供应商的私有模式以便获取所认可的私有特性实例以及它们用途的列表。
PrintTicket确认清单
无论如何PrintTicket供应商必须在使用PrintTicket之前确认它。在确认PrintTicket之后,可以将它返回给客户机,或者可以在使用后将它丢弃。这个清单包含在确认过程中供应商必须执行的任务。确认过程会经常改变PrintTicket的内容,虽然它不会改变先前确认过的PrintTicket。
确认总是针对特定的设备执行,所述设备具有在PrintCapabilities文档中定义的一组特征、选项和ParameterDef实例。确认代码应该可以访问特定设备的特征实例(以及所包含的选项实例)和ParameterDef实例的组合,并且无需访问PrintCapabilities。在确认过程的某些部分中需要来自特征、选项和ParameterDef实例的信息。
1.在试图定位相应或匹配元素过程中,注意在合格名称被认为匹配之前元素的名称空间必须匹配。所有的元素名称、属性名称以及实例名称是符合名称空间限定的。对于嵌套的元素,在元素被认为匹配之前它们的位置必须匹配。
2.验证所有的元素标记在公共名称空间中,是由PrintTicket模式所定义的,包含适当的可扩展标记语言(XML)属性和属性值,并且每个元素类型的位置符合PrintTicket模式定义的用法。
3.确定PrintCapabilities文档报告的所有名称空间。从PrintTicket删除其实例名称属于PrintCapabilities文档未报告的名称空间的所有元素(以及它们的子孙)。注意这种情况和以下情况之间的不同,在以下情况中涉及已知名称空间中未认可的实例名称。
4.由于通过添加新元素实例定义来不断地扩展模式,不应该在给定名称空间中的每个实例名称都是已知的假设下写出确认代码。该确认代码不能将已知名称空间中未认可的实例名称当作错误,它也不能将它们从PrintTicket中删除。
5.如果任何元素实例含有重复的兄弟,这是PrintTicket模式不允许的,仅保持第一出现的,并删除重复的,包括重复元素的内容。
6.从PrintTicket删除在PrintCapabilities文档中没有相应特征的任何特征和子特征(以及其所有子特征)。
7.检查在PrintCapabilities文档中定义的SelectionType特性以便获取PrintTicket中每个剩余的特征实例。其SelectionType特性被设置为PickOne的任一特征必须正好具有在PrintTicket中出现的一个选项实例,而其SelectionType特性是PickMany的特征可以具有多于一个选项实例。如果PrintTicketFeature不具有选项实例,提供默认的选项实例。作为提供者应该知道每个特征的默认选项。
对于其SelectionType特性是PickMany的特征,具有在PrintTicket中选出的多于一个选项,验证没有选项被指定为IdentityOption。如果有,删除所有其他的选项,仅留下这个指定的IdentityOption。
8.删除PrintTicket中在PrintCapabilities文档中没有对应ParameterDef实例的任一ParameterInit实例。
对于PrintTicket中的任何其它ParameterLnit实例,验证每一个的值符合PrintCapabilities文档的ParameterDef实例。如果缺少值,则提供在ParameterDef中提供的默认值。
9.基于评价算法的结果,将PrintTicket中的每个选项实例和PrintCapabilities文档中相应特征中列出的选项配对。评价是找到PrintCapabilities文档中与PrintTicket中命名的选项最佳匹配选项的过程。对评价过程中要考虑的问题的描述,参见选项定义。使用相应的最佳匹配候选PrintCapabilities文档选项替换PrintTicket中每个参考选项。在约束冲突阻止使用最佳匹配候选者的情况下,也可以通过评价来对所有的候选者排序,并将这个信息传递给解决阶段。在这种情况下,解决算法可以使用第二最佳候选者而非随意地选择另一个候选者。
10.对于其SelectionType特性被设置成PickMany的特征,且在PrintTicket中选择了多于一个选项,验证没有选项被指定为IdentityOption。如果存在这样的选项,删除所有其他的选项,仅留下这个指定的IdentityOption。这个步骤必须在应用评价算法之前和之后执行。
这个步骤必须执行两次的原因是评价过程可能将多个参考选项实例映射到相同的候选选项。如果这样,删除任一重复的选项实例使得为特定PickMany特征所列的选项是唯一的。
11.将出现在PrintCapabilities文档中而没有出现在PrintTicket中的任一特征增加到PrintTicket中。对于这样的特征,将默认选项指定为所选选项。
12.确定是否有任何ParameterDef实例符合以下的所有标准:
ParameterDef实例出现在PrintCapabilities文档中,而没有出现在PrintTicket中。
ParameterDef实例的强制特性被设置成无条件或有条件的。
在选项实例中ParameterDef实例被PrintTicket中的ParameterRef实例参考。
对于PrintCapabilities文档中每个这样的ParameterDef实例,将相应的ParameterInit实例增加到PrintTicket中。将新增加的ParameterInit实例的值设置成相应的ParameterDef实例指定的默认值。
13.执行约束冲突检测并修改配置以消除任何这样的冲突。这个主题不能定义要使用的特定算法以解决约束冲突。需要确定可以改变哪个特循或ParameterInit实例,以及要分别选择哪个适当的选项或值使得对PrintTicket中指定的配置的整个意向具有最小的影响。如先前所述,可能希望使用每个选项的映射评分,并使用具有第二高的评分的选项。为了确定要改变哪个特征或ParameterInit,可能希望定义客户机可以增加到PrintTicket中的私有特性。这个特性可以为特征和ParameterInit实例定义优先级使得可以通知求解算法哪个特征或ParameterInit实例对客户机是重要的(并且必须保存在PrintTicket中),哪些的重要性较低。
14.如果约束解决过程对任何其强制特性被设置成有条件的ParameterRef实例造成了PrintTicket中的改变,那么对那些现在出现的使用默认值增加ParameterInit实例,对于不再出现的ParameterRef实例删除任何ParameterInit实例。
15.删除出现在PrintTicket的选项实例中所有特性实例和它们的内容。属性元素在PrintTicket中不起作用。如果特定特征经确认的选项完全匹配先前确认的选项,就将所有该选项中的特性和属性实例从预先确认的PrintTicket转移到现在确认的PrintTicket,服从特性实例的名称空间是在PrintCapabilities文件中注册的条件。注意对于要考虑的两个选项实例的完全匹配,对于一个选项中的找到的每个ScoredProperty,在另一个选项中必须有对应的ScoredProperty,且两个ScoredProperty实例的值必须相同。
16.如果PrintTicket供应商认可和支持到此时继续存在的任何私有或公共特性实例,对它们执行确认。此时不要只因为不认识一特性就将其删除一它可以用于文档处理的另一个阶段。
PrintTicket供应商的其他考虑
PrintTicket供应商界面具有可以用于对现有PrintTicket作出增量改变的方法。增量PrintTicket改变可以在被称为PrintTicket增量的部分PrintTicket中指定。通过将PrintTicket增量并入现有PrintTicket来创建修订的PrintTicket。有关涉及PrintTicket增量的方法的更多信息,参见即将来临的PrintTicket供应商界面文档。
当处理PrintTicket增量时,必须执行以下步骤。
1.标识出对现有PrintTicket(目标PrintTicket)和PrintTicket增量共同的特征或ParameterInit实例。
对目标PrintTicket和PrintTicket增量共同的每个特征,使用PrintTicket增量中的相应特征替换目标PrintTicket中的特征。
对目标PrintTicket和PrintTicket增量共同的每个ParameterInit,使用PrintTicket增量中的相应ParameterInit替换目标PrintTicket中的ParameterInit。
2.将PrintTicket增量中所有剩余的特征和ParameterInit实例拷贝到目标PrintTicket中。
3.如果冲突解决算法允许在PrintTicket本身内指定优先级,可以选择提高在PrintTicket增量中命名的特征和ParameterInit实例的优先级。
4.如PrintTicket验证清单所述执行PrintTicket验证。
PrintTicket供应商界面包含返回默认PrintTicket的一个方法。此外,PrintCapabilities供应商界面具有返回默认PrintCapabilities文档的方法;即通过使用由默认PrintTicket创建的PrintCapabilities的快照。这种默认的PrintTicket必须通过以下过程自动生成。
在验证PrintTicket之后,它可以被用于创建PrintCapabilities的快照。对于其值依赖于设备配置的任何特性,供应商必须有内部表示。例如,如果SpotDiameter是依赖于分辨率和MediaType特征的特性,那么可以在下表中示出SpotDiameter关于各种分辨率和MediaType的值的内部表示。
分辨率 | MediaType(介质类型) | SpotDiameter(点直径) |
300 | 铜板纸 | 520 |
300 | 光面纸 | 350 |
600 | 铜板纸 | 330 |
600 | 光面纸 | 180 |
1200 | 铜板纸 | 250 |
1200 | 光面纸 | 100 |
对于这个例子,PrintCapabilities供应商必须使用所提供的PrintTicket来选择来自内部表格作为SpotDiameter特性的值的适当条目并报告它。对每个多值特性(对于每个值取决于配置的特性)重复这个过程。PrintCapabilities模式和文件结构部分描述涉及创建PrintCapabilities的快照的其他步骤。
为了创建默认PrintCapabilities文档的快照,将默认PrintTicket(而非任意PrintTicket)提供给创建PrintCapabilities文档的方法。
PrintTicket例子
以下组成了PrintTicket的例子。默认名称空间不应用于XML属性。这些属性必须是明确地前缀限定的。这个例子中的实例名称仅为了说明,虽然它们反映出在打印模式关键词草稿文件中定义的当前实例名称。这个PrintTicket是特别为由PrintCapabilities文档例子示出的假设设备构建的。<psf:PrintTicket Version=″1″xmIns:psf=″http://schemas.microsoft.com/windows/2003/08/ptinting/printschemaframework″xmlns:psk=″http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords″
xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″
xmlns:xs=″http://www.w3.org/2001/XMLSchema″
xmlns:ns1=″http://www.privatenamespace1.com″
xmlns:ns2=″http://www.privatenamespace2.com″><!--告知特征的单一选项的描述--><psf:Feature name=″psk:MediaSize″>
<!--包含ParameterRef实例的选项定义-->
<psf:Option name=″CustomMediaSize″>
<psf:ScoredProperty name=″psk:MediaSizeX″>
<psf:ParameterRef name=″PageMediaSizeMediaSizeX″/>
</psf:ScoredProperty>
<psf:ScoredProperty name=″psk:MediaSizeY″>
<psf:ParameterRef name=″PageMediaSizeMediaSizeY″/>
</psf:ScoredProperty>
<psf:Property name=″psk:FeedOrientation″>
<psf:Value xsi:type=″xs:string″>LongEdgeFirst</psf:Value>
</psf:Property>
</psf:Option> </psf:Feature><!--包含选项实列和子特征的特征的描述.--><psf:Feature name=″psk:DocumentNUp″>
<!--指定每介质页1页-->
<psf:Option>
<psf:ScoredProperty name=″psk:PagesPerSheet″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value>
</psf:ScoredProperty>
</psf:Option>
<psf:Feature name=″psk:PresentationDirection″>
<!--指定左至右、上至下.-->
<psf:Option name=″psk:RightBottom″″/>
</psf:Feature>
<psf:Feature name=″ns2:DeviceSpecificFeature3″>
<!--私有定义的特征的所有选项必须是私有的-->
<psf:Option name=″ns2:Off″/>
</psf:Feature></psf:Feature><!--所有强制参数的ParameterInit实例和从MediaSize的特征的CustomMediaSize选项引用的ParameterInit实例--><!--指定MediaSizeX ScoredProperty的值.--><psf:ParameterInit name=″psk:PageMediaSizeMediaSizeX″>
<psf:Value xsi:type=″xs:integer″>10000</psf:Value></psf:ParameterInit><!--指定MediaSizeY ScoredProperty的值.--><psf:ParameterInit name=″psk:PageMediaSizeMediaSizeY″>
<psf:Value xsi:type=″xs:integer″>10000</psf:Value> </pst:ParameterInit><!--指定页的拷贝数.--><psf:ParameterInit name=″psk:PageCopyCount″>
<psf:Value xsi:type=″xs:integer″>1</psf:Value></psf:ParameterInit></psf:PrintTicket>
示例性计算机系统
图1示出了用于实现上述过程的示例性计算设备。计算设备142包括一个或多个处理器或处理单元144、系统存储器146以及将包括系统存储器146的各类系统组件耦合至处理器144的总线148。总线148表示几种类型的总线结构中的任意一种或多种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统存储器146包括只读存储器(ROM)150和随机存取存储器(RAM)152。基本输入/输出系统(BIOS)154,包含如在启动时协助在计算设备142内的元件之间传输信息的基本例程,可储存在ROM 150中。
计算设备142也可包括用于对硬盘(未示出)进行读写的硬盘驱动器156、用于对可移动磁盘160进行读写的磁盘驱动器158以及用于对可移动光盘164,如CD-ROM或其它光介质进行读写的光盘驱动器162。磁硬盘驱动器156、磁盘驱动器158以及光盘驱动器162通过SCSI接口166或某些其他合适的接口连接至系统总线148。驱动器及其相关的计算机可读介质为计算机142提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管这里描述的示例环境采用了硬盘、可移动磁盘160以及可移动光盘164,然而本领域的技术人员应该理解也可以在示例性操作环境中使用用于储存计算机可访问的数据的其它类型的计算机可读介质,包括盒式磁带、闪存卡、数字视频盘、随即存取存储器(RAM)、只读存储器(ROM)等。
多个程序模块可储存在硬盘156、磁盘160、光盘164、ROM 150或RAM 152中,包括操作系统170、一个或多个应用程序172(诸如用户代理或浏览器)、其它程序模块174以及程序数据176。用户可以通过键盘178和指点设备180等输入设备将命令和信息输入到计算机142中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备可以通过耦合至总线148的接口182连接到处理单元144。监视器184或其它类型的显示设备也通过诸如视频适配卡186等接口连接到总线148。除了监视器外,个人计算机一般包括诸如扬声器和打印机等其他外围输出设备(未示出)。
计算机142通常在使用一或多个远程计算机如远程计算机188的逻辑连接的网络区环境中运行。远程计算机188可以是另一个个人计算机、服务器、路由器、网络PC。对等设备或其它普通网络节点,并且通常包括许多或全部相对于计算机142描述的元素。图1所示的逻辑连接包括局域网络(LAN)192。这样的网络环境在办公室企业级计算机网络、企业内部互联网及因特网中是经常见的
当用在LAN网络环境中时,计算机142通过网络接口或适配器194连接到局域网。当用在WAN网络环境中时,计算机142一般包括调制解调器196或具有其他用于在广域网192诸如Internet上建立通信的方法,。调制解调器196,可以是内置的或外置的,经由串行端口接口168连接到系统总线148。在网络环境中,关于个人计算机142或其部分描述的程序模块可以存储在远程存储设备中。应该理解所示的网络连接是示例性的,可以使用在计算机之间建立通信链接的其他方法。
通常,计算机142的数据处理器是使用在不同时候存储在计算机的各种计算机可读存储介质上的指令来编程的。程序或操作系统一般分布在例如软件或CD-ROM上。它们从那里安装或载入到计算机的辅助存储器。在执行时至少部分地将它们载入到计算机的主电子存储器中。这里所描述的系统包括这些和其他各种类型的计算机可读存储介质(当这些介质包含用于结合微处理器或其他数据处理器执行所述块的指令或程序时)。当依照这里所述的方法和技术编程时,所述系统也可以包括计算机自身。
说明起见,这里将程序和诸如操作系统等其他可执行程序组件示为具体的块,虽然我们知道这样的程序和组件在各种时间驻留在计算机的不同存储组件中并且由计算机的数据处理器来执行。
结论
上述方法和系统可用于描述设备性能。示例性模式组成了应用程序和设备之间的通信语言。在一个实施例中,该模式组成了应用程序、打印子系统组件和设备之间的通信语言。该模式是构建在使用模式关键字表示特定设备的用户可配置性能的完整集合的框架上。在所示和所述实施例中,该模式利用分层结构,在表示设备性能中允许不同等级的粒度。这种表示的一个例子出现在于2004年05月03日存档的、序列号为10/794669的美国专利申请中,该申请题为Multilevel Ticket-Based Job Management Architecture for Computing Devices。
虽然用特定于结构特征和/或方法步骤的语言描述了本发明,但是应该理解在所附权利要求中定义的本发明无需受限于所述的特定特征或步骤。而是,这些特定特征和步骤是作为实现所作权利要求的发明的优选形式来揭示的。
Claims (45)
1.一个或多个其上具有计算机可读指令的计算机可读介质,当执行所述指令时,实现一种方法,包含:
接收来自客户机的设备性能查询;以及
响应于接收所述查询,生成描述设备性能的分层结构文档,其中,所述性能包括可配置选项,且其中,所述分层结构文档以层的分层结构表示了所述性能。
2.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包括打印设备性能查询。
3.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构文档包含打印模式关键字且包含私有扩展。
4.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述打印模式关键字定义描述设备配置和打印作业格式的特性、特征和选项元素的各个实例。
5.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述打印模式包括:
属性元素,指定打印模式元素的含义;
属性集元素,允许一个或多个属性元素参考同一属性元素集合;
属性集参考元素,允许属性元素参考包含在属性集中的一组属性元素;
特征元素,包含选项和特性元素的列表;
选项元素,包含与一选项相关联的特性和评价属性元素;
参数定义元素,定义参数化输入的有效特征;
参数参考元素,定义对参数初始元素的参考;
打印性能元素,表示分层结构文档的根;
属性元素,声明设备、作业格式或其他特性,其名称由其名称属性给出;
评价属性元素,可以声明对选项定义而言本质的特性;以及
值元素,将文字与类型相关联。
6.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含打印作业层。
7.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含文档层。
8.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含页面层。
9.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的所述层包含打印作业层、文档层和页面层。
10.如权利要求1所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构文档描述作业格式和设备配置信息。
11.一种包含如权利要求1的一个或多个计算机可读介质的计算设备。
12.一个或多个其上具有计算机可读指令的计算机可读介质,当执行所述指令时,实现一种方法,包含:
生成设备性能查询,以便确定设备的性能;以及
响应于将所述查询发送给设备,接收描述设备性能的分层结构文档,其中,所述性能包括可配置选项,且其中,所述分层结构文档以层的分层结构表示了所述性能。
13.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包括打印设备性能查询。
14.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展。
15.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述打印模式关键字定义描述设备配置和打印作业格式的特性、特征和选项元素的各个实例。
16.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中所述打印模式包括:
属性元素,指定打印模式元素的含义;
属性集元素,允许一个或多个属性元素参考同一属性元素集合;
属性集参考元素,允许属性元素参考包含在属性集中的一组属性元素;
特征元素,包含选项和特性元素的列表;
选项元素,包含与一选项相关联的特性和评价属性元素;
参数定义元素,定义参数化输入的有效特征;
参数参考元素,定义对参数初始元素的参考;
打印性能元素,表示分层结构文档的根;
属性元素,声明设备、作业格式或其他特性,其名称由其名称属性给出;
评价属性元素,可以声明对选项定义而言本质的特性;以及
值元素,将文字与类型相关联。
17.如权利要求12所述一个或多个计算机可读介质,其特征在于所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含打印作业层。
18.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含文档层。
19.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含页面层。
20.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的所述层包含打印作业层、文档层和页面层。
21.如权利要求12所述一个或多个计算机可读介质,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构文档描述作业格式和设备配置信息。
22.一种包括如权利要求12的一个或多个计算机可读介质的计算设备。
23.一种方法,包含:
接收来自客户机的设备性能查询;以及
响应于接收所述查询,生成描述设备性能的分层结构文档,其中,所述性能包括可配置选项,且其中,所述分层结构文档以层的分层结构表示了所述性能。
24.如权利要求23所述方法,其特征在于,所述查询可以包含所述性能所基于的PrintTicket配置。
25.如权利要求23所述方法,其特征在于,所述设备性能查询包括打印设备性能查询。
26.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构文档包含打印模式关键字且包含私有扩展。
27.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述打印模式关键字定义描述设备配置和打印作业格式的特性、特征和选项元素的各个实例。
28.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述打印模式包括:
属性元素,指定打印模式元素的含义;
属性集元素,允许一个或多个属性元素参考同一属性元素集合;
属性集参考元素,允许属性元素参考包含在属性集中的一组属性元素;
特征元素,包含选项和特性元素的列表;
选项元素,包含与一选项相关联的特性和评价属性元素;
参数定义元素,定义参数化输入的有效特征;
参数参考元素,定义对参数初始元素的参考;
打印性能元素,表示分层结构文档的根;
属性元素,声明设备、作业格式或其他特性,其名称由其名称属性给出;
评价属性元素,可以声明对选项定义而言本质的特性;以及
值元素,将文字与类型相关联。
29.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,其中所述分层结构中的一层包含打印作业层。
30.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含文档层。
31.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层结构中的一层包含页面层。
32.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,其中,所述分层机构中的所述层包含打印作业层、文档层和页面层。
33.如权利要求23所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档描述作业格式和设备配置信息。
34.一种方法,包含:
生成设备性能查询,以便确定设备的性能;以及
响应于将所述查询发送给设备,接收描述设备性能的分层结构文档,其中,所述性能包括可配置选项,且其中,所述分层结构文档以层的分层结构表示了所述性能。
35.如权利要求34所述方法,其特征在于,所述设备性能查询包括打印设备性能查询。
36.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展。
37.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述打印模式关键字定义描述设备配置和打印作业格式的特性、特征和选项元素的各个实例。
38.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述打印模式包括:
属性元素,指定打印模式元素的含义;
属性集元素,允许一个或多个属性元素参考同一属性元素集合;
属性集参考元素,允许属性元素参考包含在属性集中的一组属性元素;
特征元素,包含选项和特性元素的列表;
选项元素,包含与一选项相关联的特性和评价属性元素;
参数定义元素,定义参数化输入的有效特征;
参数参考元素,定义对参数初始元素的参考;
打印性能元素,表示分层结构文档的根;
属性元素,声明设备、作业格式或其他特性,其名称由其名称属性给出;
评价属性元素,可以声明对选项定义而言本质的特性;以及
值元素,将文字与类型相关联。
39.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述分层结构中的一层包含打印作业层。
40.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述分层结构中的一层包含文档层。
41.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述分层结构中的一层包含页面层。
42.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述分层结构中的所述层包含打印作业层、文档层和页面层。
43.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中,所述分层结构文档描述作业格式和设备配置信息。
44.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中所述分层结构文档描述作业格式和设备配置信息,并且所述方法还包括:
从所述分层结构文档导出设置。
45.如权利要求34所述方法,其特征在于,所述设备性能查询包含打印设备性能查询,且其中,所述分层结构文档包含打印模式关键字且包含私有扩展,且其中所述分层结构文档描述作业格式和设备配置信息,并且所述方法还包括:确认所述分层结构文档。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/992,065 US20060106775A1 (en) | 2004-11-18 | 2004-11-18 | Multilevel device capabilities hierarchy |
US10/992,065 | 2004-11-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1804835A true CN1804835A (zh) | 2006-07-19 |
Family
ID=35811709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005101248147A Pending CN1804835A (zh) | 2004-11-18 | 2005-11-18 | 多级设备性能分层结构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20060106775A1 (zh) |
EP (1) | EP1659483A3 (zh) |
JP (1) | JP2006155611A (zh) |
KR (1) | KR20060055319A (zh) |
CN (1) | CN1804835A (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7467162B2 (en) * | 2005-06-27 | 2008-12-16 | Microsoft Corporation | Pre-configured settings for portable devices |
JP4673260B2 (ja) * | 2006-07-07 | 2011-04-20 | キヤノン株式会社 | 情報処理装置及びジョブチケット生成方法 |
US8458308B1 (en) * | 2006-08-23 | 2013-06-04 | Infoblox Inc. | Operating system fingerprinting |
US7973955B2 (en) | 2006-11-01 | 2011-07-05 | Microsoft Corporation | Specification and management of consolidated ticket packages in workflows |
JP4971783B2 (ja) * | 2006-12-27 | 2012-07-11 | キヤノン株式会社 | 情報処理装置及び印刷設定方法 |
AU2011204906B2 (en) * | 2007-06-14 | 2013-06-27 | Aristocrat Technologies Australia Pty Limited | Translating XML with multiple namespace extensions |
AU2008202631A1 (en) * | 2007-06-14 | 2009-01-08 | Aristocrat Technologies Australia Pty Ltd | Translating XML with multiple namespace extensions |
JP5424546B2 (ja) * | 2007-09-13 | 2014-02-26 | 京セラドキュメントソリューションズ株式会社 | 画像処理装置及び画像形成システム |
US8417676B2 (en) * | 2007-11-06 | 2013-04-09 | International Business Machines Corporation | Automated method for detecting and repairing configuration conflicts in a content management system |
JP5070101B2 (ja) * | 2008-03-25 | 2012-11-07 | キヤノン株式会社 | 情報処理装置及びその制御方法、プリンタドライバプログラム |
US8473506B2 (en) * | 2009-05-20 | 2013-06-25 | Oracle International Corporation | Type system for building extensible business applications |
US8982383B2 (en) * | 2010-03-31 | 2015-03-17 | Konica Minolta Laboratory U.S.A., Inc. | Method and program for a universal job definition format (JDF) printer driver |
US9182930B2 (en) | 2010-12-13 | 2015-11-10 | Microsoft Technology Licensing, Llc | Printer driver and application decoupling using event centric registration model |
JP5746530B2 (ja) * | 2011-03-17 | 2015-07-08 | キヤノン株式会社 | 印刷設定情報を設定する装置及びその制御方法 |
US8904048B2 (en) | 2011-09-08 | 2014-12-02 | Microsoft Corporation | Bidi extension for connected devices |
US20140324555A1 (en) * | 2013-04-25 | 2014-10-30 | Xerox Corporation | Methods and systems for evaluation of remote workers |
EP3039571A4 (en) | 2013-08-27 | 2017-05-03 | Paper Software LLC | Cross-references within a hierarchically structured document |
JP6115515B2 (ja) * | 2014-05-08 | 2017-04-19 | コニカミノルタ株式会社 | プリンタドライバ及びプリンタドライバの禁則処理方法 |
US10817492B2 (en) * | 2017-05-05 | 2020-10-27 | Servicenow, Inc. | Application extension |
CN112462645A (zh) * | 2020-11-10 | 2021-03-09 | 蘑菇物联技术(深圳)有限公司 | 通用设备控制器的自我描述方法、装置和存储介质 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5109252A (en) * | 1990-08-23 | 1992-04-28 | Eastman Kodak Company | Removable media job setup for document copier |
US5604600A (en) * | 1995-12-06 | 1997-02-18 | Xerox Corporation | Production trees for generic representation of document requirements for particular output terminals |
US6587217B1 (en) * | 1997-09-15 | 2003-07-01 | International Business Machines Corporation | Method for organizing files in a library in a network printing system |
US6052198A (en) * | 1997-09-15 | 2000-04-18 | International Business Machines Corporation | Method for organizing raster image processor files associated with a job ticket used in a network printing system |
US6476927B1 (en) * | 1998-01-21 | 2002-11-05 | Electronics For Imaging, Inc. | Job token printer assignment system |
US6356920B1 (en) * | 1998-03-09 | 2002-03-12 | X-Aware, Inc | Dynamic, hierarchical data exchange system |
US6426798B1 (en) | 1999-03-04 | 2002-07-30 | Canon Kabushiki Kaisha | Data structure for printer description file |
US6418448B1 (en) * | 1999-12-06 | 2002-07-09 | Shyam Sundar Sarkar | Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web |
US6643650B1 (en) * | 2000-05-09 | 2003-11-04 | Sun Microsystems, Inc. | Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment |
US20020103898A1 (en) * | 2001-01-31 | 2002-08-01 | Moyer Stanley L. | System and method for using session initiation protocol (SIP) to communicate with networked appliances |
JP4464029B2 (ja) * | 2001-04-19 | 2010-05-19 | キヤノン株式会社 | 情報処理方法および制御プログラムおよび情報処理装置および周辺装置および応答方法および代理応答装置およびネットワークシステム |
JP2003084946A (ja) * | 2001-09-13 | 2003-03-20 | Canon Inc | 印刷システム及び印刷管理装置並びにそれらの方法 |
US6982804B2 (en) * | 2001-10-31 | 2006-01-03 | Hewlett-Packard Development Company, L.P. | Intelligent printer settings |
JP2003303071A (ja) * | 2002-01-16 | 2003-10-24 | Canon Inc | 情報処理装置及び情報処理方法及び情報処理システム及び制御プログラム及び記憶媒体 |
US20030189726A1 (en) * | 2002-04-09 | 2003-10-09 | Nexpress Solutions Llc | Variable data printing dynamic imposition template |
JP2003316561A (ja) * | 2002-04-24 | 2003-11-07 | Minolta Co Ltd | データ送信装置およびデータ受信装置 |
JP2004054909A (ja) * | 2002-05-31 | 2004-02-19 | Canon Inc | 情報処理装置、印刷システム、情報処理装置の印刷制御方法、及び印刷制御プログラム |
US20030233476A1 (en) * | 2002-06-13 | 2003-12-18 | Henry Steven G. | Transmitter device message prioritization |
KR100477652B1 (ko) * | 2002-06-18 | 2005-03-23 | 삼성전자주식회사 | 가상머신 애플릿을 이용한 네트워크 상의 엑세스 데이터인쇄방법 및 장치 |
JP2004066602A (ja) * | 2002-08-05 | 2004-03-04 | Canon Inc | 記録システム及びその制御方法とダイレクト印刷装置 |
US7136941B2 (en) * | 2002-12-04 | 2006-11-14 | Microsoft Corporation | Print management architecture for computing devices having a set of filters functions wherein the functions are prevented from conflicting with one another |
US7391534B2 (en) * | 2003-05-29 | 2008-06-24 | Hewlett-Packard Development Company, L.P. | Methods and systems for discovering printmodes supported by a print engine |
US20050021980A1 (en) * | 2003-06-23 | 2005-01-27 | Yoichi Kanai | Access control decision system, access control enforcing system, and security policy |
US20050024665A1 (en) * | 2003-08-01 | 2005-02-03 | Jennifer Melin | System and method for dynamically controlling access to configuration attributes for a printing device |
US20050046886A1 (en) * | 2003-08-28 | 2005-03-03 | Sharp Laboratories Of America, Inc. | Direct printing component architecture for installed printers |
JP4614390B2 (ja) * | 2005-06-14 | 2011-01-19 | キヤノン株式会社 | 電子機器とその制御方法 |
-
2004
- 2004-11-18 US US10/992,065 patent/US20060106775A1/en not_active Abandoned
-
2005
- 2005-10-05 EP EP05021732A patent/EP1659483A3/en not_active Ceased
- 2005-10-21 KR KR1020050099581A patent/KR20060055319A/ko not_active Application Discontinuation
- 2005-11-18 JP JP2005334289A patent/JP2006155611A/ja active Pending
- 2005-11-18 CN CNA2005101248147A patent/CN1804835A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1659483A3 (en) | 2009-07-22 |
EP1659483A2 (en) | 2006-05-24 |
KR20060055319A (ko) | 2006-05-23 |
US20060106775A1 (en) | 2006-05-18 |
JP2006155611A (ja) | 2006-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1804835A (zh) | 多级设备性能分层结构 | |
CN1577324A (zh) | 文档管理方法和程序、记录介质和文档管理装置 | |
CN100346286C (zh) | 用于改变网络浏览器的布局和功能的方法 | |
CN100339230C (zh) | 计算机和打印控制方法 | |
CN1678991A (zh) | Web服务设备和方法 | |
CN1689022A (zh) | 可扩展标记语言流化转换器 | |
CN100342691C (zh) | 多模式对话处理方法 | |
CN1609794A (zh) | 用于计算机平台的编程接口 | |
CN1138215C (zh) | 用于归档和访问电子报文的数据处理系统和方法 | |
CN1073276A (zh) | 语言的中性对象 | |
CN1073540A (zh) | 管理类方法名 | |
CN1609855A (zh) | 查询优化系统和方法 | |
CN1781089A (zh) | 构建包含预编页码文档的包的方法和系统 | |
CN1672158A (zh) | 使用多个传递媒体的成批通信过程 | |
CN1524216A (zh) | 软件构件插件程序结构的系统和方法 | |
CN1833240A (zh) | 维护包内部件之间的关系的方法和装置 | |
CN1609795A (zh) | 用于计算机平台的编程接口 | |
CN1856036A (zh) | 字幕产生设备和方法 | |
CN1828517A (zh) | 文档处理装置和文档处理方法 | |
CN1609793A (zh) | 用于计算机平台的编程接口 | |
CN1749997A (zh) | 嵌入装置及其控制方法、实现该控制方法的程序和存储媒体 | |
CN1823330A (zh) | 模块化文档格式 | |
CN1809825A (zh) | 定义具有可选择和/或可定序部件的文档的方法和系统 | |
CN1799046A (zh) | 用于文档处理的方法和装置 | |
CN1744036A (zh) | 报告软件中支持定制图形表示的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20060719 |