Xml打印机系统的制作方法

文档序号:2495235阅读:432来源:国知局
专利名称:Xml打印机系统的制作方法
技术领域
本发明一般来讲涉及一种用于打印条型码标记的方法和设备,特别是在一个实施例中,涉及一种XML(可扩展置标语言)打印机,其使用现有的基于ZPL(Zebra程序设计语言)的格式模板,基于XML数据流打印条型码标记。
背景技术
用于打印条型码和用于向条型码打印机传输数据的打印机系统是公知的。然而,许多此类系统使用数据编码的专有方法,因此无法与其他条型码打印机可交换地使用此类方法。此外,已知的数据编码方法通常提供不能由人类理解的底层数据。虽然这种呈现方式对于计算机系统来讲没有障碍,但对于试图复查、调试或者理解底层条型码元素名称中出现的某些数据的人类来讲可能十分麻烦。就这一方面,XML是一种被许多商业机构采用的开放标准,并且是人类可读的。XML的使用可以避免与非人类可读方法相关联的许多问题和缺陷。
在商业的许多方面广泛地使用了条型码标记。具体来讲,从一目的地到另一目的地的托运包裹或者商品是由托运者通过专门的条型码标记标识出的。相反地,被接收的商品也可能通过利用条型码标记标识出,并进入接收者的库存系统。往往,商品的接收者可以决定由托运者采用的条型码的样式和内容。这被称为“依从标记(compliance labeling)”。当然,无需托运商品来利用条型码标记的益处。例如,库存控制系统广泛采用条型码标记,来追踪和监视工厂内部的或者工厂之间的各种商品。
通常由具有相对较大的市场支配力或者购买力的商品购买者使用了依从标记。由于他们的经济实力,他们能决定应用于由他们的供应商或者出售商提供给他们的产品的条型码标记的样式和内容。尽管这对于供应商来讲可能是很麻烦的,但是如果供应商希望与买方做生意,则他们必须符合他们的关于标记的要求。例如,大的零售商、诸如Wal-Mart,Inc.,不仅具有能力和购买力来要求供应商满足他们的依从标记要求,并且还可以对没能符合该标记要求的供应商处以罚金。
进一步来讲,此类条型码标记要求可能随着机构要求依从的想法而发生变化。因此,供应商必须实施新标记要求,并且检验该修改的条型码,以确保它满足所有规定。这是比较效率低的和费时的。它还易于出错,而这可能转化为金钱上的罚金。
存在这样一种需要允许企业资源规划系统(ERP)格式化它的用于以XML形式传送给条型码打印机系统的数据,另外还利用现有的管理标记版面编排的ZPL格式模板,和/或通过利用使用了XSL(可扩展样式表语言)的纯XML格式模板来管理待打印标记的版面编排。


将在所附权利要求书中详细阐述本发明的被认为是新颖的特征。可能参考以下结合附图的说明,更佳地理解本发明及其进一步的目的和有益效果。
图1是根据本发明的打印机系统的具体实施例的高层硬件方框图;图2是一打印机系统的具体实施例的高层软件方框图;图3是一打印机系统的具体实施例的组合高层软件方框图和数据流程图;图4是一位图/条型码呈现引擎的具体实施例的高层软件方框图;图5是依照图1-4中的打印机系统产生的条型码标记的具体表示;图6是被配置为条型码提供服务器的打印机系统的候选实施例的具体范例;图7是一打印机系统的具体候选实施例的高层软件方框图;图8是一打印机系统的具体候选实施例的组合高层软件方框图和数据流程图;以及图9是依照图7-8中的打印机系统产生的条型码标记的具体表示。
具体实施例方式
在这一书面的说明书中,使用转折连词意图是包括连词。使用定冠词或者不定冠词不是打算指示基数。具体来讲,引用“the”对象或者事物或者“an”对象或者“a”事物同样意图说明多个这样的对象或者事物。
现在参看图1,一般性地示出了XML打印机系统10的高层硬件方框图的具体实施例。在图1-6的实施例中,该系统的纯粹的或者固有的“语言”是XML,因此打印机系统10可以被称为“纯XML打印机”。XML打印机系统10包括计算机或者处理系统12,正如现有技术中所公知的,其包括各种硬件组件,诸如RAM 14,ROM 16,硬盘存储器18,超高速缓冲存储器20,数据库存储器22,等等(也被称为“存储器子系统”26)。正如现有技术中所公知的,计算机系统12可以包括任何合适的处理装置28,诸如计算机,微处理器,RISC处理器(简化指令集计算机),CISC处理器(复杂指令集计算机),大型计算机,工作站,单片计算机,分布式处理机,服务器,控制器,微控制器,离散逻辑计算机等等。例如,处理装置28可以是IntelPentium微处理器,x86兼容微处理机,或者等效装置。
用户界面30可以与计算机系统12耦合,并且可以包括各种输入装置36,诸如可由用户选择的开关和/或键盘。正如现有技术中所公知的,用户界面还可以包括合适的输出设备40,诸如LCD显示器,CRT,各种LED指示器和/或语音输出装置。
为了在计算机系统12和外部源之间通信,通信接口42可以与该计算机系统可操作地耦合。通信接口42例如可以是局域网、如以太网、内部网、或者其他合适的网络43。通信接口42还可以与公共交换电话网(PSTN)46或者POTS(普通老式电话系统)连接,其可以帮助经由因特网44通信。也可以采用专用和远程网络。正如现有技术中所公知的,可以使用任何合适的商用的通信设备或者网络。
计算机系统12进一步与打印机系统50耦合。打印机系统50可以包括介质/纸张控制系统52、打印机驱动程序54和打印头机制56。可以使用任何能够打印条型码的合适的打印机,可以包括各种点阵、喷墨、激光和/或热敏式打印机。当然,点阵打印机通常质量较低,并且要求对标记输出的严密监视。优选的是,打印机系统50是热敏式打印机。此类合适的打印机例如可从伊利诺斯州的Vernon Hills的Zebra技术公司(Zebra Technologies Corporation of Vernon Hills,Illinois)获得,并且可以包括Xi型号系列的条型码打印机(XiIII+,90XiIII,96XiIII,140XiIII,170XiIII,220XiIII,等等),2800系列条型码打印机,型号Z4M、Z6M、105SL条型码打印机,等等。可以使用任何合适的条型码标记打印机。
通常,此类打印机可以包括各种电动机、标记切纸器、色带处理器、传感器等等(未示出)。另外,正如现有技术中所公知的,此类打印机可以包括各种控制输入或者传感器,诸如介质传感器,打印头温度传感器,头部开放传感器,色带传感器,等等(未示出)。除驻留在计算机系统12中的处理器28以外,打印机系统50可以包括一个或多个附加处理器60。替换地,计算机系统12中的处理器28如果充分强大,则可以控制和处理打印机系统50功能,而无需单独的处理装置。关于控制打印头的更具体的细节,可以在1994年12月13日发布的、标题为“Thermal Transfer Printer With Controlled RibbonFeed”、并且为本发明的拥有者所拥有的美国专利第5,372,439号中找到。美国专利第5,372,439号在此被全部引入以供参考。
优选的是,计算机系统12和打印机系统50位于共同的外壳内,但是不是必需以这一方式来构造。例如,计算机系统12可以被置于单独的并且远离打印机系统50的外壳中。
现在参看图1-3,图2图示出高层软件方框图的具体实施例,同时图3图示出组合的高层软件方框图和数据流程图的具体实施例。下文所述的软件可以被图1中的计算机系统12的处理器28执行。此外,处理器28可以执行对计算机系统12和打印机系统50两者通用的功能。可能存在一个或多个处理器,它们可以一齐起作用或者可以单独地起作用。处理或者处理功能是否由计算机系统、或者在计算机系统中、或者由打印机系统、或者在打印机系统中执行,不是本发明的范围所涉及的材料。
在图2-3中图示出的软件块包括XML(可扩展置标语言)处理器70(也被称为“XML分析器”),XSLT(可扩展的样式表语言变换)处理器74,XSLFO(可扩展的样式表语言格式化对象)处理器78,条型码呈现引擎80(也被称为“位图/条型码呈现引擎”,以及打印机驱动程序54(图1)。注意,打印机驱动程序54是一种上面描述的部件的范例,所述部件的功能根据相关联的处理装置的实际位置,可以或者由计算机系统12中的处理装置、或者由打印机系统50中的处理装置60(图1)执行。此外,单一处理装置如果充分地强大,则可以为XML打印机系统10处理所有功能。
XML方案简档82(方案简档)可以向XML处理器70提供输入,而XSLT样式表简档84(样式表简档)可以向XSLT处理器74提供输入。还被示出的是企业资源规划(ERP)系统88,其例如可以是将XML输入数据流90传输给XML处理器70的仓库管理系统。ERP系统88实质上发起打印条型码标记的请求,并且提供构成待打印的条型码及其他变量标记或者元素域的XML数据。此类变量标记域例如可以包括,打印在该标记上的任何或者所有人类可读的文本和/或字符。当然,可以使用任何企业计算机系统,并且本发明不局限于与任何具体类型的企业计算机系统一起使用。
当提到XML数据的时候,此处应涉及两种基本类型,也就是XML值数据和XML元素名称。XML值数据是变量数据,即希望被打印在条型码标记上的数据,诸如可以是对应于例如托运地址的XML值数据的一部分的数据“1122 Green Street,”。XML元素名称属于XML语言语义学的一部分,其中可以选择任意的标记或者元素名称来表示XML值数据,它的使用是由XML语言定义的。通常,元素名称出现在尖括号之间(“<元素名称>”)。
如上所述,已知的条型码标记系统往往使用专用软件编码方案。另外,此类方案往往易于出现错误,并且底层的值数据通常不能被非技术性个人理解。在已知的系统中,如果在从企业系统送来的底层值数据中存在错误,或者如果数据丢失或者不正确,条型码打印机将打印委托它打印的内容,这当然将在条型码标记中产生错误,不精确的或者无用的呈现。
此外,当处理依从标记的时候,当标记的样式或者内容依照依从标记要求而变化的时候,已知的系统要求在数据编码中进行非无关紧要的改变。条型码样式或者内容方面的此类变化同样对错误敏感,这随后可能导致被要求依从的机构的金钱罚金。商务关系也可能被条型码标记系统中的延续问题损害,特别是如果此类错误破坏了依从要求者的交易。
本XML打印机系统10使用一种开放格式。具体来讲,格式化要求和条型码标记的样式全部以XML语言定义。此外,不仅为所有使用者良好定义和提供了XML,而且非程序员能够以最小限度的训练来理解XML数据流或者文件(或者硬拷贝)中的数据和命令。
图2-3中所示的各种XML软件块是商用的。可以可交换地使用或者以很少的修改来使用几种不同的商用的XML处理器70。例如,可以使用下列商用的XML处理器70可以从IBM公司获得的“XMLfor C++”,可以从微软公司获得的“MSXML3”,可以从Oracle公司获得的“Oracle XML Developers Kit for C”,可以从泰国Open SourceSoftware Center有限公司(Thai Open Source Software Center Ltd.)获得的“expat”或者可以从Apache Software Foundation获得的“Xerces-C++”。然而,可以使用任何合适的XML处理器。
类似地,可以可交换地使用或者以很少的修改来使用几种不同的商用的XSLT处理器74。例如,可以使用下列XSLT处理器74可以从Infoteria公司获得的“iXSLT”,可以从微软公司获得的“MSXML3”以及可以从Gnome中获得的“Libxslt”。然而,可以使用任何合适的XSLT处理器。
再次,可以可交换地使用或者以很少的修改来使用几种不同的商用的XSLFO处理器78。例如,可以使用下列XSLFO处理器78可以从RenderX公司获得的“XEP”,可以从Antenna House公司获得的“XSL Formatter”,以及可以从Apache Software Foundation获得的“FOP”。然而,可以使用任何合适的XSLFO处理器。
仍参见图1-3,XML处理器70从外部源88接收XML输入数据流90。例如,这外部源可以是ERP系统88,诸如仓库管理系统。正如现有技术中所公知的,XML处理器70实质上是分析和处理XML输入数据流90,并且产生一组节点,它们可以是处于“树”结构。图2-3中所示的每一软件处理块作用于该“树”中的节点,以便执行它们的被请求的功能。来自ERP系统88的XML输入数据流90中包含的底层的值数据被处理,并被送入“标记值节点树”100,该″标记值节点树″100保留该数据。
以下是各种软件构件的操作的简短概述。首先注意,XML输入数据流90包括标识其他被要求的XML文档或者文件的名称和位置的文本。一个此类文件被称为“XML方案”或者“方案”。该方案被用于验证XML输入数据流,包括底层的值数据。如果验证成功,则应用样式表,如下文中将说明的。在XML输入数据流90中还规定了样式表的名称和位置。样式表的应用由XSLT处理器74进行处理,该XSLT处理器74在样式表的指导下可以变换底层的XML元素名称和/或底层的值数据。接下来,由XSLFO处理器78处理数据,所述XSLFO处理器78处理底层值数据的格式化和“版面编排”,例如,这可以包括依照例如字体类型、字体大小、色彩等等,对底层的值数据进行格式化。接下来,由位图呈现引擎80处理底层的值数据,这产生对应于被变换和格式化的数据的条型码标记的位图92。位图呈现引擎80可以使用驻留在样式表中的“入流外来对象(instream foreignobject)”来指导位图的生成。然后位图92被发送给打印机驱动程序54(图1),用于随后由条型码打印机进行的条型码标记的打印。
如上所述,该方案的功能是验证整个输入数据流90,具体来讲是验证底层的值数据,其中通常可以发现错误。在实践中,当对于条型码标记的样式或者内容作出改变的时候,往往无意中引入错误。
该方案文档的名称和位置被包含在XML输入数据流90中,该XML输入数据流对应于打印条型码标记的请求。XML处理器70结合方案验证模块110验证底层的值数据。使用方案具有经济效益,因为防止关于最终输出、也就是条型码标记或者“运送标记”的错误和遗漏。
如果XML输入数据流90被拒绝或者被标记为具有错误,错误消息可以被传输回到源88。这可以标记或者触发对于人为干预以便改正错误。例如,在这一具体范例中,所述源是ERP系统88。以这种方式,数据最初是在处理之前被校验的,以便确保它符合所有要求的标记和条型码规则。
这在处理依从标记的时候可能是格外有益的。在已知的系统中,依从要求者可能仅仅通知供应商关于依从标记要求方面的变化。如果供应商随后在解释或者实施这些变化或者指令方面犯错误,则所产生的并被应用于运往依从要求者处的产品的标记可能具有错误,这可能危害将来的交易或者导致受到金钱罚金。
在本发明中,依从要求者优选的是直接对方案和/或XSLT样式表作出改变。例如,如果标记的物理版面编排已经变化或者如果元素名称已经变化,依从要求者将修改XSLT样式表。类似地,如果底层的值数据已经被添加或删除,或者被限制(即,新的可接受的邮政编码的数值范围),则依从要求者可以修改该方案。以这种方式,供应商仅仅需要修改它的ERP系统88的输出,来确保它匹配修改的XML输入数据流90。如果仅仅已经改变了标记的物理版面编排格式,供应商根本不需要作出任何修改。
例如,依从要求者现在可能要求使用九位邮政编码,而不是原来的五位邮政编码。因此,依从要求者将修改该方案,以便要求第一和第二邮政编码域两者,并且所述第二域还将被限制为某一范围内的数字,可能为0000-9999。依从要求者还可能修改样式表来适应该变化。响应于此,供应商必须将添加的邮政编码域插入到它的ERP系统中,以便它出现在发送给XML打印机系统10的XML输入数据流90中。如果XML输入数据流90的这种修改没有被正确地执行,则该方案将把错误报告返回给ERP系统88,并且标记不会被打印。
因此,供应商仅仅需要访问简档82、84中的修改的方案和/或样式表,这是在接收的时候自动地应用于底层的值数据的。实质上,对于条型码标记的样式和内容的微小改变或者显著大的改变对于供应商是透明的,并且依照该方案、对于条型码标记的内容的此类改变将被验证的。因此,供应商无需承担改变由依从要求者规定的条型码标记的样式或者内容的成本,并且实施此类改变时不会犯任何错误。如果存在任何错误,此类错误将是由依从要求者无意中作出的,那么依从要求者不能归咎于供应商。
方案文档优选的是从XML方案简档82处获得。在一个具体实施例中,方案简档82可以在XML打印机系统10和计算机系统12的外部,并且可以经由网络、因特网或者经由计算机系统与之相耦合的任何适当的网络43、44访问。方案简档82可能包含多个方案文档。因此,表示创建条型码标记的各种请求的XML输入数据流90可能均规定了简档82中的对应方案的名称和位置。当XML处理器70接收到请求的时候,可以从方案简档82中检索出对应方案。
在另一实施例中,经由网络42、43从方案简档82处获得的方案可以被本地保存,并从而可以临时地驻留在存储器子系统26中(图1),诸如硬盘18或者数据库22。以这种方式,如果为多个XML输入数据流90或者为随后的条型码标记请求使用了相同的方案,则XML处理器70无需经由网络42、44在外部检索相同的方案,而可以是从存储器子系统26中检索该方案,这可能更高效。依据本实施例,依从要求者可以仅仅在某些时刻改变或者修改外部简档82中的方案。例如,依从要求者可以仅仅在每天上午1:00改变样式表。因此,供应商仅仅需要每日一次地将方案从简档82中更新到存储器子系统26中,例如,在依从要求者已经执行了方案更新之后。然后供应商将知道临时地保存在存储器子系统26中的方案是最新的方案文档,至少直到更新按计划发生的这一时刻为止是最新的。
方案验证模块110与获得该方案的位置无关地执行底层的数据的校验和验证。尽管方案验证模块110在图2中被示为与XML处理器70分离的块,但其在该处仅仅是为了例证说明的目的而被示出的,因此它可以被显示在附图上邻近于标记值节点树100的位置,该标记值节点树100是被依据来进行动作的数据。然而,方案验证模块110可以是XML处理器70的一部分,并被集成到XML处理器70中,或者可以是单独的一部分,并与XML处理器70分离。
当然,方案也是一种XML文档,并且因此它也由XML处理器70处理。因此,方案的处理结果是图3中所示的XML方案节点树114,它是被处理的方案的“存储器表示”或者工作模型。正如现有技术中所公知的,该XML方案节点树114可以是以“文档对象模型”(DOM)的形式。进一步来讲,为了效率,XML方案节点树114可以驻留在超高速缓冲存储器中,如在XML方案高速缓存器116中所示出的。方案验证模块110和/或XML处理器70对XML方案节点树114中的数据进行操作,来执行它的依照方案文档验证底层的值数据的功能。
如上所述,如果如方案的应用所确定的,XML输入数据流90中存在错误,则可能产生错误消息。如果XML输入数据流90被验证,则数据实质上仍保持为“未改变的”。然后由XSLT处理器74使用XSLT样式表处理标记值节点树100中的数据。
样式表文档优选的是从XSLT样式表简档84处获得。在一个具体实施例中,样式表简档84可以在XML打印机系统10和计算机系统12的外部,并且可以经由网络、因特网或者经由计算机系统与之相耦合的任何适当的网络43、44访问。样式表简档84可能包含多个样式表。因此,表示创建条型码标记的各种请求的XML输入数据流90可能均规定了简档84中的对应样式表的名称和位置。当XML处理器70接收到请求的时候,可以从样式表简档84中检索出对应样式表。
在另一实施例中,经由网络43、44从样式表简档84处获得的样式表可以被本地保存,并从而可以临时地驻留在存储器子系统26中(图1),诸如硬盘18或者数据库22。以这种方式,如果为多个XML输入数据流90或者为随后的条型码标记请求使用了相同的样式表,则XML处理器70无需经由网络43、44在外部检索相同的样式表,而可以是从存储器子系统26中检索该样式表,这可能更高效。
依据本实施例,依从要求者可以仅仅在某些时刻改变或者修改外部样式表简档84中的样式表。例如,依从要求者可以仅仅在每天上午1:00改变样式表。因此,供应商仅仅需要每日一次地将样式表从样式表简档84中更新到存储器子系统26中,例如,在依从要求者已经执行了样式表更新之后。然后供应商将知道临时地保存在存储器子系统26中的样式表是最新的样式表,至少直到更新按计划发生的这一时刻为止是最新的。
当然,样式表也是一种XML文档,并且因此它也由XML处理器70处理。因此,样式表的处理结果是图3中所示的XSLT样式表节点树120,它是被处理的样式表的“存储器表示”或者工作模型。正如现有技术中所公知的,该XSLT样式表节点树120可以是以“文档对象模型”(DOM)的形式。进一步来讲,为了效率,XSLT样式表节点树120可以驻留在超高速缓冲存储器中,如图中所示,驻留在XSLT样式表高速缓存器126中。XSLT处理器74对XSLT样式表节点树120中的数据进行操作,来执行它的依照样式表变换底层的值数据或者底层的元素名称的功能。
注意,尽管XSLT样式表在图3中被显示为对于XML处理器70的输入,但是XSLT处理器74处理该样式表。它最初被提供给XML处理器70是因为,为了后续处理,所有XML文档首先被处理并被置于适当的数据结构中。
XSLT处理器74可以对底层的值数据进行修改、再定位和再排列,或者可以添加到底层的值数据或者删除一些底层的值数据。例如,根据样式表的指导,底层的值数据可以被再排列为表格格式或者被再排列为列。具体来讲,样式表可以添加XSLFO格式化元素和属性。
在已经依照对应的样式表处理了标记值节点树100中的底层的值数据之后,产生了XSLFO实例节点树130。同样,正如现有技术中所公知的,XSLFO实例节点树130可以是以文档对象模块的形式。XSLFO实例节点树130包含XSLFO命令(版面编排指令),其相对于格式化和版面编排来指导XSLFO处理器78。然后XSLFO处理器78解释该XSLFO命令,并将这种命令应用于底层的值数据,以便正确地格式化和版面编排底层的值数据。XSLFO处理器78产生XSLFO区域节点树130,它表示在呈现之前的格式化的最终输出。
现在来参看图3,以及下文紧接着示出的一个被称为“用于XML输入数据流的代码段1”的代码段,代码段1举例说明了硬拷贝中的XML输入数据流90,例如它可以被ERP或者仓库管理系统88发送给XML打印机系统10。仅仅为了例证说明的目的,插入了行号,它不是代码的一部分。
用于XML输入数据流的代码段11 <?xml version=″1.0″encoding=″UTF-8″?>
<?xml-样式表type=″text/xsl″href=″D\Projects\XML\Native\Docs\ShipLabels.xsl″?>
<labels5 xmlnsxsi=″http//www.w3.org/2001/XMLSchema-instance″xsinoNamespaceSchemaLocation=″D\Projects\XML\Native\Docs\ShipLabels.xsd″>
<label>
<name>Albert Einstein</name>
10 <address>1234 Relative Way</address>
<city>Princeton</city>
<state>NJ</state>
<zip>08540</zip>
</label>
15 <label>
<name>Steven Hawking</name>
<address>5678 Black Hole Drive</address>
<city>Los Angeles</city>
<state>CA</state>
20 <zip>90007</zip>
</label>
<label>
<name>Richard Feynman</name>
<address>90 Quantum Circle</address>
25 <city>New York</city>
<state>NY</state>
<zip>10044</zip>
</label>
</labels>
XML输入数据流将方案文档标识为“ShipLabels.xsd”,并且在这一具体范例中,如代码段1中的行7处所示,可以在被称作“D/Projects/XML/Native/Docs”的目录中找到该方案文档。此外,XML输入数据流将样式表文档标识为“ShipLabels.xsl”,并且,如在代码段1中的行3处所示的,可以在被称作“D/Projects/XML/Native/Docs”的目录中找到该样式表文档。当然,该方案文档和样式表文档可以被放置在任何位置,例如作为因特网地址来标识出。
这一具体范例示出用于三个待打印的托运标记的底层的值数据和元素名称。每一托运标记包含一个如下在尖括号之间定义的XML元素名称<name>,<address>,<city>,<state>和<zip>。第一元素名称<name>的值是“Albert Einstein”,第二元素名称<address>的值是“1234 Relative Way”,第三元素名称<city>的值是“Princeton”,第四元素名称<state>的值是“NJ”,并且第五元素名称<zip>的值是“08540”。这是底层的值数据。
现在来参看图3、代码段1以及在下面紧接着示出的、被称作“用于XML方案的代码段2”的代码段,代码段2举例说明了一个XML文档的具体范例,该XML文档采用了在代码段1中的XML输入数据流中规定的XML方案文档的形式。仅仅为了例证说明的目的,插入了行号,它不是代码的一部分。
用于XML方案的代码段21<?xml version=″1.0″encoding=″UTF-8″?>
<xsschemaxmlnsxs=″http://www.w3.org/2001/XMLSchema″elementFormDefault=″qualified″>
5 <xselement name=″address″type=″xsstring″/>
<xselement name=″city″type=″xsstring″/>
<xselement name=″label″>
<xscomplexType>
<xssequence>
10 <xselement ref=″name″/>
<xselement ref=″address″/>
<xselement ref=″city″/>
<xselement ref=″state″/>
<xselement ref=″zip″/>
15</xssequence>
</xscomplexType>
</xselement>
<xselement name=″labels″>
<xscomplexType>
20<xssequence>
<xselement ref=″label″maxOccurs=″unbounded″/>
</xssequence>
</xscomplexType>
</xselement>
25 <xselement name=″name″type=″xsstring″/>
<xselement name=″state″>
<xssimpleType>
<xsrestriction base=″xsstring″>
<xsenumeration value=″CA″/>
30 <xsenumeration value=″NJ″/>
<xsenumeration value=″NY″/>
</xsrestriction>
</xssimpleType>
</xselement>
35 <xselement name=″zip″>
<xssimpleType>
<xsrestriction base=″xsint″>
<xsminInclusive value=″00000″/>
<xsmaxInclusive value=″99999″/>
40 </xsrestriction>
</xssimpleType>
</xselement>
</xsschema>
如上所述,该方案被用于验证底层的值数据。这要求校验确定提供了所有所要求的数据,确定没有提供无关的数据,确定所提供的数据在规定范围范围之内,等等。可以在该方案中依据应用来规定任何适当的验证方案。XML语言是健壮的,并且是可以为处理巨大数量的要求而编写的代码。
例如,如代码段2中的行5所示,正如XML方案规定中所定义的,上面在代码段2中所示的方案文档规定对应于元素名称<address>的底层的值数据必须是字符串。方案文档还规定对应于元素名称<name>、<address><city>、<state>和<zip>的底层的值数据必须还应按所指示的顺序来提供,如代码段2中的行9-15所示。进一步来讲,代码段2中所示的这一特定方案文档规定对应于元素名称<state>的底层的值数据必须是三种状态、即“CA”、“NJ”或者“NY”中的一种。当然,这仅仅是为了例证说明的目的而简化的范例,并没有包括所有的状态。代码段2中所示的方案文档还规定对应于元素名称<zip>的底层的值数据必须是在00000至99999的范围之内。如果XML输入数据流中的数据没有满足上述任一方案标准,则方案验证模块110将拒绝它,并且优选的是将错误消息返回给源88。
现在来参看图3、代码段1-2和在下面紧接着示出的、被称作“用于XSLT样式表的代码段3”的代码段,代码段3示出一个XML文档的具体范例,该XML文档采用了在代码段1中的XML输入数据流中规定的XSLT样式表文档的形式。仅仅为了例证说明的目的,插入了行号,它不是代码的一部分。
用于XSLT样式表的代码段31<?xml version=″1.0″encoding=″UTF-8″?>
<xsltransform version=″1.0″xmlnsxsl=″http://www.w3.org/1999/XSL/Transform″xmlnsfo=″http://www.w3.org/1999/XSL/Format″5 xmlnsbo=″http://www.zebra.com/2002/XSL/Barcode″>
<xsloutput method=″xml″version=″1.0″indent=″yes″/>
<xsltemplate match=″labels″>
<foroot>
<folayout-master-set>
10<fosimple-page-master master-name=″all-labels″>
<foregion-body margin=″lin″/>
</fosimple-page-master>
</folayout-master-set>
<fopage-sequence master-name=″all-labels″>
15 <foflow flow-name=″xsl-region-body″font=″12pt Times″>
<xslapply-templates/>
</foflow>
</fopage-sequence>
</foroot>
20 </xsltemplate>
<xsltemplate match=″label″>
<foblock break-after=″page″>
<xslapply-templates select=″name″/>
<xslapply-templates select=″address″/>
25 <foblock font=″bold 14pt Times″text-align=″left″>
<xslapply-tenmplates select=″city″/>
<xslapply-templates select=″state″/>
</foblock>
<xslapply-templates select=″zip″/>
30 <foblock>
<foinstream-foreign-object>
<bobarcode>
<bopostnet interpretation-line=″none″>
<xslvalue-of select=″zip″/>
35 </bopostnet>
</bobarcode>
</foinstream-foreign-object>
</foblock>
</foblock>
40</xsltemplate>
<xsltemplate match=″name″>
<foblock font=″bold 14pt Times″text-align=″left″>
<xslvalue-of select=″.″/>
</foblock>
45 </xsltemplate>
<xsltemplate match=″address″>
<foblock font=″bold 14pt Times″text-align=″left″>
<xslvalue-of select=″.″/>
</foblock>
50 </xsltemplate>
<xsltemplate match=″city″>
<xslvalue-of select=″.″/>
</xsltemplate>
<xsltemplate match=″state″>
55 <xsltext>,</xsltext>
<xslvalue-of select=″.″/>
</xsltemplate>
<xsltemplate match=″zip″>
<foblock font=″bold 14pt Times″text-align=″left″>
60 <xslvalue-of select=″.″/>
</foblock>
</xsltemplate>
</xsltransform>
如上所述,该样式表被用于变换数据。在这一具体范例中,代码段3的样式表定义了两种域名,也就是“bo”类型对象,它被选择作为“条型码类型对象”,以及“fo”类型对象,它被选择作为上面关于XSLFO处理器78所描述的格式化对象。正如现有技术中所公知的,这允许不同的对象之间的区分。样式表可以令某些数据被变换成乃至被添加。例如,由行40-62所指示出的,插入来自代码段1的XML输入数据流中的底层的值数据,也就是“einstein”、“1234Relative Way”等等。
该样式表还使得产生各种“fo”类型元素,它们被指定为格式化元素或者XSLFO对象。XSLFO对象包含XSLFO处理器“理解”并处理的版面编排类型命令。注意,所有具有首字“fo”的代码行并不是由XSLT处理器74解释,而是被传递到XSLFO处理器78上。
例如,代码段3的行21示出<xsltemplate match=“label”>,其后面是在行22的<foblock break-after=“page”>。这被XSLFO处理器78解释为在代码段1中规定的三个托运标记之间放置一个“分页符”。实质上,由于该分页符,一个新的托运标记被创建,每一新的托运标记包含代码段1中规定的底层的值数据。
进一步来讲,这一特定样式表规定插入“入流外来对象”,如行31所示。与定义了入流外来对象的行31-37相结合,行31被显示为<foinstream-foreign-object>。注意,入流外来对象没有由XSLT处理器74或者XSLFO处理器78处理。而是,该入流外来对象被传送至位图/条型码呈现引擎80,并由其进行处理。例如,代码段3的行32-36令包含“postnet”条型码元素的定义的<bobarcode>元素被插入,该元素以后将由位图/条型码呈现引擎80处理。在行34处,XSLT处理器74令来自XML输入数据流中的邮政编码作为<bopostnet>元素中的文本而被插入。
现在参看图3、代码段1-3、以及在下面直接示出的、被称作“用于XSLT实例节点树表示的代码段4”的代码段,代码段4表示由XSLT处理器74结合代码段3中的样式表产生的XSLFO实例节点树130输出的表示的特定范例,该输出是提供给XSLFO处理器78的XSLFO实例节点树的表示。仅仅为了例证说明的目的,插入了行号,它不是代码的一部分。
用于XSLFO实例节点树表示的代码段41<?xml version=″1.0″encoding=″UTF-16″?>
<foroot xmlnsfo=″http://www.w3.org/1999/XSL/Format″xmlnsbo=″http://www.zebra.com/2002/XSL/Barcode″>
<folayout-master-set>
5<fosimple-page-master master-name=″all-labels″>
<foregion-body margin=″1in″/>
</fosimple-page-master>
</folayout-master-set>
<fopage-sequence master-name=″all-labels″>
10<foflow flow-name=″xsl-region-body″font=″12pt Times″>
<foblock break-after=″page″>
<foblock font=″bold 14pt Times″text-align=″left″>Albert Einstein</foblock>
<foblock font=″bold 14pt Times″text-align=″left″>123415 Relative Way</foblock>
<foblock font=″bold 14pt Times″text-align=″left″>Princeton,NJ</foblock>
<foblock font=″bold 14pt Times″text-align=″left″>08540</foblock>
20 <foblock>
<foinstream-foreign-object>
<bobarcode>
<bopostnet interpretation-line=″none″>08540</bopostnet>
25 </bobarcode>
</foinstream-foreign-object>
</foblock>
</foblock>
<foblock break-after=″page″>
30<foblock font=″bold 14pt Times″text-31align=″left″>Steven Hawking</foblock>
<foblock font=″bold 14pt Times″text-align=″left″>5678 Black Hole Drive</foblock>
<foblockfont=″bold 14pt Times″text-align=″left″>Los35 Angeles,CA</foblock>
<foblock font=″bold 14pt Times″text-align=″left″>90007</foblock>
foblock>
<foinstream-foreign-object>
40<bobarcode>
<bopostnet interpretation-line=″none″>90007</bopostnet>
</bobarcode>
</foinstream-foreign-object>
45 </foblock>
</foblock>
<foblock break-after=″page″>
<foblock font=″bold 14pt Times″text-align=″left″>Richard Feynman</foblock>
50 <foblock font=″bold 14pt Times″text-align=″left″>90 Quantum Circle</foblock>
<foblock font=″bold 14pt Times″text-align=″left″>New York,NY</foblock>
<foblock font=″bold 14pt Times″text-55align=″left″>10044</foblock>
<foblock>
<foinstream-foreign-object>
<bobarcode>
<bopostnet interpretation-60 line=″none″>10044</bopostnet>
</bobarcode>
</foinstream-foreign-object>
</fob1ock>
</foblock>
65 </foflow>
</fopage-sequence>
</foroot>
简要地说明上述的代码段4的两个主要部分,也就是一个从行4开始的、具有代码<folayout-master-set>的部分,以及一个从行9开始的、具有代码<fopage-sequence master-name=“all-labels>的第二部分。代码的这一部分实质上定义了条型码标记将“看起来像”什么,或者怎样对它进行“版面编排”以及底层的值数据将怎样出现在该lay-out中。
相对于代码段1中所示的格式化底层的值数据,例如行12-13中所示的“bold 14pt Times”的字体属性以及文本对准=“left”将应用于“Albert Einstein”的底层的值数据,以便当打印条型码标记的时候,“Albert Einstein”的名称将被以14磅的Times字体打印,并且它将与条型码标记的左边边缘对准。正如现有技术中所公知的,可以规定各种格式化指令,这些指令将由XSLFO处理器78解释。
此外,XSLFO实例节点树130的表示的这一特定范例包含入流外来对象,如图代码段4的行21-26处所示,该入流外来对象可以不由XSLFO处理器78处理。而是,该入流外来对象可以被传送给位图/条型码呈现引擎80来处理。注意,在该处理中的这一刻,XSLFO处理器78不“知道”怎样打印条型码标记,因为XSLFO规范中没有包括条型码元素类型。而是,仅仅能够在条型码标记上作为文本来打印文本信息,诸如底层的值数据,也就是“Einstein,”、“1234 RelativeWay,”等等,如代码段1-2中所示。将不出现实际的条型码符号,因为XSLFO处理器78不“知道”怎样产生条型码符号。
由XSLFO处理器78进行处理的结果是XSLFO区域节点树140。注意代码段4中所示的入流外来对象不是由XSLFO处理器78处理的,而是被传送给XSLFO区域节点树140的一个或多个节点中的条型码/位图呈现引擎80。入流外来对象元素被称为<bobarcode>,并且被显示在代码段4的行21-26。条型码/位图呈现引擎80接收该<bobarcode>元素,并且处理该块中包含的代码。例如,呈现引擎80将行23-24、即<bopostnet interpretation-line=“none”>08540<bopostnet>解释为将这一特定节点定义为“postnet”条型码类型元素。正如对应的行业标准所定义的,可以定义许多不同的条型码符号类型,下面将讨论这一点。
待打印的作为条型码符号的底层的值数据是数字数据“08540”,如代码段4的行24中所示,该底层的值数据是与代码段1中所示的Albert Einstein的地址相关联的邮政编码。在这一特定范例中,仅仅邮政编码被转换为条型码符号。当然,任何和所有信息都可以依据应用被变换为条型码符号。此外,在这一特定范例中,代码段4中所示的入流外来对象仅仅涉及代码段1中所示的三个邮政编码。在本范例中,没有别的底层的值数据被变换为条型码符号。
现在结合代码段4参看图2-4,现在将阐述关于条型码/位图呈现引擎80以及处理入流外来对象的补充细节。如上所述,呈现引擎80处理由XSLFO处理器78产生的XSLFO区域节点树140的每一节点。正如现有技术中所公知的,XSLFO区域节点树140在存储器中被表示为文档对象模型。因此,可能存在多个节点。例如,一个节点可能包含入流外来对象,另一节点可能包含关联的元素名称,另一节点可能包含关联的文本数据,另一节点可能包含关联的属性,等等。
如图4中的块150中所示,XSLFO区域节点树140的节点被处理。具体来讲,呈现引擎80“知道”怎样呈现或者产生由入流外来对象定义的实际的条型码符号。商用的的XSLFO处理器不“知道”怎样处理这种表示条型码符号的入流外来对象,并因此不能产生或者呈现条型码符号。然而商用的XSLFO处理器可以以可接受的方式呈现文本,甚至可以呈现某些类型的入流外来对象。
如果特定节点不包含入流外来对象,意味着它可能包含例如文本数据,然后可以通过使用XSLFO处理器78而不是呈现引擎80的处理能力、以“标准”方式来处理这一节点,正如块154中所示出的。在一个实施例中,非入流外来对象被提供“回”给XSLFO处理器78,或者XSLFO处理器被通知XSLFO区域节点树140中的一特定的节点适合于由它处理。
如上所述,处理包含非入流外来对象的XSLFO区域节点树140中的节点可以由XSLFO处理器78进行处理。当然,不同的商用的XSLFO处理器将例如文本呈现为不同的格式。例如,如上所述的可以从Antenna House公司获得的被称为“XSL Formatter”的XSLFO处理器将节点呈现为WINDOWS“设备独立位图”格式。如上所述的可以从RenderX公司获得的被称为“XEP”的XSLFO处理器将节点呈现为“PDF”格式,而如上所述的可以从Apache Software Foundation获得的被称为“FOP”的XSLFO处理器也可以将节点呈现为“PDF”格式。
优选的是,XML打印机系统10使用可以从Apache SoftwareFoundation获得的“FOP”XSLFO处理器78,因为这一XSLFO处理器可以被配置为在它遇到它无法处理的入流外来对象的时候“调用”子程序或者其他处理功能。具体来讲,这一XSLFO处理器78可以被设置为调用此处所述的呈现引擎软件块80,来处理它无法处理的入流外来对象。
接下来,如块160中所示,如果节点包含无法由XSLFO处理器78处理的表示条型码的入流外来对象,则呈现引擎80校验来确定该入流外来对象是否具有一个专用于这一XML打印机系统10的“域名”。例如,呈现引擎80可以校验来确定与该入流外来对象相关联的该域名是否与对应于“Zebra公司域名”。该域名表示法在现有技术中是公知的。这在代码段4中行3中被表示为“xmlnsbo=″http://www.zebra.com/2002/XSL/Barcode″>”。因此,如代码段4中所示,上述定义的域名被应用于任何具有“bo”首字的元素。然后,这种具有“bo”首字的元素被呈现引擎80取得以进行处理,该“bo”首字类型的元素对应于条型码类型的入流外来对象。XSLFO处理器78将不“知道”怎样处理这种元素。
如果入流外来对象没有与适当的域名相关联,则它被传送回到XSLFO处理器78,假定它不是一个条型码类型的入流外来对象,因为XSLFO处理器也许能处理某些有限数目的入流外来对象。这是由从块160至块154的箭头162表示的。然而一般来讲,因为与入流外来对象相关联的数据本质上是绝对唯一的(诸如条型码)这一特定理由,存在或者创建了入流外来对象,并且从而,许多商用的或者通用XSLFO处理器不能处理他们。
注意,此处提及的商用的XSLFO处理器不一定无法处理所有入流外来对象。然而,他们无法处理对应于条型码符号的入流外来对象。
假定入流外来对象具有适当的域名,块170解释入流外来对象中的元素来确定条型码类型。例如,入流外来对象被显示在代码段4的行21-26。更具体地说,指示对应于条型码的正确域名的具有首字“bo”的条型码元素被显示为具有条型码类型“postnet”,如在代码段4的行23-24中所示的那样,其表现为<bopostnet interpretation-line=“none”>08540</bopostnet>。注意,代码段4的行41-42表示用于另一入流外来对象、即下一待打印的条型码标记的类似的条型码元素,其对应于代码段1中所示的“Steven Hawking”的地址。
可以在入流外来对象中,依据应用规定任何条型码类型。该条型码类型基于已知的条型码标准。例如,条型码类型不局限于postnet类型条型码符号,并且例如可以是“Industrial 2 of 5”、“PDF 417”、“UPC”等等。条型码“类型”规定待打印的条型码符号的基本结构,诸如条纹的粗度,条纹粗度与条纹间距宽度的比例,等等。每一特定已知的条型码标准被具体定义。
接下来,在已经根据入流外来对象确定了条型码类型之后,入流外来对象的属性被解释,以便确定条型码特性,如块176中所示。该特性可以修改创建条型码符号的方式。例如,“postnet”类型条型码的一个属性可以在代码段4的行23-24处看到,为‘interpretation-line=“none”。正如现有技术中所公知的,‘interpretation-line=“none”意味着没有对应的人类可读的文本与该特定条型码符号一道产生。与条型码元素相关联的属性的另一范例可以是条型码符号的高度,其也可以在入流外来对象中作为属性来规定。
使用从入流外来对象处获得的条型码类型和属性,呈现引擎80随后获得将被转换为条型码符号的实际的节点文本数据,如块180中所示。在本范例中,实际的条型码数据是邮政编码“08540”,如在代码段4的行24中的反向尖括号之间所示出的(>80540<)。从数字数据“80540”到表示条型码符号(例如,对于线性条型码)的行或者条纹的位图的物理转换,可以由例如在可从Zebra公司商业购得的条型码标记打印机中包含的软件例程来执行。此类适合的打印机例如可以包括,Xi型号系列的条型码打印机(XiIII+,90XiIII,96XiIII,140XiIII,170XiIII,220XiIII,等等),2800系列条型码打印机,Z4M、Z6M、105SL型号条型码打印机,等等。可从Zebra公司商业购得的条型码打印机中包含的此类已知的软件例程或算法是非常高效的,并且从而迅速地呈现条型码。
对于线性条型码,位图是通过将文本数据转换为一系列明暗条纹来呈现的,所述明暗条纹的相对宽度符合条型码符号体系的产业规范说明。可以在编码之前为文本数据添加校验字符,以便允许当由条型码扫描器读取该条型码的时候检验该条型码。依据符号体系,校验字符可以是需要的,或者可以是可选的。依据符号体系的编码要求,条纹可以被组合成条纹模块。可以在依据符号体系编码期间压缩文本数据。该条纹之前或者之后可以有一个或多个如符号体系规范说明所定义的“查找指示”条纹,所述“查找指示”条纹允许扫描仪更容易地定位条型码数据。
可以根据需要,为符号体系所要求的适当的编码和适当的物理尺寸应用其他算法。可以由XML数据中的属性规定条纹的高度、狭窄条纹的宽度,宽条纹与狭窄条纹的比例,及其他符号体系特定参数。此外,条型码位图可以按照XML数据中的属性所规定的,被旋转(通常是以九十度的增量)。
对于二维的条型码,位图是通过依照各种唯一的符号体系算法将文本数据转换为位模式来呈现的。二维的条型码通常比线性条型码允许对更多的文本数据进行编码。所述编码算法例如可以包括数据压缩、错误检验和校正、改变数据冗余度的级别、模块化、查找指示图案及如符号体系所定义的其他算法。可以由XML数据中的属性规定用户能指定的符号体系特定参数。然后可以按照XML数据中的属性所规定的那样放大和/或旋转由符号体系算法产生的位图。
一旦已经由块180产生了表示条型码符号的位图,则随后将该位图置于“主”或者“标记”位图184中或者与之合并,所述标记位图表示整个托运标记的图像,如块182中所示。托运标记包含人类可读文本,其他文本或者字符,以及条型码符号。注意,上述的位图可以是单独的,即用于文本的位图和用于条型码的位图,或者可以使用或者“组装”一个主位图作为处理进程。在这一点上,注意,呈现引擎80所依据来进行操作的树或者数据结构被称为“XSLFO区域节点树”,这意味着它包含不同的“区域”。这种区域可以对应于不同的或者单独的位图或者位图部分。然而,可以使用任何数目的适当的位图结构。位图的精确的结构或者配置或者位图的数目与本例如,当产生文本的时候,XSLFO处理器78可以在一个特定的位图中放置“它的”文本。所述文本可以对应于上述讨论到的名称“Albert Einstein”。因为这一文本也将与条型码符号一道被打印在托运标记上,所以“主”或者“标记”位图184将包含所有分量位图。然后,最终的“主”位图184被发送给打印机驱动程序54(图1),以便可以打印托运标记。
现在来参看图4-5,图5是上述在代码段1中规定的用于第一条型码托运标记的处理的最终输出的表示190。如上所述,依照对应的样式表呈现和格式化文本数据,同时还由呈现引擎80以条型码符号的形式呈现邮政编码192。注意,仅仅为了例证说明的目的,图5中所示的字体大小或者字体类型可以不与代码段3中所示的对应样式表中规定的那些相同。
现在来参看图6,一个候选实施例被示出。类似的附图标记被用于表示类似的结构。在这一特定实施例中,XML打印机系统10在一切情况下都无需包括或者特定地使用XML打印机设备。例如,在这一实施例中,外部请求者194可能希望将XML输入数据流被呈现为位图,以便它能够打印条型码标记,这可以远程来完成。因此,外部请求者194可以经由因特网或者其他网络43、44向XML服务器200发送请求。该请求可以具有与上面相对于图1-3和代码段1-4所描述的XML输入数据流相同的形式。该请求还可以具有包含XML数据的协议的形式,例如现有技术中所公知的SOAP(简单对象访问协议)。
作为响应,XML服务器200的计算机系统可以处理该XML输入数据流。在这一实施例中执行了上面描述的所有相同的处理功能,除了位图没有被发送给打印机驱动程序之外。而是,该位图被转换为任何适当的格式,诸如现有技术中所公知的“JPEG”或者“PNG”格式。然后JPEG或者PNG文件被返回给外部请求者194,然后外部请求者194将JPEG或者PNG文件相对于适当的打印机驱动程序来格式化,并且打印和/或显示该条型码标记。因此,本发明可以作为条型码呈现服务器来运行,而无需必定执行打印功能。
现在在图7-8中示出了图1中的打印机系统的候选实施例,其示出“混合”XML打印机系统300而不是图2-6中所示的“纯”XML打印机系统10。注意,这一实施例仍可以与图1中所示的计算机系统12和打印机系统50一起使用,并且类似的附图标记将用于表示类似的结构或部件。
在本实施例中,混合XML打印机系统300可以接收基于ZPL数据模板的XML数据,所述模板符合ZPL语言(Zebra程序设计语言),诸如ZPL I和/或ZPL II,以及它的任何变型。ZPL语言是一种格式化语言,其使用“补注号”字符和两个字母命令编码来定义一个命令。例如,“^XA”命令定义了新的标记格式的起始,而“^XZ”命令定义了标记格式的结束。
ZPL语言还包括“代字号”命令,其表示控制命令。例如,命令“~JR”是打印机复位命令,其由打印机直接地运行,并且对条型码标记的实际的格式化并不真正具有重要的意义。ZPL I和ZPL II是由本发明的所有者、伊利诺斯州Vernon Hills的Zebra公司开发的。注意,此处ZPL可与ZPL II交换地使用。
关于ZPL语言规范说明的更详细的情况能够在标题为“ZPL IIProgramming Guide Volume OneCommand Reference for X.10”(Manufacturer Part No.45541LB)、以及“ZPL II Programming GuideVolume TwoThe X.10 Environment”(Manufacturer Part No.45542LB)的文档中找到,这些文档可以在以下因特网网址“www.zebra.com/SS/manuals.htm.”处的Zebra公司网站处找到和下载。上述的文档在此全部引入以供参考。在图7-9的实施例中,打印机系统的“语言”是ZPL和XML的混合,因此打印机系统10可以被称为“混合XML打印机”。
现在已知,基于ZPL的打印机能够处理“按命令打印(on demandprinting)”和“存储标记格式”。按命令打印指的是当包含待打印的标记数据的数据流被发送给打印机的时候,它被立即打印。存储标记格式指的是用于标记的模板可以预先创建,并且被下载至打印机。然后该模板可以在打印机内部被内部地的调用,以便与稍后传输来的包含待打印的标记数据的数据流结合使用。
将在下面的说明中变得更加清楚的是,图2-6中的纯XML打印机系统实施例与图7-8中的混合XML打印机系统实施例之间的一个差别在于在混合XML打印机系统实施例中,数据模板是在ZPL中被预先确定的,并且首先被下载至打印机。还应注意的是,图7-8中的混合实施例不是图2-6中的实施例的纯XML打印机系统与已知的ZPL打印机的组合。它不是仅仅在纯XML模式与ZPL模式之间切换的“二合一”打印机。
图7-8中的混合XML打印机系统不同于图2-6中的纯XML打印机系统,其中XSLT被用于与被嵌入XSL模板中的XSL格式化元素相结合,来定义和版面编排标记。为了处理图2-6中的纯XML打印机系统的实施例中的标记的版面编排和格式化,公司(或者出售商)必须使用XSL格式化对象准备和定义标记布局,并且在许多情况中,还必须准备XSL样式表和XSL方案,如上文在纯XML打印机实施例中所述的那样。如果企业实体的ERP系统88能够首先使用XSL格式化对象等等(即,XSL样式表和方案)传输符合格式的XML数据,则将无需使用ZPL模板,这可以表示企业实体已经完成了向完全兼容的XML ERP系统的切换,从而免除了对于任何形式的ZPL的需要。
然而,某些公司可能不准备或者不愿意对这样一种将他的系统向“纯XML”的“完全转换”作出投资,因为此类公司可能已经在用于打印他们的标记的旧的ZPL模板作出了可观的投资。许多公司正构建基础架构,以允许从商务处理到商务处理容易地传送XML数据,因为以XML可兼容格式化传送此类数据正成为行业标准。尽管许多公司以及整个产业正沿着为数据使用XML格式的方向移动,但是此类公司可能不想仅仅为了作出向完全兼容的XML格式化的切换,而废弃他们在他们的模板数据库基础架构方面的投资。
因此,图7-8中的混合XML打印机实施例允许对XML格式数据使用现有的ZPL模板。ERP系统88可以沿用现有的ZPL模板,因为很可能为了经济的原因,还没有作出向符合格式的XML的“完全”切换。因此,XSL样式表、方案和格式化对象还没有在ERP地点处被实施,并且混合XML打印机系统提供了在此类环境中的成本效率的解决方案。
现在参看图7和代码段5,在下面直接地示出的这一被称作“代码段5——ZPL可下载的模板”的代码段表示可以在打印实际的条型码标记之前被传输到混合XML打印机系统的、并且可以为了将来的打印工作而将它保存在打印机系统的存储器中的ZPL格式模板的具体范例。仅仅为了例证说明的目的,插入了行号,它不是代码的一部分。
代码段5——ZPL可下载的模板1 ^XA^DFESHIPLABL.ZPL^FS^MCY^LRN^FWN^CFD,24^LH0,05 ^CI0^PR2^MNY^MTT^MMT^MD0^JJ0,0^PON^PMN^LT0^A0N,58,58^FO188,169^CI0^FN999^FDname^FS^A0N,58,58^FO188,244^CI0^FN998^FDaddress^FS^A0N,58,58^FO188,319^CI0^FN997^FDcity^FS10 ^A0N,58,58^FO657,319^CI0^FN996^FDstate^FS^A0N,58,58^FO188,394^CI0^FN995^FDzip^FS^BY4^FO 188,488^BZN,35,N^FN995^FDzip^FS^PQ1,0,1,Y
14 ^XZ正如现有技术中所公知的,行1和14中显示的命令(^XA,^XZ)定义了模板的开始和结束,这是在ZPL语言中所规定的。行2指示被下载至混合打印机系统300的格式模板被存储在位于由“ESHIPLABL.ZPL”定义的位置处的混合打印机的存储器中,其中“E”表示存储设备标识符,它例如可以是盘驱动。然而,可以使用任何合适的存储设备。包括这一命令指示这一格式模板要被保存。行3-6表示由ZPL程序设计语言所提供的一些不同打印机设置和起动命令。
现在参看行7,具有关联参数“N”的“^A0”命令意味着使用字体号0、并且在正常的(“N”)方位(即,该字体不被旋转)来创建文本域,其中“58,58”表示将被打印的文本的高度和宽度(以点为单位)。正如ZPL语言中所提供的,命令“^FO188,169”定义了域原点,以便文本将被放置在坐标188、169处(即,从标记的起始处开始横跨188点,并向下169点)。
命令“^FN999”(具有参数“999”的FN命令)定义了变量域,它将包含将在稍后被下载至打印机的可变信息。在这一点上,这稍微不同于标准ZPL。在标准ZPL中,当接收了模板中的“^FN”命令的时候,不与命令一道提供数据,因为当稍后调用模板的时候,发送规定了该变量数据的位置的随后的“^FN”命令,其后是数据本身。然而,在这一混合实施例中,在“^FN”命令之后紧接着提供了某些“关联”数据,由“^FD”数据域命令指示出。在这一具体范例中,在“^FN”命令之后紧随的、但在“^FD”数据域命令之前的数据被显示为“name”,它是将与稍后从ERP或者仓库系统那里发送来的XML数据相匹配的数据。因此,当代码段5中所示的模板由混合XML打印机系统300接收到的时候,它被存储在打印机的存储器中,并且另外,“name”和域“999”之间的“关联”被存储。
类似地,在行8,“address”和域998之间的关联被存储,在行9,“city”和域997之间的关联被存储,等等。注意,例如由“name”、“address”、“city”等等表示的域不是将由ERP系统88作为XML数据发送的实际数据。而是,“name”、“address”和“city”是“标签”或者“关联”,其将稍后将由ERP系统发送的数据分别与域位置或者标识符、即“999”、“998”和“997”关联起来。
现在参看行12,“^BY”命令为它之后的条型码命令定义缺省参数。在该情况下,参数4定义了狭窄条纹宽度是4点。“^FO”命令定义将被打印的条型码将被置于坐标188,488。“^BZ”命令定义了一个具有标准方位(参数N)、高度35点(参数35)、并且没有人类可读解释行(参数N)的条型码,它是一个postnet类型条型码格式。进一步来讲,具有参数995的“FN”命令规定了被标识为“995”的标记域与将被下载的XML数据的名称之间的关联,它是由具有“zip”属性的数据命令“^FD”定义的,该属性进一步规定“zip”是将被下载以创建实际的打印条型码的XML数据的名称。被打印的实际条型码是邮政编码304,如图9中所示。
当然,如图9中所示,文本域被打印在条型码标记305以及条型码本身304上。此类域例如可以包括名称306,地址308,城市310,州312,和文本邮政编码314。
因此,在本实施例中,代码段5中所示的模板被存储在混合XML打印机系统300中,并且没有执行真正的“工作”(即,还没有打印标记)。总之,如上所述,行7-11定义了文本域,行12与其他参数一道定义了条型码,该条型码是同和在稍后从ERP系统88发送来的实际的XML数据相关的关联一道定义的。代码段5的模板可以定义哪些域是静态的和哪些域是可变的。变量域具有变量名称(存储在^FD命令中),其可能与稍后被下载的数据相关或者“关联”,所述数据对应于被打印的标记。
因此,在图7-8中的混合实施例中,“^FD”命令(即后面跟有“name”)确定将在最终跟随在模板下载之后的实际的XML数据中、而不是在在将被打印在条型码标记上的实际数据中被发送的变量的名称。
为了了解上述代码段5的格式模板是如何用于操作中的,在下面紧接着示出代码段6,其被称作“代码段6--供ZPL模板使用的下载XML数据”。仅仅为了例证说明的目的,插入了行号,它不是代码的一部分。
代码段6--供ZPL模板使用的下载XML数据1 <?xml version=″1.0″encoding=″UTF-8″?>
<!DOCTYPE labels SYSTEM″label.dtd″>
<labels_FORMAT=″ESHIPLABL.ZPL″_QUANTITY=″1″_PRINTERNAME=″Printer1″_JOBNAME=″LBL101″>
5 <label>
<variable name=″name″>Albert Einstein</variable>
<variable name=″address″>1234 Relative Way</variable>
<variable name=″city″>Princeton</variable>
<variable name=″state″>NJ</variable>
10 <vaiiable name=″zip″>08540</variable>
</label>
<label>
<variable name=″name″>Steven Hawking</variable>
<variable name=″address″>5678 Black Hole Drive</variable>
15 <variable name=″city″>Los Angeles</variable>
<variable name=″state″>CA</variable>
<variable name=″zip″>90007</variable>
</label>
<label>
20 <variable name=″name″>Richard Feynman</variable>
<variable name=″address″>90 Quantum Circle</variable>
<variable name=″city″>New York</variable>
<variable name=″state″>NY</variable>
<variable name=″zip″>10044</variable>
25 </label>
</labels>
代码段6表示ERP系统88或者仓库管理系统将发送给混合XML打印机系统300的、但是是在代码段5的格式模板首先被下载至混合XML打印机系统之后的实际的XML数据流,在代码段5和6的具体范例中,可以使用的仓库管理系统例如是一个Oracle仓库管理系统(“Oracle系统”或者“Oracle WMS”)。当然,可以使用任何商务系统,诸如Oracle,SAP,等等。在本具体范例中,Oracle系统从它的数据库中收集数据,并将该数据格式化为用于向打印机传送的特定的XML格式。因为本具体范例使用Oracle系统,所以代码段6的模板使用Oracle XML语义。
在这一点上,由Oracle仓库管理系统使用的特定XML语义是在代码段6的行2中、由“DTD”或者文件类型定义所定义的,其被标识为“label.dtd”,正如现有技术中所公知的。此外,正如现有技术中所公知的,ERP系统88或者Oracle系统具有规定被打印的XML数据所采用的格式的能力。借助技术背景,这一能力可能已经本来就被构建到Oracle系统及其他ERP系统中,因为此类系统是被设计作为与定制“中间件”软件系统的接口,其处理Oracle或者ERP系统和所使用的具体的条型码打印机之间的格式转换。本混合打印机免除了对于这样一种“中间件”系统的需要。
然而,由Oracle系统传输的XML数据在代码段6的行3规定存在一种被称作“labels”的XML元素,其具有被称作“FORMAT”的属性。这一属性规定所使用的特定格式模板。在本具体范例中,供传输XML数据使用的格式模板被标识为″ESHIPLABL.ZPL″,其是先前被存储在混合XML打印机系统300中的格式模板,如代码段5中所示,并且其是基于ZPL的格式模板。因此,先前被下载并且被存储在混合XML打印机系统300的存储器中的格式模板可以从由“ESHIPLABL.ZPL”规定的位置重新调用。
行3还包含“labels”元素的某些附加属性,诸如“_QUANTITY”、“_PRINTERNAME”和“_JOBNAME”。属性“_QUANTITY,”规定被打印的条型码标记的数目,而属性“_PRINTERNAME,”和“_JOBNAME”是混合XML打印机系统300不需要的继承域,但是尽管如此仍然被包括在了Oracle数据中,因为如上所述、此类数据原先是被创建用于与中间件软件接口的。
代码段6包含三组“label”数据,分别在行5-11、12-18和19-25处被示出。注意,这三组“label”数据看起来类似于代码段1,即行8-14、15-21和22-28,因为两个代码段都分别涉及“AlbertEinstein”、“Steven Hawking”和“Richard Feynman”,并且具有用于地址、城市、州和邮政编码数据的关联域。因此,代码段6示出的数据对应于三个单独的待打印标记。然而,注意,对于待打印的三个标记中的每一个,所有收件人信息均是作为文本打印的,但是仅仅邮政编码域是作为实际的条型码打印的。这是因为在代码段5、行12的模板中定义的“^BZ”命令。
参见代码段5和6,代码段6中所示的由Oracle系统传输的数据随后与在代码段5中所示的对应格式模板相关联。例如,在代码段6的行6中,变量名“name”对应于“Albert Einstein,”,其是实际的XML文本数据。使用先前保存的代码段5的模板,在“name”(其内容是“Albert Einstein”)和代码段5的行7中所示的域号“999”之间作出关联。然后XML数据“Albert Einstein”被保存在由域号999定义的存储器中。
类似地,XML数据“1234 Relative Way”被保存在由域号998定义的存储器中,XML数据“Princeton”被保存在由域号997定义的存储器中,XML数据“NJ”被保存在由域号996定义的存储器中,等等。一旦XML数据输入流中包含的所有数据都已经与对应的模板相关联,并且已经被存入存储器,则打印标记。
现在参看图7和8,图7表示混合XML打印机系统300的特定实施例的高层功能方框图,而图8图示出混合XML打印机系统的一个特定实施例的组合的高层软件方框图和数据流程图。如上所述,相对于纯XML打印机系统,混合XML打印机系统300从企业资源规划(ERP)系统88那里接收数据。该数据可以包含XML分量和ZPL分量两者,诸如XML数据和/或ZPL模板数据。
图7的高级块图示出使用了SAX处理器320,其是一种XML处理器。借助技术背景,SAX处理器(XML的简单API)不使用由上面相对于图2-6中的纯XML打印机系统所描述的XML处理器所使用的DOM(文档对象模型)处理模型。
如上所述,基于DOM的XML处理器为了实现它的处理步骤,在存储器中创建一个节点树,正如现有技术中所公知的。如上文相对于图2-6中的实施例所描述的那样,当执行XLS类型处理时这是需要的。因此,所有数据都被存储在存储器中,并从而可能占用大量存储器。然而,SAX处理器解释XML语法和数据流,而不是在存储器中建立节点树,它创建由事件处理程序处理的“事件”,正如现有技术中所公知的。SAX处理器是非常存储器高效的,其在处理大量XML数据的时候是令人满意的。
然而,在图7-8中的这一候选实施例中,优选的是不执行XSL类型处理,因此没有要求基于存储器中的节点树进行处理。因此,没有使用严格基于DOM的XML处理器,而是可以使用SAX处理器,如图7中所示。术语“SAX”仅仅涉及关于怎样处理XML语言的数据和语法的规范。例如,可以在本实施例中使用的商用的XML处理器是可以从Thai Open Source Software Center,Ltd.获得的“Expat”XML处理器。尽管这一特定型号的XML处理器具有起到基于DOM的XML处理器或者非基于DOM的SAX处理器两者的作用的能力,但是为了本实施例的目的,该处理器优选的是被配置作为非基于DOM的XML处理器,并从而被称为SAX处理器。
如图7中所示,除了SAX处理器320之外,还示出了ZPL处理器322。然后,从SAX处理器320和ZPL处理器322开始的数据通路被路由到被标记为“变量数据集成”的块328。变量数据集成块328将从ERP系统88接收到的XML数据组合,并应用该数据或者将该数据与先前由ZPL模板定义的域“关联”,如上文相对于代码段5的ZPL模板所描述的那样。实质上,在这一步骤,实际的XML数据、例如名称“Albert Einstein,”被保存在它的由代码段5的模板的999定义的关联位置,等等。
接下来,由位图/条型码呈现块330呈现数据,所述处理与被用于已知的商用的ZPL打印机的已知ZPL位图呈现相似。例如,可从伊利诺斯州的Vernon Hills的Zebra Technologies公司商业购得的以下已知的ZPL打印机可以包括如下的能执行ZPL的位图/条型码处理的软件、硬件、和/或固件Zebra型号XiIII+,90XiIII,96XiIII,140XiIII,170XiIII,220XiIII,型号Z4M,Z6M,105SL和Zebra公司的任何Xi型号系列的条型码打印机。注意,所述位图/条型码呈现块330优选的是在不使用任何XSLFO处理的情况下执行,所述处理是在纯XML打印机系统实施例中要求的,并且不使用XSLT样式表或者方案。
条型码是如上文对于纯XML打印机实施例所述的那样呈现的,但是优选的是具有这样的例外条型码参数没有在XML数据中作为属性来规定,而是优选的是由格式模板中的ZPL命令参数规定的。例如,ZPL命令“^BY2,2,100”为一个线性条型码规定,狭窄条纹宽度是2点,宽条纹宽度与狭窄条纹宽度的比例是2,并且条纹的高度是100点。
在呈现位图之后,它被路由到打印机驱动程序54,这也在图1中示出。打印机驱动程序54是一种上面描述的部件的范例,所述部件的功能根据相关联的处理装置的实际位置,可以由计算机系统12中的处理装置、或者由处理装置60(图1)执行。此外,单一处理装置如果充分地强大,则可以为该混合XML打印机系统300处理所有功能。
现在参看图1、7和8,图8图示出组合的高层软件方框图和数据流程图的具体实施例。下文所述的软件可以被图1中的计算机系统12的处理器28执行。此外,处理器28可以执行对计算机系统12和打印机系统50两者通用的功能。可能有一个或多个处理器,它们可以一齐起作用或者可以单独地起作用。处理或者处理功能是否由计算机系统、或者在计算机系统中、或者由打印机系统、或者在打印机系统中执行,不是针对于本发明的范围的材料。
如下文中将说明的,经过图8中所示的处理步骤的多条“路径”可以在SAX处理器320的控制下发生。然而,这种多条“路径”不一定是线性的,因此可能没有必要在图8中通过具体线条或者箭头示出一条精确的路径。描述了一种重复过程,其可能不具有图8中所示的精确的开始和结束点。而是,可以示出通过该路径产生的行为或者结果,并从而可以在图8中以短划线示出一条将处理控制返回给SAX处理器320“候选路径”。这是指示该路径可以是重复的、以及SAX处理器320可以在处理到达其终点之前循环或者重复多次的简略方式。
仅仅为了例证说明的目的,在经过图8中图示出的处理的第一“路径”中,ZPL模板首先被发送给混合XML打印机系统300,其中待打印的实际数据还没有被发送。在也将在下文中描述的第二“路径”中,表示待打印的条型码标记的XML数据被发送给打印机系统,以便依照先前地保存的ZPL模板来进行打印。
如图8中所示,从ERP系统88接收数据输入流340,并且如上所述,该数据输入流340可以包含XML数据和/或ZPL模板数据。SAX处理块320最初接收和分析数据输入流340。注意SAX处理块320实际上是由XML处理器执行的,因为SAX处理器是以SAX模式工作的XML处理器。因此,分析XML处理器或者XML处理块可以被交换为分析SAX处理器或者SAX处理块。然而,如上所述,XML处理器优选的是以SAX模式工作,并因此被称为SAX处理器320。
首先,SAX处理块320通过将标准XML语法规则应用于数据输入流,确定数据输入流340是否是符合格式的XML数据。注意,图8中的SAX处理块320实质上与图7中的SAX处理器相同,只是图7示出某些硬件,而图8示出数据流程。此处将可交换地使用术语SAX处理器和SAX处理块。
如果SAX处理块320确定数据输入流不符合XML语法,则认为数据输入流是基于ZPL的。因此,SAX处理块320将数据输入流340路由至ZPL处理块322,用于进一步处理。注意,图8中的ZPL处理块322实质上与图7中的ZPL处理器相同,只是图7示出某些硬件,而图8示出数据流程。此处将可交换地使用术语ZPL处理器和ZPL处理块。
然后,ZPL处理块322处理或者分析数据输入流340,其表示ZPL格式模板。优选的是,ZPL处理块322接收“标记开始”命令(^XA),其使得开始处理格式模板。格式模板在代码段5中被示出。
不同的ZPL命令管理处理并定义标记的域,实质上建立和定义了待打印的数据。打印机控制及其他命令可以在处理的这一阶段被接收。当已经下载了所有格式模板的时候,ZPL处理块322遇到“标记结束”命令(^XZ),其令格式模板被保存。注意,具有对应标识符“ESHIPLABL.ZPL”的^DF命令(代码段5的行2处所示)向ZPL处理块322指示格式模板优选的是被内部地保存在“E”设备上的打印机系统中,并放置于名称为“shiplabl.zpl”的文件中。当然,格式模板无需被内部地保存在打印机系统中,它可以被保存在任何存储位置,诸如在网络服务器或者可经由通信网络访问的远程地点上。
^DF(下载格式)ZPL命令指示其所属的标记格式被存储而不是被直接地打印。所述保存实际上是在遇到^XZ的时候发生的,^XZ指示已经接收了所有模板数据。
在图8中还应注意的是,没有完成方框的垂直线条的、被标记为“ZPL标记格式”的块(352)是该图中用于数据存储器的符号。这指示来自输入流中的该模板数据被存储在数据存储器中。离开数据存储器352的线指示在以后的某一时间,该数据将从数据存储器中为了另外的处理而被检索出来。该数据流程路径是从块360至存储器至块356,但是这不表示实际的“控制流”,“控制流”不是一个线性流。
尽管标记为“重新调用ZPL标记格式”的块356被示为连接到如上所述的标记为“保存ZPL标记格式”的块360,但是处理可能不是线性的,并因此数据流程可能不一定是从“保存ZPL标记格式”块360延伸至或者流至“重新调用ZPL标记格式”块356。而是,如上所述的那样,整个处理是重复的,并且如块360中所示,在这一起始的“路径”中,在存储了ZPL标记格式之后,输入数据流的控制可以恢复回到SAX处理块320用于延续的处理,如通过短划线370所示的那样。如果待处理的数据输入流340中没有另外的数据,处理终止,并且等待另外的下载数据。
在经过图7-8中图示出的处理的第二“路径”中,ERP系统88可以传输实际的XML数据,其将由混合XML打印机系统300依照先前下载的ZPL模板处理。例如,SAX处理块320可以接收符合格式的XML数据,其可以规定跟随有标记数据。为了处理实际数据,被存储的ZPL格式被调用,如标记为“重新调用ZPL标记格式”的块356所示,以便可以结合输入的XML数据流来使用调用的格式模板。
SAX处理块320处理XML语法,并且确定由数据输入流340定义的各种元素和属性。在本实施例中,一旦接收“_FORMAT”属性,数据输入流340被临时地中断,并且输入数据来自被存储在打印机系统300中的格式模板,并且从而由ZPL处理块322解释被嵌入格式模板中的ZPL命令。一旦已经解释了格式模板中的命令,数据输入流340再次成为SAX处理块320,其继续处理XML数据。
经过被SAX处理器320控制的处理的另外的路径,可以如上文所述的那样,导致发起各种“事件”。例如,“变量数据SAX事件”376可以被发起,以便格式模板中的各域被填充所接收的对应的或“关联的”XML数据。这是通过被标记为“匹配XML变量与ZPL标记格式变量”的块380表示的。实质上,XML数据输入流340中的变量与格式模板中的域相关联。例如,在这一步骤中,XML变量、诸如代码段6中所示的实际的XML数据“Albert Einstein”(图9中的306),与ZPL标记格式变量、诸如代码段5的ZPL模板中的标记变量“name”相匹配。
SAX处理器320可以发起进一步的事件来处理上面描述的工作,诸如“开始标记SAX事件”384,和“其他SAX事件”388。经过受到SAX处理器320控制的图8中的处理的这一路径或者其他路径可以导致产生“其他SAX事件”,其可以由标记为“处理事件”的块390处理。例如,此类“其他”事件可以包括“设置打印机速度事件”、“设置打印标签量事件”、“选择介质事件”、“选择使用的色带事件”、“选择纸张事件”、“使用300dpi打印机事件”、“使用600dpi打印机事件”、“变量数据事件”,等等。
此类事件的数目实际上是无限的,并且是由硬件打印机系统的类型、配置和能力所决定的。实质上,打印机的所有方面与功能可以通过使用在数据输入流340中发送的代码来控制。这也允许打印机确定它是否有能力或者被配置为打印由XML数据流描述的标记,并且选择性地在其不能打印的时候返回错误信息。尽管在代码段6中对应于基于Oracle的XML数据,仅仅示出有限的“其他命令”(也就是,quantity=1和printer name=printer 1,两者都显示在行3),实质上可以在打印机中控制的任何功能或者特征都可以在XML输入数据流中规定,如上所述。因此,在实际的XML输入数据和打印机控制代码之间可以有一个紧密的绑定。
还应注意的是,此类“其他”命令和由SAX处理块320响应于该命令产生的对应的“其他事件”不属于或者不专用于Oracle系统,这意味着Oracle系统不必“知道”这些命令做什么或者怎样使用它们。只有当此类被下载的命令在SAX处理期间匹配时,该命令和随后产生的事件才有意义。
当接收了“标记元素结束”事件(</label>),该标记完成并且现在可以被打印。然后控制被路由到ZPL格式化引擎处理394,其引起标记被打印。优选的是,ZPL格式化引擎处理394的功能包括位图/条型码呈现功能。因此,块394将被称为ZPL格式化引擎。这一组合的功能为标记上的文本、条型码及其他域中的每一个确定位图,将具有适当旋转和放大率的单独的位图集成为单一标记位图396并且将完成的标记位图发送至打印引擎(或者图1中的打印机驱动程序54),用于在介质上物理呈现。如上所述,ZPL格式化引擎处理394可以在各种商用的ZPL打印机中找到,例如在可从伊利诺斯州的Vernon Hills的Zebra Technologies公司(Zebra Technologies Corporationof Vernon Hills,Illinois)商业购得的打印机中,其可以包括以下打印机机型XiIII+,90XiIII,96XiIII,140XiIII,170XiIII,220XiIII,Z4M、Z6M、105SL型号,以及Xi型号系列的条型码打印机。
ZPL格式化引擎处理394实质上确定待打印的标记中包含的所有域,并且确定必须为每一域做什么。例如,ZPL格式化引擎处理394可以确定使用字体号零、并且在正常的(“N”)方位打印包含代码段6的行6中的数据“Albert Einstein”(图9中的306)的域,并且其高度为58点,宽度为58点,并且从起始坐标188、169的域开始,这是由代码段5的行7所指示出的。
因此,ZPL格式化引擎处理394检查由格式模板结合对应的XML数据定义的所有域,并且实质上确定了怎样在标记上创建表示文本或者条型码的点(或者位)。通过基于为用于说明线性条型码的水平和垂直尺寸以及二维条型码的放大率的域所规定的条型码符号体系,将适当的位图产生算法应用于该域参数,格式化和呈现条型码域。
为了举例说明本发明可以被制作和使用的凡是,已经说明了根据本发明的XML打印机系统、包括纯XML打印机系统和混合XML打印机系统的具体实施例。应当被理解的是本发明的其他变型及其修改方案以及其各个方面的实现方式对于本领域中的技术人员是清楚直观的,并且本发明不被所描述的具体实施例所限制。因此本发明意图涵盖属于此处公开和主张的基本底层原理的真实精神和范围的任何以及所有的修改方案、变型、或等效物。
权利要求
1.一种用于基于可扩展置标语言(XML)输入数据流来打印条型码标记的XML打印机系统,该XML打印机系统包括具有介质控制系统的打印机设备,打印头组件,和打印头驱动器,该XML打印机系统包括可操作地与所述打印机设备耦合的计算机系统;所述计算机系统进一步包括存储器子系统;可操作地与网络耦合的通信接口;XML处理器,被配置为接收和处理所述XML输入数据流,并且从方案简档中获得在XML数据流中标识的方案,所述XML处理器基于所获得的方案验证所述XML数据流;可扩展的样式表语言变换(XSLT)处理器,被配置为从样式表简档中获得在XML数据流中标识的样式表,XSLT处理器基于所获得的样式表,将所述XML输入数据流中的数据变换为变换的XML数据;可扩展的样式表语言格式化对象(XSLFO)处理器,被配置为基于样式表中包含的XSLFO指令,将所述变换的XML数据格式化为已格式化的XML数据;以及条型码呈现子系统,被配置为接收已格式化的XML数据,并且产生表示所述条型码标记的位图。
2.如权利要求1所述的系统,其中所述存储器子系统是从包括RAM、ROM、硬盘存储器和数据库系统的存储器部件组中选择出来的。
3.如权利要求1所述的系统,其中所述存储器子系统远离所述计算机系统,并且可经由网络访问。
4.如权利要求1所述的系统,其中所述存储器子系统被结合进所述计算机系统中。
5.如权利要求1所述的系统,其中所述计算机系统包括从包含计算机、微处理器、RISC处理器、CISC处理器、大型计算机、工作站、单片计算机、分布式处理机、服务器、控制器、微控制器、离散逻辑计算机以及因特网计算机的组中所选择出来的处理器。
6.如权利要求1所述的系统,其中所述XML方案和XSLT样式表是XML文档。
7.如权利要求1所述的系统,其中所述计算机系统和所述打印机设备被封装在共用的外壳中。
8.如权利要求1所述的系统,其中所述计算机系统和所述打印机设备被封装在独立的外壳中。
9.如权利要求1所述的系统,其中所述计算机系统和所述打印机设备被封装在独立的外壳中,并且经由网络相互通信。
10.如权利要求1所述的系统,其中企业资源规划(ERP)系统将所述XML输入数据流发送至所述XML打印机系统,以便发起条型码标记的打印。
11.如权利要求10所述的系统,其中所述企业资源规划系统是仓库管理系统。
12.如权利要求10所述的系统,其中所述企业资源规划系统与所述XML打印机系统经由网络耦合。
13.如权利要求10所述的系统,其中如果依照该方案、所述XML输入数据流没有成功地验证,则所述XML处理器将错误指示传输给企业资源规划系统。
14.如权利要求1所述的系统,其中所述网络是从包含局域网、远程网络、专用网、以太网、因特网、公共交换电话网(PSTN)和普通老式电话系统(POTS)的网络组中选出来的。
15.如权利要求1所述的系统,其中所述样式表简档包含多个样式表,并且由所述计算机系统经由网络远端访问。
16.如权利要求1所述的系统,其中所述方案简档包含多个方案,并且由所述计算机系统经由网络远端访问。
17.如权利要求1所述的系统,其中所述简档中的样式表中的至少一个以及所述简档中的方案中的至少一个被定期更新。
18.如权利要求1所述的系统,其中从所述样式表简档处获得的样式表中的至少一个以及从所述方案简档处获得的方案中至少一个,在从相应的简档中检索出之后被临时地存储在存储器子系统中。
19.如权利要求1所述的系统,其中所述条型码呈现子系统处理在样式表中定义的入流外来对象。
20.如权利要求19所述的系统,其中所述入流外来对象是条型码类型的对象。
21.如权利要求20所述的系统,其中所述XSLFO处理器无法处理条型码类型的入流外来对象。
22.如权利要求1所述的系统,其中所述打印机设备至少包含一个用于基于在样式表中规定的条型码类型来产生条型码符号的算法。
23.如权利要求1所述的系统,其中所述条型码呈现子系统向所述打印头驱动器提供所述位图,以便于打印条型码标记。
24.如权利要求1所述的系统,其中外部源向所述打印机系统传输一个请求,以便产生条型码标记位图。
25.如权利要求24所述的系统,其中所述外部源经由网络传输所述请求。
26.如权利要求24所述的系统,其中所述外部源将XML输入数据流传输至打印机系统。
27.如权利要求1所述的系统,其中外部源向打印机系统传输请求以便产生条型码标记位图,并且响应于该请求,XML打印机系统依照权利要求1来处理所述请求,并将位图传输至所述外部源。
28.如权利要求1所述的系统,其中所述计算机系统从外部源接收请求以呈现条型码标记,所述外部源传输所述XML输入数据流并且其中由所述条型码呈现子系统产生的位图被传输到所述外部源。
29.一种供条型码打印机设备使用的XML处理系统,包括可操作地与所述条型码打印机设备耦合的计算机系统;所述计算机系统进一步包括XML处理器,被配置为接收和处理XML输入数据流,并且从方案简档中获得在XML数据流中标识的方案,所述XML处理器基于所述获得的方案验证所述XML数据流;可扩展的样式表语言变换(XSLT)处理器,被配置为从样式表简档中获得在XML数据流中标识的样式表,XSLT处理器基于所述获得的样式表,将所述XML输入数据流中的数据变换为变换的XML数据;可扩展的样式表语言格式化对象(XSLFO)处理器,被配置为基于样式表中包含的XSLFO指令,将所述变换的XML数据格式化为已格式化的XML数据;以及条型码呈现子系统,被配置为接收已格式化的XML数据,并且产生表示所述条型码标记的位图。
30.一种在用于基于可扩展置标语言(XML)输入数据流来打印条型码标记的XML打印机系统中产生条型码标记的方法,该XML打印机系统包括具有介质控制系统的打印机设备,打印头组件,和打印头驱动器,所述方法包括从方案简档中获得在XML数据流中标识的方案;使用XML处理器处理所述XML输入数据流;基于所述获得的方案验证所述XML数据流;从样式表简档中获得在XML数据流中标识的样式表;基于所述获得的样式表,使用可扩展的样式表语言变换(XSLT)处理器,将所述XML输入数据流中的数据变换为变换的XML数据;基于所述样式表中包含的XSLFO指令,使用可扩展的样式表语言格式化对象(XSLFO)处理器,将所述变换的XML数据格式化为已格式化的XML数据;基于所述已格式化的XML,使用条型码呈现子系统产生表示所述条型码标记的位图,所述条型码呈现子系统处理在所述样式表中定义的条型码类型的入流外来对象;以及将所述位图传输至所述打印头驱动器,以便于打印条型码标记。
31.一种供条型码打印机设备使用的XML处理系统,包括可操作地与所述条型码打印机设备耦合的计算机系统;所述计算机系统进一步包括XML处理器,被配置为接收和处理XML输入数据流,并且获得在XML数据流中标识的方案,所述XML处理器基于所获得的方案验证所述XML数据流;可扩展的样式表语言变换(XSLT)处理器,被配置为获得在XML数据流中标识的样式表,XSLT处理器基于所获得的样式表,将所述XML输入数据流中的数据变换为变换的XML数据;可扩展的样式表语言格式化对象(XSLFO)处理器,被配置为基于样式表中包含的XSLFO指令,将所述变换的XML数据格式化为已格式化的XML数据;以及条型码呈现子系统,被配置为接收已格式化的XML数据,并且产生表示所述条型码标记的位图。
32.一种用于基于可扩展置标语言(XML)输入数据流和格式模板打印条型码标记的XML打印机系统,该打印机系统包括具有介质控制系统的打印机设备,打印头组件,和打印头驱动器,所述打印机系统包括可操作地与所述打印机设备耦合的计算机系统;所述计算机系统进一步包括存储器子系统;SAX处理器,被配置为接收和处理所述XML输入数据流;ZPL处理器,被配置为接收和处理格式模板;变量数据集成器,被配置为产生XML输入数据流中包含的XML数据和格式模板之间的关联。格式化引擎,被配置为依照受格式模板支配的格式对关联的XML数据进行格式化;以及条型码呈现引擎,被配置为接收所述关联的并且已格式化的XML数据,并且产生表示所述条型码标记的位图。
33.如权利要求32所述的系统,其中所述SAX处理器基于嵌入所述格式模板中的命令产生多个事件。
34.如权利要求33所述的系统,其中所述事件是从包含设置打印速度事件、设置打印标记数量事件、选择介质事件、选择使用色带事件、选择纸张事件、使用300dpi打印机事件、使用600dpi打印机事件以及变量数据事件的组中选出来的。
35.如权利要求32所述的系统,其中所述格式模板被发送给SAX处理器、并被保存,以供下载的XML数据使用,所述XML数据在随后的时刻下载。
36.如权利要求32所述的系统,其中所述格式模板是基于ZPL的格式模板。
全文摘要
一种供条型码打印机设备(50)使用的XML处理系统(10),包括可操作地与所述条型码打印机设备(50)耦合的计算机系统(12)。所述计算机系统进一步包括XML处理器(70),其被配置为接收、分析和处理XML输入数据流,并且从方案简档中获得在XML数据流中标识的方案(82)。此外还包括XSLT处理器(74),其被配置为从样式表简档中获得在XML数据流中标识的样式表(84)。此外,XSLFO(78)处理器基于所述样式表中包含的XSLFO指令,将所述变换的XML数据格式化为已格式化的XML数据。然后条型码呈现子系统(80)接收所述已格式化的XML数据,并且产生表示所述条型码标记的位图。
文档编号B41J5/30GK1605081SQ02825205
公开日2005年4月6日 申请日期2002年11月13日 优先权日2001年12月17日
发明者布鲁斯·N·阿勒斯豪斯 申请人:Zih公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1