具有射频识别能力的可扩展标记语言打印机系统转让专利

申请号 : CN200480023569.4

文献号 : CN1836243B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 布鲁斯·阿莱斯霍斯

申请人 : ZIH公司

摘要 :

一种XML系统(10),被配置用于基于XML输入数据流,打印条码标记、票据、卡片或其它介质,和/或对被嵌入介质中的RFID器件进行编码。所述XML系统包括计算机系统(12),它通过操作与网络(44)连接。所述系统还包括条码呈现引擎,它被配置用于产生条码标记、标签、票据、卡片或其它介质的可打印的表示,和/或产生用于RFID器件(62)的编码信息。

权利要求 :

1. 一种适用于基于可扩展标记语言(XML)输入数据流,打印条码标记、标签、票据、卡片或其它介质和/或对与介质相关的RFID器件进行编码的可扩展标记语言打印机系统,所述XML打印机系统包括:计算机系统,它具有:

存储器子系统;

通信接口;

XML处理器,它被配置成接收所述XML输入数据流;

格式化引擎,它被配置成根据由格式模板管理的格式,来格式化XML输入数据流中的XML数据;以及呈现引擎,它被配置成接收格式化的XML数据,并且产生条码标记、标签、票据、卡片或其它介质的可打印的表示,和/或产生用于RFID器件的编码信息。

2. 根据权利要求1的系统,还包括:

可变数据整合器,它被配置成将包含在XML输入数据流中的XML数据和所述格式模板相关联,其中,所述格式化引擎根据由格式模板管理的格式,来格式化从可变数据整合器接收的关联的XML数据,以及所述呈现引擎基于关联和格式化的数据来产生可打印的表示和编码信息。

3. 根据权利要求1的系统,其中,所述格式化引擎被配置成执行以专有编程语言编写的计算机程序指令。

4. 根据权利要求1的系统,其中,所述格式模板被配置成根据专有编程语言来管理数据的格式化。

5. 根据权利要求1的系统,其中,所述格式模板是基于ZPL的格式模板。

6. 根据权利要求1的系统,其中,所述格式模板被送往所述XML处理器并且被保存,以便与在后续时间下载的XML数据配合使用。

7. 根据权利要求1的系统,其中,所述XML处理器是SAX处理器。

8. 根据权利要求1的系统,其中,所述XML处理器根据被嵌入到所述格式模板中的命令,产生一个或多个事件。

9. 根据权利要求8的系统,其中,所述事件是从包括下列各项的组中选出的:设置打印机速度事件、设置待打印标记的数量的事件、选择介质事件、选择所使用的色带事件、选择纸张事件、使用300dpi打印机事件、使用600dpi打印机事件和可变数据事件。

10. 根据权利要求1的系统,其中,所述计算机系统读取在RFID器件中编码的数据。

11. 根据权利要求1的系统,还包括通过操作连接到网络的主计算机。

12. 根据权利要求10的系统,其中,从RFID器件读取的数据被发送到所述主计算机。

13. 根据权利要求1的系统,还包括通过操作连接到所述计算机系统的打印机。

14. 根据权利要求13的系统,其中,根据基于ZPL的打印机控制语言来控制所述打印机。

15. 根据权利要求13的系统,其中,根据专有打印机控制语言来控制所述打印机。

16. 根据权利要求1的系统,其中,所述呈现引擎被进一步配置成处理流内外来对象。

17. 根据权利要求16的系统,其中,所述流内外来对象是条码类型对象。

18. 根据权利要求16的系统,其中,所述流内外来对象是RFID类型对象。

19. 一种用于根据XML输入数据流,打印条码标记、标签、票据、卡片、或其它介质和/或对与介质相关的RFID器件进行编码的方法,所述方法包括:接收XML输入数据流;

根据由格式模板管理的格式,来格式化XML输入数据流中的XML数据;

产生条码标记、标签、票据、卡片或其它介质的可打印的表示;和/或产生用于RFID器件的编码信息。

20. 根据权利要求19的方法,还包括:

将包含在XML输入数据流中的XML数据和所述格式模板相关联;以及根据由格式模板管理的格式,来格式化从可变数据整合器接收的关联的XML数据,以及其中所述产生步骤基于关联和格式化的数据来产生可打印的表示和编码信息。

21. 根据权利要求19的方法,其中,所述格式化步骤根据以专有编程语言编写的程序指令来格式化XML数据。

22. 根据权利要求19的方法,其中,所述格式模板被配置成根据专有编程语言来管理数据的格式化。

23. 根据权利要求19的方法,其中,所述格式模板是基于ZPL的格式模板。

24. 根据权利要求19的方法,其中,所述格式化步骤使用SAX处理器。

25. 根据权利要求19的方法,还包括根据被嵌入到所述格式模板中的命令,产生一个或多个事件。

26. 根据权利要求25的方法,其中,所述事件是从包括下列各项的组中选出的:设置打印机速度事件、设置待打印标记的数量的事件、选择介质事件、选择所使用的色带事件、选择纸张事件、使用300dpi打印机事件、使用600dpi打印机事件和可变数据事件。

27. 根据权利要求19的方法,还包括读取在RFID器件中编码的数据。

28. 根据权利要求19的方法,还包括连接到主计算机。

29. 根据权利要求27的方法,还包括将从RFID器件读取的数据发送到主计算机。

30. 根据权利要求19的方法,还包括在打印机上打印所述可打印的表示。

31. 根据权利要求19的方法,还包括使用基于ZPL的打印机控制语言,在打印机上打印所述可打印的表示。

32. 根据权利要求19的方法,还包括使用专有打印机控制语言,在打印机上打印所述可打印的表示。

33. 根据权利要求19的方法,其中,所述产生步骤处理流内外来对象。

34. 根据权利要求33的方法,其中,所述流内外来对象是条码类型对象。

35. 根据权利要求33的方法,其中,所述流内外来对象是RFID类型对象。

36. 一种适用于基于可扩展标记语言(XML)输入数据流,打印条码标记、标签、票据、卡片或其它介质和/或对与介质相关的RFID器件进行编码的可扩展标记语言打印机系统,所述XML打印机系统包括:计算机系统,它具有:

存储器子系统;

通信接口;

XML处理器,它被配置成接收所述XML输入数据流;

格式化引擎,它被配置成根据由格式模板管理的格式,来格式化XML输入数据流中的XML数据;以及呈现引擎,它被配置成接收格式化的XML数据,并且产生条码标记、标签、票据、卡片或其它介质的可打印的表示,以及产生用于RFID器件的编码信息。

说明书 :

具有射频识别能力的可扩展标记语言打印机系统

[0001] 相关申请的交叉参考
[0002] 本申请书主张2003年1月10日提交的题为“XML PrinterSystem”的共同待审的美国申请系列号第10/332,604号的优先权,并且是上述申请的继续申请。上述申请又是2002年7月17日提交的题为“Native XML Printer”的美国申请系列号第10/197,014号(现为美国专利第6,540,142号)的继续申请,美国专利第6,540,142号主张来自下列临时申请的优先权的权益:1)2002年1月4日提交的题为“XML Printer Technology”的美国临时专利申请系列号第60/345,389号,以及2)2001年12月17日提交的题为“Bar Code LabelingSystems Having Machine Readable Standards”的美国临时专利申请系列号第
60/341,427号。临时专利申请系列号第60/345,389号和60/341,427号的全部内容在这里通过参考而并入。
[0003] 版权说明
[0004] 这份专利文档的公开内容的一部分含有受到版权保护的材料。版权所有者不反对任何人传真复制本专利文档或专利公开内容,当它以专利与商标局的专利文件或记录出现时,但是无论如何保留所有的版权权利。

技术领域

[0005] 本发明一般地涉及用于打印诸如票据、标签、卡片、条码标记、片页纸、连续和折叠的纸、塑料介质等的介质,以及用于对可以被嵌入到介质之中的射频识别电路(RFID,Radio frequency IdentificationCircuitry)进行编码的方法与装置,并且在一个实施例中,更具体地涉及一种可扩展标记语言(XML,Extensible Mark-up Language)打印机,它根据使用现有的基于ZPL编程语言(Zebra ProgrammingLanguage)格式模板的XML数据流来打印这样的打印介质和/或对RFID器件进行编码。

背景技术

[0006] 用于打印条码和用于向条码打印机发送数据的打印机系统是众所周知的。然而,许多这样的系统使用专用的数据编码方法,并且因此这样的方法不能可互换地用于其它条码打印机。同样,已知的数据编码方法典型地呈现人读不懂的基本数据。虽然这对计算机系统没有妨碍,但是对于企图检查、排错或理解出现在基本条码元素名中的某些数据的人来说,它可能是令人烦恼的。在这一方面,XML是一种被许多商务实体采用的并且是人可读懂的开放的标准。使用XML可以避免与人不可读懂的方法有关的问题和陷阱。
[0007] 条码标记广泛地用于商务的许多方面。特别是,发货人用特殊的条码标记来标识从一个目的地发往另一个目的地的包裹或商品。反过来说,也可以用条码标记来识别所收到的商品,并将其送入收货人的库存系统之中。通常,商品的收货人可以指定由发货人敷贴的条码的形式和内容。这被称为“顺从性标记”。当然,从条码标记得到的好处不限于商品的发货。例如,库存管理系统广泛地使用条码标记来跟踪和监测在一个机构或介于不同机构之间的各种货物。
[0008] 顺从性标记典型地被具有相当大的市场实力或购买力的买家所使用。由于他们的经济实力,他们能够指定由他们的供应商或零售商敷贴到向他们提供的产品上的条码标记的形式和内容。虽然这对供应商来说可能是令人烦恼的,但是如果供应商希望跟这位买家做生意,卖方就必须顺从买方对条码标记的要求。例如,大型零售商,诸如沃尔玛公司,不仅有能力和购买力去要求供应商满足他们对顺从性标记的需求,而且还可以处罚那些不顺从标记要求的供应商。
[0009] 还有,这样的条码标记需求可以随着要求顺从性的实体的兴之所致而改变。因此,供应商必须实现新的标记需求并且测试已修改的条码,以保证它能满足所有的规格。这是相当低效和费时的。它还容易出错,这将变成罚款。
[0010] 作 为 对 条 码 标 记 的 添 加或 替 代,射 频 识 别 (RFID,RadioFrequency Identification)正在日益增长地被使用,以便对在供应链和顾客之间流动的产品进行标识。顺从性标记正在被扩展为包括将RFID标签敷贴和编码于货物的货盘、纸盒和具体产品上。关于产品的数据可以被写入标签和/或从标签读取。诸如产品标识号的数据可以被存储在标签上,同时,可以从标签中检索诸如唯一的标签标识号(它使标签和相关产品系列化)的数据。
[0011] 存在提供一种用于定义条码标记信息的开放标准的需求,上述条码标记信息是自行验证的,并且为了实现在条码标记的形式或内容上的改变,不需要作出重大的软件编程修改。还存在一种使用向条码打印机提供读取数据的人能读懂的数据的格式的需求。
[0012] 还存在一种进一步的需求:允许企业资源计划系统(ERP,enterprise resource planning system)去格式化它的数据,以便传送到使用XML的条码打印机系统,同时附加地利用现有的管理标记布局的ZPL格式模板和/或利用纯粹的XML格式模板,后者使用可扩展的样式表语言(XSL,extensible stylesheet language)来管理待打印的标记的布局。此外,存在使用一种格式的需求:在上述格式中,可以向一个设备提供其它数据,诸如RFID数据,以便实现将RFID数据编码到嵌入式的RFID电路或其它自动标识设备中去。还存在一种需求:把从RFID电路读出的数据返送到ERP系统或其它主计算机系统。

附图说明

[0013] 在所附的权利要求书中,专门地陈述了被认为是新颖的本发明的特征。通过参照以下的说明并结合附图,将有助于更好地理解本发明以及它的进一步的目的和优点。
[0014] 图1是根据本发明的XML系统的一个特定的实施例的高级硬件方框图;
[0015] 图2是XML系统的一个特定实施例的高级软件方框图;
[0016] 图3是XML系统的一个特定实施例的组合的高级软件方框图和数据流程图;
[0017] 图4是位图/条码和/或射频识别(RFID)呈现引擎的一个特定实施例的高级软件方框图;
[0018] 图5是根据图1-4的XML系统而产生的条码标记的特定表示;
[0019] 图6是被配置成为条码和/或RFID呈现服务器的XML系统的一个替代实施例的特定实例。
[0020] 图7是XML系统的一个特定替代实施例的高级软件方框图;
[0021] 图8是XML系统的一个特定替代实施例的组合的高级软件方框图和数据流程图;以及
[0022] 图9是根据图7-8的XML系统而产生的一个条码标记的特定表示。

具体实施方式

[0023] 在这份书面的说明书中,转折连词的使用试图包括连词。不打算用定冠词或不定冠词来表示基数。特别是,参照于“所述”对象或事物或“一个”对象或“一件”事物也被用来描述多个这样的对象或事物。
[0024] 现在参照图1,图中一般地表示XML系统10的高级硬件方框图的一个特定的实施例。在图1-6的实施例中,所述系统的本地或自然“语言”是XML,因此,XML系统10可以被称为“本地XML打印机”。XML系统10包括计算机或处理系统12,其中又包括各种硬件部件,诸如业界所熟知的RAM 14、ROM 16、硬盘存储器18、高速缓冲存储器20、数据库存储器22等(也被称为“存储器子系统”26)。计算机系统12可以包括任何适合的处理装置28,诸如业界所熟知的计算机、微处理器、精简指令集计算机(RISC,reduced instruction setcomputer)处理器、复杂指令集计算机(CISC,complex instruction setcomputer)处理器、大型计算机、工作站、单片计算机、分布式处理器、服务器、控制器、微控制器、分立逻辑计算机等。例如,处理装置28可以是英特尔公司的奔腾(注册商标)微处理器、x86兼容的微处理器或者等效的器件。
[0025] 存储器子系统26可以包括任何适合的存储部件,诸如RAM、电可编程只读存储器(EPROM,electrically programmable read onlymemory)、快闪存储器、动态存储器、静态存储器、先进先出(FIFO,first-in first out)存储器、后进先出(LIFO,last-in first-out)存储器、环形存储器、半导体存储器、磁泡存储器、缓冲存储器、磁盘存储器、光学存储器、高速缓冲存储器,等等。可以使用任何适合的存储器形式,无论是在磁性介质上的固定存储,在半导体器件上的存储,或者是可以通过通信链路进行访问的远程存储。
[0026] 用户接口30可以被连接到计算机系统12,并且可以包括各种输入设备36,诸如用户可选择的开关和/或键盘。用户接口还可以包括适当的输出设备40,诸如业界所熟知的液晶显示器、阴极射线管(CRT)显示器、各种发光二极管(LED)显示器和/或语音输出设备。
[0027] 为了在计算机系统12和外部资源之间进行通信,可以通过操作,将通信接口42连接到计算机系统。通信接口42可以是,例如,局域网,诸如以太网、内联网或者其它适当的网络43。通信接口42还可以被连接到公共交换电话网(PSTN,public switched telephonenetwork)46或者老式电话系统(POTS,plain old telephone system),上述两种电话网都有助于经由因特网44进行通信。还可以使用专用的和远程的网络。如业界所熟知那样,可以使用任何适当的市售的通信设备或网络。
[0028] 计算机系统12还可以被连接到打印机系统50。打印机系统可以包括介质/纸张控制系统52、打印机驱动器54和打印头机构56。可以使用能打印条码标记的任何适合的打印机,包括各种点阵、喷墨、激光和/或热式打印机。当然,点阵打印机通常属于低质量,并且要求密切监视标记的输出。最好是,打印机系统50是热式打印机。这样的适合的打印机例如可以从位于伊利诺斯州沃农山的Zebra技术公司购买,并且包括型号为Xi的系列条码打印机(XiIII+,90XiIII+,96XiIII+,110XiIII+,140XiIII+,170XiIII+,220XiIII+等),2800系列条码打印机,型号为Z4M、Z6M、105SL的条码打印机,型号为R4M+、R402、R-140的打印机/编码器,以及其它。可以使用任何适合的条码标记打印机。
[0029] 可替代地,打印机系统50可以包括一种用于管理射频标识(RFID)介质的编程的“非打印的”机构,RFID介质也可以接收在其表面上的打印标记或其它打印的标识。术语“打印机系统”指的是包括也具备RFID能力的系统,虽然“RFID”可以不是所述术语的一部分。此外,虽然这里使用术语“条码标记”,但是这个术语不限于纸质标记,并且可以包括,例如,票据、标签、卡片、片页纸、连续的和折叠的纸、塑料介质、嵌入RFID电路的介质,以及其它自动标识设备。本发明适用于任何类型的介质。
[0030] 典型地,这样的打印机可以包括各种马达、标记切割器、色带处理器、传感器等(未示出)。此外,这样的打印机可以包括业界所熟知的各种控制输入或传感器,诸如介质传感器、打印头温度传感器、打印头开启传感器、色带传感器等(未示出)。打印机系统50可以包括除了驻留在计算机系统12内的处理器28以外的一个或多个附加的处理器60。可替代地,计算机系统12内的处理器28,如果具备足够强大的功能,就可以控制和管理打印机系统50的各项功能而不需要单独的处理装置。因此,可以由物理上与打印机系统分开的计算机或处理器来控制打印机系统50的所有功能。
[0031] 打印机系统的处理器60还可以通过操作被连接到RFID收发信机61。RFID收发信机61可以通过操作被连接到处理器60,或者可以通过操作被连接到计算机系统12的处理器28,如图1中的虚线所示。RFID收发信机61驻留在何处,或者它被连接到哪一个处理部件,对本发明的范围来说都是不重要的。
[0032] RFID收发信机61被配置成与RFID应答器62进行通信,并且对所述RFID应答器进行编程。RFID应答器62可以属于“有芯片”或“无芯片”类型,并且在“智能标记”中经常使用的这样的RFID应答器的一种普通的形式包括天线和RFID集成电路(未示出)。这样的RFID应答器62包括直流供电的有源应答器和无电池的无源应答器二者,并且具备多种形状因子。在这里,术语“条码打印机”或“条码系统”可以与术语“条码/RFID系统”、“XML系统”等互换使用,并且即使术语“RFID”可以不一定是标识文本的一部分,但是这样一个系统包括将RFID数据编码到RFID应答器的能力。系统12必须具备将RFID数据编码到RFID应答器的能力。
[0033] 在2001年10月25日提交的题为“Method And Apparatus ForAssociating On Demand Certain Selected Media And Value-AddingElements”的申请书第10/001,364号中,可以找到关于RFID应答器的更详细的描述,上述专利申请由本申请的受让人所拥有,目前待审。申请第10/001,364号在此以全文形式通过参考而并入。
[0034] 最好是,计算机系统12和打印机系统50被放置在一个共同的机壳内,但是不一定需要以这种方式来构建。例如,计算机系统12可以被装入一个与打印机系统50分开并且远离的机壳内。
[0035] 现在参照图1-3,图2表示一份高级软件方框图的的特定的实施例,同时图3表示一个组合的高级软件方框图和数据流程图的特定的实施例。下面所描述的软件可以由图1的计算机系统12的处理器28来执行。再有,处理器28可以执行计算机系统12和打印机系统50二者共同的功能。可以有一个或多个处理器,它们可以协同工作或者单独工作。由计算机系统(或在计算机系统中)还是由打印机系统(或在打印机系统中)来执行处理或处理功能,对本发明的范围来说是不重要的。
[0036] 示于图2-3的软件方框包括可扩展标记语言(XML,extensiblemark-up language)处理器70(也称为“XML解释器”)、可扩展样式表语言转换(XSLT,extensible stylesheet language transformation)处理器74、可扩展样式表语言格式化对象(XSLFO,extensiblestylesheet language formatting object)处理器78、位图/条码/RFID呈现引擎80、RFID收发信机61以及打印机驱动器54(图1)。当然,RFID收发信机61可以跟已打印的标记配合使用,或者单独使用。是否纳入RFID收发信机不影响XML系统10的功能和基本结构。
[0037] 要注意的是,打印机驱动器54是上述部件的一个实例,其功能可以由计算机系统12中的处理装置去执行,或者由打印机系统50中的处理装置60(图1)去执行,这取决于相关的处理装置所在的物理位置。再有,单个处理装置如果功能足够强大,也可以管理XML系统10的所有功能。
[0038] XML模式库82(模式库)可以向XML处理器70提供输入,同时XSLT样式表库84(样式表库)可以向XSLT处理器74提供输入。图中还示出了一个企业资源计划(ERP,enterprise resource planning)系统88,它可能是,例如,一个向XML处理器70发送XML输入数据流90的仓库管理系统。ERP系统88实质上发出打印条码标记或者将RFID数据编码到RFID应答器62的请求,并且提供形成所述条码的XML数据、RFID编码数据和待打印或编码的其它可变的标记或元素字段。这样的可变标记字段可以包括,例如,被打印在标记上的、任何或所有人可读的文本和/或字符。当然,可以使用任何企业计算机系统,并且本发明不局限于使用任何特定类型的企业计算机系统。
[0039] 当提到XML数据时,这里将涉及两种基本类型,即,XML值数据和XML元素名。XML值数据是可改变的数据,或者希望打印在条码标记上或者编码到RFID应答器的数据,诸如数据“绿街1122号”,它可能是对应于,例如,一个发货地址的XML值数据的一部分。XML元素名是XML语言语义的一部分,在这里,任意的标记或元素名可以被选择用来表示XML值数据,其用法由XML语言加以规定。典型地,元素名出现在尖括号之间(“<元素名>”)。
[0040] 如上所述,已知的条码标记和其它自动标识系统经常使用专有的软件编码方案。此外,这样的编码方案经常容易出错,并且其基础值数据通常是非技术人员无法读懂的。在已知的系统中,如果从企业系统发出的基础值数据存在差错,或者如果数据丢失或者不正确,则条码系统将按照指示进行打印或编码,当然,这将在条码标记或RFID应答器中产生差错,使之不精确或者无用。
[0041] 此外,当处理顺从性标记时,已知的系统要求当标记的形式或内容随着顺从性标记需求而改变时,数据编码也发生非轻微的改变。再次,条码或者RFID应答器中的这些形式或内容的改变是容易出错的,这反过来又可能导致由要求顺从性的(经济)实体处以罚款。由于在条码标记系统中连续出现问题还可能损害商务关系,特别是在如果这样的差错搞乱了顺从性要求者的业务的情况下。
[0042] 本XML系统10使用一种开放的格式。特别是,格式化要求以及条码标记或RFID收发信机的形式全都以XML语言定义。而且,不仅以XML作出了明确的定义并且适用于所有的情形,而且非编程人员经过最少训练也能理解XML数据流或文件(或硬拷贝)中的数据和命令。
[0043] 示于图2-3的各种XML软件块都可以从市场上购买。可以可互换地或稍加修改地使用几种不同的市售的XML处理器70。例如,可以使用下列市售的XML处理器70:可从IBM公司购买的“用于C++的XML”、可从微软公司购买的“MSXML3”、可从Oracle公司购买的“用于C语言的Oracle XML开发者套件”、可从Thai Open SourceSoftware Center有限公司购买的“Expat”或者可从Apache SoftwareFoundation购买的“Xerces-C++”。然而,可以使用任何适合的XML处理器。
[0044] 类似地,可以可互换地或稍加修改地使用几种不同的市售XSLT处理器74。例如,可以使用下列XSLT处理器74:可从Infoteria公司购买的“iXSLT”、可从微软公司购买的“MSXML3”、可从Gnome购买的“Libxslt”。然而,可以使用任何适合的XSLT处理器。
[0045] 再有,可以可互换地或稍加修改地使用几种不同的市售的XSLFO处理器78。例如,可以使用下列XSLFO处理器78:可从RenderX公司购买的“XEP”、可从Antenna House公司购买的“XSLFormatter”、可从Apache Software Foundation购买的“FOP”。然而,可以使用任何适合的XSLFO处理器。
[0046] 仍然参照图1-3,XML处理器70接收来自外部源88的XML输入数据流90。例如,所述外部源可以是ERP系统88,诸如所述仓库管理系统。XML处理器70实质上解析和处理所述XML输入数据流90,并且产生如业界所熟知的具有“树状”结构的一组节点。图2-3所示的每一个软件处理块都作用于所述“树”的各个节点,以执行其所需的功能。来自ERP系统88的XML输入数据流90中所包含的基础值数据被处理和被输入到保存所述数据的“标记值节点树”100中。
[0047] 下面是各个软件部件的操作的简要的纵览。首先,要注意的是,XML输入数据流90包括标识其它所需的XML文档或文件的名字和位置的文本。一种这样的文档被称为“XML模式”或“模式”。所述模式被用来验证所述XML输入数据流,包括基础值数据。如果验证成功,则应用一种样式表,这将在下面加以说明。在XML输入数据流90中也指定了样式表的名字和位置。由XSLT处理器74来管理样式表的应用,XSLT处理器74在样式表的引导下,可以转换基础XML元素名和/或基础值数据。其次,由管理基础值数据的格式化和“布局”的XSLFO处理器78对所述数据进行处理,其中包括,例如,按照诸如字型、字号、颜色等来格式化所述基础值数据。其次,由位图/条码/RFID呈现引擎80来处理所述基础值数据,以便为RFID应答器生成对应于已转换的和已格式化的数据的条码标记的位图92或者编程代码序列。呈现引擎80可以利用驻留在样式表中的“流内外来对象(instream foreign object)”来引导位图的生成。然后,位图92被送往打印机驱动器54(图1),以便由条码打印机进行后继的条码标记打印,或者被送往RFID收发信机61,以便编码到RFID应答器62(图1)。
[0048] 如上所述,所述模式起到验证整个输入数据流90(特别是,典型地可以发现一些差错的基础值数据)的作用。在实践中,当对条码标记的形式或内容作出改变时,经常无意中引入差错。
[0049] 模式文档的名字和位置被包含在XML输入数据流90中,所述XML输入数据流对应于所述打印和/或编码条码标记的请求。XML处理器70与模式验证模块110相结合,对基础值数据进行验证。由于所述模式能避免涉及最后输出(即,条码标记,或“发货标记”,或RFID标签或应答器)的各种差错和遗漏,所以模式的使用能降低成本。
[0050] 如果由于存在差错而使XML输入数据流90被拒绝或者被加上标志,则可以向源88发回一个出错消息。这可能提示或触发人为干预以纠正差错。例如,在这个特定的实例中,所述源是ERP系统88。这样一来,在处理之前对所述数据进行初始校验,以保证它遵从所有所需的标记和条码规则。
[0051] 当处理顺从性标记时,这可能是特别有利的。在知名的系统中,顺从性的要求者仅需把顺从性标记需求的改变通知供应商。如果供应商在解释或实施这些改变或指令过程中发生差错,则已敷贴到被发往顺从性要求者的产品上的已产生的标记或已编码的RFID应答器也可能存在差错,这可能危及未来的商务或者被处以罚款。
[0052] 在本发明中,顺从性的要求者最好是直接地对所述模式和/或XSLT样式表作出改变。例如,如果标记的物理布局已经发生改变,或者如果元素名已经发生改变,则顺从性的要求者将修改XSLT样式表。类似地,如果基础值数据已经被添加或删除或者已被认可(即,新的可接受的邮政编码数字范围),则顺从性的要求者可以修改所述模式。这样一来,供应商仅需修改其ERP系统88的输出,以保证它匹配于已修改的XML输入数据流90。如果只有标记的物理布局发生改变,则供应商完全不需要作出任何修改。
[0053] 例如,顺从性的要求者现在可以要求使用9位的邮政编码,而不是原来的5位邮政编码。因此,顺从性的要求者可以修改所述模式以要求第一和第二邮政编码字段二者,并且第二字段也将被限定为处于一定范围内的数字位,或许是0000-9999。顺从性的要求者还可以修改样式表以适应这种改变。作为对此的响应,供应商必须在它的ERP系统中插入已添加的邮政编码字段,使之出现在被送往XML系统10的XML输入数据流90中。如果对XML输入数据流90的这样的修改没有被正确地执行,则所述模式将引起向ERP系统88回报告出错,并且将不打印标记或者不对RFID应答器进行编码。
[0054] 因此,供应商仅需从库82、84访问已修改的模式和/或样式表,当被接收时,它们将自动地被应用于基础值数据。基本上对条码标记或RFID应答器的形式和内容的小的改变和显著地大的改变对供应商来说是透明的,并且按照模式对条码标记或RFID应答器的内容的这些改变进行验证。因此,供应商不需要付出代价去改变由顺从性的要求者所指定的条码标记或RFID应答器的形式和内容,并且在实施这些改变的过程中不能产生任何差错。如果存在任何差错,则这些差错都是由顺从性的要求者无意中产生的,他(她)不应当责怪供应商。
[0055] 最好是从XML模式库82获得模式文档。在一个特定的实施例中,模式库82可以处于XML系统10和计算机系统12之外,并且可以经由网络,即因特网,或者经由计算机系统与之连接的任何适当的网络43、44来进行访问。模式库82可以含有多种模式文档。因此,表示生成条码标记或RFID应答器的各项请求的XML输入数据流90可以分别指定库82中相应的模式的名字和位置。当XML处理器70接收到所述请求时,就能从模式库82检索相应的模式。
[0056] 在另一个实施例中,可以在本地保存经由网络43、44从模式库82获得的模式,并且因此可以暂时地驻留在存储器子系统26(图1)、诸如硬盘18或数据库22中。这样一来,如果相同的模式被用于多个XML输入数据流90,或者被用于后继的条码标记请求,则XML处理器70不需要经由网络43、44从外部来检索相同的模式,而是可以从存储器子系统26来检索所述模式,这可能是更加有效的。根据这个实施例,顺从性的要求者可以仅在一定时间改变或修改外部库82中的模式。例如,所述顺从性的要求者仅在每天的上午1时可以改变样式表。因此,例如,在顺从性的要求者已经进行模式更新之后,供应商仅需每天一次把来自模式库82的模式更新到存储器子系统26中去。然后,供应商将知道被暂时地保存在存储器子系统26中的模式就是至少到被安排进行更新的时间为止的最新的模式文档。
[0057] 不管模式是在什么位置上获得的,模式验证模块110都对主要的数据进行校验和验证。虽然所述模式验证模块110在图2中被表示为一个独立于XML处理器70的方框,但是它被表示在这个位置上仅仅是为了图解的目的,使得它在图中可以被表示为靠近标记值节点树100,这就是它作用于其上的数据。然而,模式验证模块110可以被集成到XML处理器70中,并且成为它的一部分,或者它可以是一个单独的和与之分离的部分。
[0058] 当然,所述模式也是一种XML文档,并且因此它也由XML处理器70进行处理。因此,所述模式的处理结果就是图3所示的XML模式节点树114,它是被处理的模式的“存储器表示”或工作模型。XML模式节点树114可以采取如业界所熟知的“文档对象模型”(DOM,document object model)的形式。还有,为了提高效率起见,XML模式节点树114可以驻留在高速缓冲存储器中,如同在XML模式高速缓冲存储器116中所示。模式验证模块110和/或XML处理器70对XML模式节点树114中的数据进行操作,以便执行按照模式文档对基础值数据进行验证的功能。
[0059] 如上所述,如果模式的应用确定在XML输入数据流90中存在差错,则将产生出错消息。如果XML输入数据流90通过验证,则所述数据实质上保持“未改变”。然后由XSLT处理器74使用XSLT样式表对标记值节点树100中的数据进行处理。
[0060] 可替代地,可以根据文档类型定义(DTD,Document TypeDefinition)格式,而不使用模式,来进行基础值数据的验证。DTD的使用在各种XML规范中均有详细说明,并且为业界所熟知。
[0061] 最好是从XSLT样式表库84中获得各种样式表文档。在一个特定的实施例中,样式表库84可以处于XML系统10和计算机系统12之外,并且可以经由网络,即因特网,或者经由计算机系统与之连接的任何适当的网络43、44来进行访问。样式表库84可以含有多种样式表。因此,表示生成条码标记或者对RFID应答器进行编码的各项请求的XML输入数据流90可以分别指定样式表库84中相应的样式表的名字和位置。当XML处理器70接收到所述请求时,就能从样式表库84中检索相应的样式表。
[0062] 在另一个实施例中,可以在本地保存经由网络43、44从样式表库84中获得的样式表,并且因此可以暂时地驻留在存储器子系统26(图1)、诸如硬盘18或数据库22中。这样一来,如果相同的样式表被用于多个XML输入数据流90,或者被用于后继的条码标记或RFID应答器请求,则XML处理器70不需要经由网络43、44从外部来检索该相同的样式表,而是可以从存储器子系统26检索该所述样式表,这可能是更加有效的。
[0063] 根据这个实施例,顺从性的要求者可以仅在一定时间改变或修改外部样式表库84中的样式表。例如,所述顺从性的要求者仅在每天的上午1时改变样式表。因此,例如,在顺从性的要求者已经进行样式表更新之后,供应商仅需每天一次把来自样式表库84的样式表更新到存储器子系统26中。然后,供应商将知道被暂时地保储在存储器子系统26中的样式表就是至少到被安排进行更新的时间为止的最新样式表。
[0064] 当然,所述样式表也是一种XML文档,并且因此它也由XML处理器70进行处理。因此,所述样式表的处理结果就是图3所示的XSLT样式表节点树120,它是被处理的样式表的“存储器表示”或工作模型。XSLT样式表节点树120可以采取如业界所熟知的“文档对象模型”(DOM,document object model)的形式。还有,为了提高效率起见,XSLT样式表节点树120可以驻留在高速缓冲存储器中,如同在XSLT样式表高速缓冲存储器126中所示。XSLT处理器74对XSLT样式表节点树120中的数据进行操作,以便执行按照样式表对基础值数据或基础元素名进行转换的功能。
[0065] 要注意的是,虽然XSLT样式表在图3中被表示为送往XML处理器70的输入,但是XSLT处理器74对样式表进行处理。由于所有的XML文档都被首先进行处理并且被置入适当的数据结构中以便进行后继的处理,所以它初始地被提供给XML处理器70。
[0066] XSLT处理器74可以修改、重置和重新安排基础值数据,或者可以添加到基础值数据或者删除某些基础值数据。例如,在样式表的引导下,基础值数据可以被重新安排为表格式或者列格式。特别是,样式表可以添加XSLFO格式化元素和属性。
[0067] 在已经按照相应的样式表对标记值节点树100中的基础值数据进行处理之后,产生一个XSLFO实例节点树130。再次,该XSLFO实例节点树130可以采取如业界所熟知的文档对象模块的形式。XSLFO实例节点树130含有在格式化和布局方面引导XSLFO处理器78的命令(布局指令)。然后,XSLFO处理器78解释XSLFO命令,并且把这些命令应用于基础值数据,以便适当地对基础值数据进行格式化和布局。XSLFO处理器78产生XSLFO区域节点树130,它表示在呈现之前格式化的最后输出。
[0068] 现在转到图3,以及紧接在下面的题为“用于XML输入数据流的代码段1”的代码段,所述代码段1表示在硬拷贝中的XML输入数据流90,后者可以例如由ERP或者仓库管理系统88送往XML系统10。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
[0069] 用于XML输入数据流的代码段1
[0070]
[0071]
[0072] href="D:\Projects\XML\Native\Docs\ShipLabels.xsl"?>
[0073]
[0074] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
[0075] xsi:noNamespaceSchemaLocation=
[0076] "D:\Projects\XML\Native\Docs\ShipLabels.xsd">
[0077]
[0078] Albert Einstein
[0079]
1234 Relative Way
[0080] Princeton
[0081] NJ
[0082] 08540
[0083]
[0084]
[0085] Steven Hawking
[0086]
5678 Black Hole Drive
[0087] Los Angeles
[0088] CA
[0089] 90007
[0090]
[0091]
[0092] Richard Feynman
[0093]
90 Quantum Circle
[0094] New York
[0095] NY
[0096] 10044
[0097]
[0098]
[0099] XML输入数据流把模式文档标识为“ShipLabels.xsd”,并且在这个特定的实例中,可以在代码段1的第7行所示的被称为“D:/Projects/XML/Native/Docs”的目录中找到所述模式文档。还有,XML输入数据流把样式表文档标识为“ShipLabels.xsl”,并且也可以在代码段1的第3行所示的被称为“D:/Projects/XML/Native/Docs”的目录中找到所述样式表文档。当然,模式文档和样式表文档可以被定位于任何位置,例如,用因特网地址来加以标识。
[0100] 这个特定的实例表示用于3份待打印的发货标记的基础值数据和元素名。每一份发货标记都含有如下的被定义在尖括号之间的XML元素名:<姓名>、<地址>、<城市>、<州>和<邮政编码>。第一元素名<姓名>的值为“阿尔伯特爱因斯坦”,第二元素名<地址>的值为“1234 Relative Way”,第三元素名<城市>的值为“Princeton”,第四元素名<州>的值为“HJ”,并且第五元素名<邮政编码>的值为“08540”。这就是基础值数据。
[0101] 现在转到图3,代码段1,以及紧接在下面的题为“用于XML模式的代码段2”的代码段,所述代码段2表示采取在代码段1的XML输入数据流中所指定的XML模式文档形式的XML文档的一个特定的实例。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
[0102] 用于XML模式的代码段2
[0103]
[0104]
[0105] xmlns:xs="http://www.w3.org/2001/XMLSchema"
[0106] elementFormDefault="qualified">
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146] 如上所述,所述模式被用来验证基础值数据。这就需要进行校验,以确定所有所需的数据都已存在,不存在无关的数据,存在的数据都处于指定的范围内,等等。可以根据应用在所述模式中指定适当的验证方案。XML语言是牢靠的,并且可以写入代码,以便处理多种多样的要求。
[0147] 例如,在上面的代码段2中所示的模式文档指定对应于元素名<地址>的基础值数据必须是如同在XML模式说明中所定义的字符串,如代码段2中的第5行所示。模式文档还指定对应于元素名<姓名>、<地址>、<城市>、<州>和<邮政编码>的基础值数据也必须以代码段2的第9-15行所示的序列存在。还有,在代码段2中所示的特定的模式文档指定对应于元素名<州>的基础值数据必须是3个州,即“加利福尼亚州”、“新泽西州”或“纽约州”其中之一。当然,这只是一个简略的实例,并且仅为了说明的目的而没有包括所有的州。在代码段2中所示的模式文档还指定对应于元素名<邮政编码>的基础值数据必须处于从00000到99999的范围内。如果XML输入数据流中的数据不满足上述模式规范中的任何一项,则模式验证模块110将拒绝它,并且最好是向源88返送一条出错消息。
[0148] 现在转到图3,代码段1-2,以及紧接在下面的题为“用于XSLT样式表的代码段3”的代码段,所述代码段3表示采取在代码段1的XML输入数据流中所指定的XSLT样式表文档形式的XML文档的一个特定的实例。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
[0149] 用于XSLT样式表的代码段3
[0150]
[0151]
[0152] xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
[0153] xmlns:fo="http://www.w3.org/1999/XSL/Format"
[0154] xmlns:bo="http://www.zebra.com/2002/XSL/Barcode">
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164] [0165] Times">
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195] ,
[0196]
[0197]
[0198]
[0199]
[0200] 如上所述,样式表被用来转换数据。在这个特定的实例中,代码段3的样式表定义了两种类型的名字空间,即,一个“bo”类型对象,它被选择为“条码类型对象”,以及一个“fo”类型对象,它被选择为“格式化对象”,在前面提到XSLFO处理器78时对它已经作了描述。如业界所熟知那样,这允许在不同对象之间加以区分。样式表可以使某些数据被转换或者甚至被添加。例如,如第40-62行所示,来自代码段1的XML输入数据流的基础值数据,即“爱因斯坦”、“相对路1234号”等等,被插入。
[0201] 样式表还使得产生多个“fo”类型元素,它们被指定为格式化元素或XSLFO对象。XSLFO对象含有XSLFO处理器78“理解”和处理的布局类型命令。要注意的是,具有前缀“fo”的所有代码行都不由XSLT处理器74进行解释,而是被送往XSLFO处理器78。
[0202] 例如,代码段3的第21行表示,跟随其后的是第22行的。这被XSLFO处理器78解释为将一个“分页符”放置在代码段1中指定的3个发货标记之间。实质上,由于分页符生成了一个新的发货标记,每一个新的发货标记都含有在代码段1中指定的基础值数据。
[0203] 还有,特定的样式表指定插入一个“流内外来对象”,如第31行所示。第31行被表示为与定义流内外来对象的第31-37行相结合的。要注意的是,流内外来对象不由XSLT处理器74进行处理,也不由XSLFO处理器78进行处理。而是流内外来对象被送往位图/条码/RFID呈现引擎80并由后者进行处理。例如,代码段
3的第32-36行使得插入一个元素,后者含有一个“postnet”条码元素的定义,稍后,所述元素将由位图/条码/RFID呈现引擎80进行处理。在第34行,XSLT处理器
74使来自XML输入数据流的邮政编码作为元素的文本而被插入。可替代地,虽然在代码中没有示出,但是一个RFID类型的流内外来对象可以定义用于对RFID应答器进行编程的编码。
[0204] 现在转到图3,代码段1-3,以及紧接在下面的题为“用于XSLFO实例节点树表示的代码段4”的代码段,所述代码段4表示由XSLT处理器74结合代码段3的样式表所产生的XSLFO实例节点树130输出的一个特定的实例,所述输出是向XSLFO处理器78提供的XSLFO实例节点树的表示。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
[0205] 用于XSLFO实例节点树表示的代码段4
[0206]
[0207]
[0208] xmlns:bo="http://www.zebra.com/2002/XSL/Barcode">
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218] align="left">Albert Einstein
[0219]
[0220] align="left">1234
[0221] Relative Way
[0222]
[0223] align="left">Princeton,NJ
[0224]
[0225] align="left">08540
[0226]
[0227]
[0228]
[0229]
[0230] line="none">08540
[0231]
[0232]
[0233]
[0234]
[0235]
[0236]
[0237] align="left">Steven Hawking
[0238]
[0239] align="left">5678 Black Hole Drive
[0240]
[0241] align="left">Los
[0242] Angeles,CA
[0243]
[0244] align="left">90007
[0245] fo:block>
[0246]
[0247]
[0248]
[0249] line="none">90007
[0250]
[0251]
[0252]
[0253]
[0254]
[0255]
[0256] align="left">Richard Feynman
[0257]
[0258] align="left">90 Quantum Circle
[0259]
[0260] align="left">New York,NY
[0261]
[0262] align="left">10044
[0263]
[0264]
[0265]
[0266]
[0267] line="none">10044
[0268]
[0269]
[0270]
[0271]
[0272]
[0273]
[0274]
[0275] 上面简要地描述了代码段4的两个主要的部分,即,开始于第4行的具有代码的第一部分,以及开始于第9行的具有代码的第二部分。这个代码部分实质上定义了一个条码标记“看上去像”什么,或者它将如何被“布局”,以及所述基础值数据将如何出现在所述的布局中。
[0276] 就对代码段1中所述的基础值数据的格式化而言,例如,在第12-13行中所示的字型属性“bold 14pt Times”和text-align=″left″将被施加到基础值数据“阿尔伯特爱因斯坦”,使得当打印条码标记时,姓名“阿尔伯特爱因斯坦”将按照14点阵的Times字型来打印,并且它将被对准于条码标记的左边沿。如业界所熟知的那样,可以指定许多不同种类的格式化指令,后者将由XSLFO处理器78加以解释。
[0277] XSLFO实例节点树130的表示的这个特定的实例还包含一个流内外来对象,如代码段4的第21-26行所示,所述流内外来对象可以不由XSLFO处理器78进行处理。而是,所述流内外来对象可以被送往位图/条码/RFID呈现引擎80进行处理。要注意的是,在处理过程的这一点上,由于条码元素类型和RFID应答器元素类型都没有被包括在XSLFO说明中,所以XSLFO处理器78不“知道”如何去打印条码标记或者对RFID应答器进行编码。而是,只有文本信息,诸如基础值数据,即,代码段1-2中所示的“爱因斯坦”、“相对路1234号”等,可以作为文本被打印在条码标记上。就标记而言,由于XSLFO处理器78不“知道”如何去产生条码符号,所以不会出现实际的条码符号。由于XSLFO处理器78不“知道”如何去对应答器进行编码,所以RFID应答器不会被编码。
[0278] XSLFO处理器78的处理结果是XSLFO区域节点树140。要注意的是,代码段4中所示的流内外来对象不由XSLFO处理器78进行处理,而是被送往XSLFO区域节点树140的一个或多个节点中的位图/条码/RFID呈现引擎80。流内外来对象元素被称为并且示于代码段4的第21-26行。所述位图/条码/RFID呈现引擎80接收元素,并且处理在所述方框中所包含的代码。例如,呈现引擎80解释第23-24行,即,08540,把这个特定的节点定义为一个“postnet”条码类型的元素。可以定义许多不同“类型”的条码符号,正如将在下面所讨论的由相应的行业标准所定义的那样。
[0279] 可替代地,如果流内外来对象涉及RFID编码,则呈现引擎80将根据RFID收发信机61(图1)管理RFID应答器62(图2)的编程和编码的特定标准对流内外来对象进行解释。如同指定如何去打印条码的XML数据的元素和属性那样,这样的元素和属性也可以指定待编程到RFID标签(诸如RFID应答器62)中的文本和特性。实质上,根据RFID类型流内外来对象的呈现管理RFID收发信机61(图1)的运行。如此,射频信号在RFID收发信机和RFID应答器之间被发送,以实现RFID应答器的编程。
[0280] RFID收发信机的运行可以按照诸如ISO/IEC的国际标准,或者根据诸如Texas Instruments(Tag-it)或者Phillips(I·Code)的来自销售商的专用规范。例如,可以由国际标准化组织(ISO,InternationalOrganization for Standardization)用于邻近卡的规范15693、或者由用于接近卡的ISO规范14443来进行管理。ISO规范15693描述了物理特性、射频功率和信号接口,以及防冲突和传输协议。传输协议规范包括对读取、写入和锁定应答器的请求和响应。要注意的是,ISO规范15693是在涉及RFID标记标签时的优选的应用标准。
[0281] 有待于被打印为条码符号的基础值数据是数字数据“08540”,如代码段4的第24行所示,所述基础值数据是与在代码段1中所示的阿尔伯特爱因斯坦的地址有关的邮政编码。在这个特定的实例中,只有邮政编码才被转换为条码符号。当然,根据应用,任何和所有的信息都可以被转换为条码符号。同样,在这个特定的实例中,示于代码段4中的流内外来对象仅涉及示于代码段1中的3个邮政编码。在这个实例中,没有其它的基础值数据被转换为条码符号。
[0282] 还要注意的是,XML系统10不一定需要包含XSLT处理器74。在一个替代的实施例中,XSLT处理器74或者其等价物可以被定位于远离XML系统10,并且可以被配置为转换XML输入流中的XML数据,并且向所述XML系统提供已转换的数据。因此,XML系统10可以接收已转换的XML数据,并且把它们处理为格式化的XML数据。等效于典型地由XSLT处理器管理的远程或者“单独”的处理可以基于在样式表中所包含的XSLFO指令,所述样式表也不需要驻留在XML系统10内,也不需要可以被XML系统10直接地访问。
[0283] 现在转到与代码段4相结合的图2-4,现在将陈述涉及位图/条码/RFID呈现引擎80和流内外来对象的处理的附加细节。如上所述,呈现引擎80处理由XSLFO处理器78产生的XSLFO区域节点树140的每一个节点。如业界所熟知那样,XSLFO区域节点树140在存储器中被表示为文档对象模型。因此,可以存在多个节点。例如,一个节点可以包含流内外来对象,另一个节点可以包含相关的元素名,另一个节点可以包含相关的文本数据,另一个节点可以包含相关的属性,等等。
[0284] 如图4的方框150所示,对XSLFO区域节点树140的各个节点进行处理。特别是,呈现引擎80“知道”如何呈现或产生由相应的流内外来对象定义的实际条码符号或者RFID应答器编码。市售的XSLFO处理器不“知道”如何去处理代表条码符号和RFID应答器的这样的流内外来对象,并且因此不能产生或呈现条码符号或者对RFID应答器进行编码。然而,市售的XSLFO处理器可以以可接受的方式来呈现文本,并且甚至可以呈现某些类型的流内外来对象。
[0285] 如果一个特定的节点不含有流内外来对象,这意味着它可以包含,例如,文本数据,则可以通过利用XSLFO处理器78(而不是呈现引擎80)的处理能力,以一种“标准的”方式来处理这个节点,如方框154所示。在一个实施例中,向XSLFO处理器78“反向”提供非流内外来对象,或者通知XSLFO处理器,XSLFO区域节点树140中的一个特定节点适于由它来处理。
[0286] 如上所述,含有非流内外来对象的XSLFO区域节点树140中的一个节点的处理可以由XSLFO处理器78进行处理。当然,例如,不同的市售的XSLFO处理器可以将文本呈现不同格式。例如,如上所述,可以从Antenna House公司购买的被称为“XSL Formatter”的XSLFO处理器把一个节点呈现为WINDOWS的“与设备无关的位图”格式。如上所述,可以从RenderX公司购买的被称为“XEP”的XSLFO处理器把一个节点呈现为“PDF”格式,并且,如上所述,可以从ApacheSoftware Foundation购买的被称为“FOP”的XSLFO处理器,也可以把一个节点呈现为“PDF”格式。
[0287] 最好是,XML系统10利用可以从Apache Software Foundation购买的被称为“FOP”的XSLFO处理器78,因为这种处理器可以被这样配置,当它遇到无法处理的流内外来对象时,可以“调用”一个子程序或其它处理功能。特别是,这个XSLFO处理器78可以被设置去调用这里所描述的呈现引擎软件方框80,来处理它无法处理的流内外来对象。
[0288] 其次,如方框160所示,如果所述节点含有不能由所述XSLFO处理器78进行处理的、代表条码或RFID应答器的流内外来对象,则呈现引擎80通过校验来确定所述的流内外来对象是否具有专用于这个XML系统10的“名字空间”。例如,呈现引擎80可以通过校验来确定与所述的流内外来对象关联的名字空间是否对应于“ZebraTechnologies公司的名字空间”。名字空间的表示法在业界中是众所周知的。这在代码段4的第3行中被表示为“xmlns:bo=”http://www.zebra.com/2002/XSL/Barcode″>″。因此,如代码段4所示,以上定义的名字空间被应用于具有前缀“bo”的任何元素。然后,这样的具有前缀“bo”的元素仅可用于由呈现引擎80进行处理,所述前缀“bo”类型的元素对应于条码类型的流内外来对象。所述XSLFO处理器78将不“知道”如何去处理这些元素。
[0289] 如果所述流内外来对象与适当的名字空间无关,则它将被送回到所述XSLFO处理器78,因为所述XSLFO处理器78能够处理一些有限数目的流内外来对象,所以假定它不是条码类型的流内外来对象。这由从方框160指向方框154的箭头162来表示。然而,一般来说,流内外来对象的存在或者被生成是由于这样的特定原因,即,与流内外来对象相关联的数据在性质上是十分独特的(诸如条码),并且因此,许多市售的或者通用的XSLFO处理器都不能处理它们。
[0290] 要注意的是,这里所述的市售的XSLFO处理器不一定不能处理所有的流内外来对象。然而,它们不能处理对应于条码符号和RFID编码的流内外来对象。
[0291] 假定所述流内外来对象具有适当的名字空间,则方框170对流内外来对象中的元素进行解释,以便确定条码类型。例如,所述流内外来对象被表示于代码段4的第21-26行。更具体地说,具有表示对应于条码的正确名字空间的前缀为“bo”的条码元素被表示为具有“postnet”的条码类型,如代码段4的第23-24行所示,它表现为08540。要注意的是,代码段4的第41-42行表示针对另一个流内外来对象即,待打印的下一个条码标记,的类似条码元素,它对应于在代码段1中所示的“Steven Hawking”的地址。
[0292] 根据应用,可以在流内外来对象中指定任何条码类型。所述条码类型基于已知的条码标准。例如,条码类型不限于条码符号的postnet类型,并且可以是,例如,“行业的5中取2”、“PDF 417”、“UPC”,等等。条码“类型”指定待打印的条码符号的基本结构,诸如条的宽度、条的宽度与两条之间的间隔的宽度之比等。每一种特定的已知条码标准都已被具体地规定。
[0293] 其次,在已经从流内外来对象确定条码类型之后,对流内外来对象的属性进行解释,以便确定条码的各项特性,如方框176所示。所述各项特性可以修改生成条码符号的方式。例如,在代码段4的第23-24行可以看出“postnet”类型条码的一项属性就是“interpretation-line=″none″”。如业界所熟知的那样,“interpretation-line=″none″”意味着没有相应的人可读的文本随同特定的条码符号一起被产生。与条码元素有关的属性的另一个实例可以是条码符号的高度,它也可以被指定在流内外来对象中被指定作为一种属性。
[0294] 使用从流内外来对象中获得的条码类型和属性,呈现引擎80随后将获得有待于转换为条码符号的实际节点文本数据,如方框180所示。在这个实例中,实际的条码数据是邮政编码“08540”,如代码段4第24行中的两个反尖括号(>80540<)之间所示。从数字数据“08540”物理转换到表示条码符号(例如,对一种线性条码而言)的线或条的位图可以由,例如,可以从Zebra Technologies公司购买的条码标记打印机中所包含的软件程序来实现。这样适当的条码打印机可以是,例如,型号为Xi的系列条码打印机(90XiIII+、96XiIII+、140XiIII+、170XiIII+、220XiIII+),2800系列条码打印机,型号为Z4M、Z6M、
105SL的条码打印机,型号为R4M+、R402、R-140的打印机/编码器,等等。可以从Zebra Technologies公司购买的条码打印机中所含有的这样的知名的软件程序或者算法是十分有效的,并且因此可以快速呈现条码。
[0295] 对于线性条码来说,通过将文本数据转换为一系列暗和亮的条纹(其相对宽度遵从用于条码符号学的行业规格)来呈现所述位图。文本数据可以在编码之前添加校验字符,以便当它被条码扫描器读出时,允许对条码进行验证。根据符号学,校验字符可以是必需的或者是可选的。根据符号学的编码要求,这些条可以聚集为条的模块。根据符号学,在编码过程中,文本数据可以被压缩。这些条可以由一个或多个“探测”条作为前导和/或由一个或多个“探测”条跟在后面,这由符号学规范给出定义,这允许扫描仪更容易地定位条码数据。
[0296] 为了实现符号学所要求的适当的编码和适当的物理尺寸,必要时还可以应用其它算法。条的高度、窄条的宽度、宽条与窄条之比,以及其它符号学专用的参数都可以由XML数据中的各项属性来指定。此外,如XML数据中的各项属性所指定的,条码位图可以被旋转(通常以90°为增量)。
[0297] 对二维条码来说,通过根据各种独特的符号学算法,将文本数据转换为位模式来呈现位图。二维条码典型地允许对多于线性条码的文本数据进行编码。编码算法可以包括如符号学所定义的,例如,数据压缩、误码校验和纠正、可变的数据冗余度水平、模块化、探测图形和其它算法。可以由XML数据中的各项属性来指定所述用户可指定的符号学专用参数。然后,由符号学算法生成的位图可以如同XML数据中的各项属性所指定的被放大和/或旋转。
[0298] 一旦表示条码符号的位图已经被方框180所生成,所述位图随后被置入或并入到“主”或“标记”位图184中,所述标记位图代表整个发货标记的图像,如方框182所示。所述发货标记含有人可读的文本、其它文本或字符,以及条码符号。要注意的是,上述位图可以是单独的,即,针对文本的位图和针对条码符号的位图,或者一个主位图可以作为处理进程而被使用或者被“繁衍”。在这一方面,要注意的是,呈现引擎80在其上运行的树或数据结构被称为“XSLFO区域节点树”,这意味着它含有不同的“区域”。这样的区域可以对应于不同的或个别的位图或位图部分。然而,可以使用任何数目的适当位图结构。位图的实际结构或配置,或者位图的数目与本发明的范围无关。
[0299] 例如,当生成文本时,XSLFO处理器78可以把“它的”文本置于一个特定的位图中。这样的文本可以对应于上面所讨论的姓名“阿尔伯特爱因斯坦”。由于这个文本也将与条码符号一起被打印在发货标记上,所以“主”或“标记”位图184将含有所有的部件位图。随后,最终的“主”位图184将被送往打印机驱动器54(图1),使得发货标记可以被打印。
[0300] 现在转到图4-5,图5是针对在代码段1中所指定的第一条码发货标记的上述处理的最后输出的表示190。按照相应的样式表对文本数据进行呈现和格式化,同时,如上所述,也由呈现引擎80以条码符号的形式来呈现邮政编码192。要注意的是,仅为了说明目的,图5所示的字号或字型可以不同于在程序段3中所示的相应样式表中所指定的那些。
[0301] 回过来参照方框170,假定流内外来对象具有适当的名字空间,如果流内外来对象不是条码类型,则方框170对流内外来对象中的各元素进行解释,以确定它是否是RFID类型。如上所述,如同任何条码类型都可以在流内外来对象中被指定那样,任何RFID应答器类型也可以根据应用在流内外来对象中被指定。RFID应答器类型基于已知的RFID标准。例如,RFID类型不局限于ISO 15693类型的RFID编码,并且可以是,例如,Tag-it或I·Code类型的RFID编码,等等。RFID类型指定待编码的RFID数据的基本结构,诸如数据存储容量、数据寻址方案、发射频率、接收频率、专用的特征(诸如序列编号和数据锁定,等等)。如上所述,每一种特定的已知RFID标准都已被具体地规定。
[0302] 其次,在已经确定所述流内外来对象是RFID类型之后,对流内外来对象的属性进行解释,以确定RFID应答器的各项特性,如方框183所示。这些特性可以修改编码RFID应答器的方式,诸如写入哪一个数据块,是否对所述数据块进行写保护(加锁),写入失败时是否重试,在编程时把标签定位于收发信机天线下面,等等。
[0303] 使用从流内外来对象中获得的RFID应答器的类型和各项属性,呈现引擎80随后获得有待于转换为RFID应答器编码的实际节点文本数据,如方框185所示。例如,实际的RFID编码可以是邮政编码“08540”,它可以作为ASCII字符被放置在一个Tag-it应答器的数据块0和1中(因为Tag-it的每一个数据块都保存4个字节的数据)。Tag-it应答器可以保存8个数据块,每一个具有4个字节的数据,总共有32字节的用户数据。从表示实际的RFID编码数据的数字数据到适于编码到RFID应答器的形式的物理转换可以由,例如,从ZebraTechnologies公司购买的打印机和系统中所包含的软件程序来执行。
[0304] 例如,可以使用几种条码打印机/编码器,诸如型号R-140和型号R402等。可以从Zebra Technologies公司购买的系统中所含有的这样的软件程序或者“本地算法”是十分有效的,并且因此可以快速呈现条码和RFID应答器编码。
[0305] 一旦RFID应答器编码已经被方框185生成,呈现一种RFID专用的数据结构,如方框187所示。如上所述,这个方框向使用本地RFID打印机算法的RFID应答器呈现所述RFID专用的数据结构,以便控制RFID收发信机61(图1)去读取和编码RFID应答器62(图2)。这实质上以相同于对可编程存储器器件进行编程的方式,来编程RFID应答器。
[0306] 现在参照图6,图中示出了一个可替代的实施例。相同的参考数字被用来表示相同的结构。在这个特定的实施例中,XML系统10不需要在所有情况下均包括或专门地利用XML打印机装置。在这个实施例中,例如,一个外部请求者194可以希望XML输入数据流被呈现为位图,使得它可以以远程方式来打印条码标记。可替代地,外部请求者194可以请求对RFID应答器进行编码。因此,外部请求者194可以通过因特网或者其它网络43、44向XML服务器200发出请求。此项请求可以采取相同于上面就图1-3和代码段1-4描述的XML输入数据流的形式。所述请求也可以采取含有XML数据的、诸如业界所熟知的简单对象访问协议(SOAP,Simple Object Access Protocol)的协议的形式。
[0307] 作为响应,XML服务器200的计算机系统12可以处理XML输入数据流。上述的所有相同的处理功能,除了涉及条码等的以外,都可以在本实施例中实现,所述位图不被送往打印机驱动器。而是被转换为任何适当的格式,诸如业界所熟知的“JPEG”或“PNG”格式。随后,所述JPEG或PNG文件被送回外部请求者194,然后他(她)针对适当的打印机驱动器来格式化JPEG或PNG文件,并打印和/或显示所述条码标记。就RFID应答器而言,可以以数据文件的形式将已编码的数据送回所述请求者。可以使用数据文件的任何适当的形式或格式。因此,本发明可以起到一个条码呈现服务器和/或RFID呈现服务器的作用,并且不一定需要直接地执行打印或编码功能。可替代地,数据的输出表示可以采取可缩放的矢量图形(SVG,Scalable vectorGraphic)格式,所述格式由适当的行业标准给出定义。
[0308] 图1的XML系统的一个替代的实施例现在示于图7-8,图中表示一个“混合的”XML系统300,而不是图2-6所示的“本地”XML系统10。要注意的是,这个实施例仍然可以与图1所示的计算机系统12和打印机系统50配合使用,并且相同的参考数字将被用来表示相同的结构或部件。
[0309] 在这个实施例中,混合的XML打印机系统300可以接收基于ZPL数据模板的XML数据,所述模板遵从ZPL语言(ZPL,ZebraProgramming Language),诸如ZPL I和/或ZPL II,以及它们的任何变种。ZPL语言是一种格式化语言,它使用“^”字符和双字母命令代码来定义一项命令。例如,“^XA”命令定义一个新的标记格式的开始,以及“^XZ”命令定义一个标记格式的结束。
[0310] ZPL语言还包括“~”命令,它表示控制命令。例如,命令“∽JR”是打印机复位命令,它由打印机立即执行,并且实际上对条码标记的格式化没有重大影响。ZPL I和ZPL II由位于伊利诺斯州沃农山的、本发明的拥有者Zebra Technologies公司研制。要注意的是,在这里,ZPL和ZPL II可以可互换地使用。
[0311] 在题为“ZPL II Programming Guide Volume One:Commandreference for X.10”,Manufacturer Part No.45541LB,和“ZPL IIProgramming Guide Volume Two:The X.10 Environment”,Manufacturer Part No.45542LB的文档中可以找到涉及ZPL语言规范的更详细的描述,在下列因特网网址“www.zebra.com/SS/manuals.htm”的Zebra Technologies公司网站,可以找到和下载上述文档。上述文档在此以全文形式作为参考而并入。在图7-9的实施例中,打印机系统的“语言”是ZPL和XML二者的混合,因此,XML系统10可以被称为“混合的XML打印机”。
[0312] 众所周知,基于ZPL的打印机可以处理“按需打印”和“已存储的标记格式”。按需打印意味着当含有待打印的标记数据的数据流被送往打印机时,它将被立即打印。已存储的标记格式意味着可以事先生成和向打印机下载用于标记的模板。然后,可以在打印机内部再调用所述模板,以便与稍后发送过来的含有待打印的标记数据的数据流配合使用。
[0313] 正如在以下的说明中变得更清楚的那样,图2-6的本地XML打印机系统实施例和图7-8的混合XML打印机系统实施例之间的差别之一就是,在混合XML打印机系统实施例中,数据模板在ZPL中被事先定义,并且被首先被下载到所述打印机。还要注意的是,图7-8的混合实施例并不是图2-6的本地XML打印机系统实施例和已知的ZPL打印机的组合。它不是仅仅在本地XML方式和ZPL方式之间进行切换的“合二为一”的打印机。
[0314] 图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的需求。
[0315] 然而,某些公司由于在用于待打印的标记的早期的ZPL模板中已经作了相当大的投资,所以这样的公司没有准备或者乐于进行投资,以便把它的系统“完全转换”到“纯粹的XML”上来。由于以XML兼容的格式来传输数据正在变为行业标准,所以许多公司正在建立基础设施,以便允许XML数据容易地从一个业务流程送往另一个业务流程。虽然许多公司,以及作为一个整体的行业,正在朝着使用XML数据格式的方向而转移,但是这些公司不希望仅仅为了切换到完全兼容的XML格式而废弃它们在其模板数据库基础设施上的投资。
[0316] 因此,图7-8的混合XML打印机实施例允许使用现有的ZPL模板和XML格式的数据。很可能是出于经济原因,由于“完全”切换到良好地形成的XML尚未被作出,所以ERP系统88可能继续使用现有的ZPL模板。因此,XSL样式表、模式和格式化对象尚未在ERP侧付诸实施,并且混合XML打印机系统在这样的环境下,提供了一种节省成本的解决方案。
[0317] 现在转到图7和代码段5,紧接在下面的题为“代码段5-一个ZPL可下载模板”的代码段表示ZPL格式模板的一个特定实施例,在打印实际条码标记之前,上述ZPL格式模板可以被发送到混合XML打印机系统300,并且可以被保存在打印机系统的存储器中,以便用于将来的打印工作。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
[0318] 代码段5-一个ZPL可下载模板
[0319] ^XA
[0320] ^DFE:SHIPLABL.ZPL^FS
[0321] ^MCY
[0322] ^LRN^FWN^CFD,24^LH0,0
[0323] ^CI0^PR2^MNY^MTT^MMT^MD0^JJ0,0^PON^PMN
[0324] ^LT0
[0325] ^A0N,58,58^FO188,169^CI0^FN999^FDname^FS
[0326] ^A0N,58,58^FO188,244^CI0^FN998^FDaddress^FS
[0327] ^A0N,58,58^FO188,319^CI0^FN997^FDcity^FS
[0328] ^A0N,58,58^FO657,319^CI0^FN996^FDstate^FS
[0329] ^A0N,58,58^FO188,394^CI0^FN995^FDzip^FS
[0330] ^BY4^FO188,488^BZN,35,N^FN995^FDzip^FS
[0331] ^PQ1,0,1,Y
[0332] ^XZ
[0333] 众所周知,如同在ZPL语言中所指定的那样,在第1行和第14行所示的命令(^XA,^XZ)定义模板的开始和结束。第2行表示被下载到混合打印机系统300的格式模板被存储在混合打印机的存储器中由“E:SHIPLABEL.ZPL”所定义的位置,这里“E:”表示一个存储装置标识符,它可能是,例如,一个磁盘驱动器。然而,可以使用任何适当的存储装置。纳入此项命令表示这种格式模板有待于保存。第3-6行表示由ZPL编程语言提供的某些打印机设置和初始化命令。
[0334] 现在参照第7行,带有相关参数“N”的“^A0”命令意味着将使用字号0并且以正常(“N”)方向(即,字型不旋转)来生成一个文本字段,这里“58,58”表示将被打印的文本的高度和宽度(以点数来表示)。正如在ZPL语言中所提供的那样,命令“^FO188,169”定义所述字段的起点,使得所述文本将被定位于坐标188,169(即,从标记的起点算起,横跨188个点,并且向下169个点)。
[0335] 字段号命令“^FN999”(具有参数“999”的FN命令)定义一个可变字段,其将包括将在稍后时间下载到所述打印机的可变信息。在这个方面,和在标准的ZPL中的情形有些不同。在标准的ZPL中,当接收到模板中的“^FN”命令时,由于当所述模板稍后被再调用时,发送指定所述可变数据的位置的后续命令“^FN”,跟随着所述数据本身,因此并从随命令一起提供数据。然而,在这个混合的实施例中,提供某些紧跟在“^FN”命令后面的“关联”数据,如字段数据命令“^FD”所示。在这个特定的实例中,紧跟在“^FN”命令后面、但是被字段数据命令“^FD”领先的所述数据被表示为“姓名”,这就是将匹配于稍后从ERP或仓库系统发出的XML数据的数据。因此,当混合XML打印机系统300接收到代码段5中所示的模板时,它被存储在所述打印机的存储器中,此外,“姓名”和字段“999”之间的“关联”也被存储。
[0336] 类似地,在第8行,“地址”和字段998之间的关联被存储。在第9行,“城市”和字段997之间的关联被存储,如此等等。要注意的是,由例如“姓名”、“地址”和“城市”等表示的字段不是准备由ERP系统88作为XML数据发送的实际数据。而是,“姓名”、“地址”和“城市”是把ERP系统稍后将发送的数据与字段位置或标识符(即,分别是“999”、“998”和“997”)相关联系的“标签”或“关联”。
[0337] 现在转到第12行,“^BY”命令定义用于跟随在它后面的条码命令的缺省参数。在本例中,参数4定义窄条的宽度为4个点。“^FO”命令定义待打印的条码将位于坐标188,488。“^BZ”命令定义条码,它是postnet类型的条码格式,具有正常方向(参数N),高度为
35个点(参数35),以及没有人可读的解释行(参数N)。还有,具有参数995的“^FN”命令指定被标识为“995”的标记字段与待下载的XML数据的名字之间的关联,由具有属性“邮政编码”的数据命令“^FD”给出定义,数据命令“^FD”还指定“邮政编码”是待下载的XML数据的名字,以便生成实际的被打印的条码。如图9所示,被打印的实际条码为“邮政编码”304。
[0338] 当然,如图9所示,文本字段以及条码304本身被打印在条码标记305上。这些字段可以包括例如姓名306、地址308、城市310、州312和文本的“邮政编码”314。
[0339] 因此,在这个实施例中,在代码段5中所示的模板被存储在混合XML打印机系统300中,并且没有真正的“工作”要做(即,尚未打印一个标记)。总之,第7-11行定义各文本字段,并且第12行定义条码,上述条码连同将与稍后从ERP系统88发出的实际XML数据相关的各种关联,连同如上所述的其它参数一起被定义。代码段5的模板可以规定哪些字段是静态的,以及哪些字段是可变的。所述可变字段具有一个变量名(存储在“^FD”命令中),后者稍后可以与待下载的数据相关或“关联”,所述数据对应于被打印的标记。
[0340] 因此,在图7-8的混合实施例中,“^FD”命令(即,跟随于其后的是“名字”)确定将在实际XML数据中被送出的、跟随模板的下载的变量的名字,而不是将被打印在条码标记上的实际数据。
[0341] 为了观察上述代码段5的格式模板如何用于操作,紧接在下面示出了题为“代码段6-与ZPL模板配合使用的下载的XML数据”的代码段6。行号不是所述代码的一部分,插入行号仅为了说明的目的。
[0342] 代码段6-与ZPL模板配合使用的下载的XML数据
[0343]
[0344]
[0345]
[0347]
[0348] Albert Einstein
[0349] 1234 Relative Way
[0350] Princeton
[0351] NJ
[0352] 08540
[0353]
[0354]
[0355] Steven Hawking
[0356] 5678 Black Hole Drive[0357] Los Angeles
[0358] CA
[0359] 90007
[0360]
[0361]
[0362] Richard Feynman
[0363] 90 Quantum Circle
[0364] New York
[0365] NY
[0366] 10044
[0367]
[0368]
[0369] 代码段6表示ERP系统88或仓库管理系统将向混合打印机系统300发送的实际XML数据流,但是在代码段5的格式模板被首先下载到混合XML打印机系统之后。在代码段5和6的特定实例中,可以被使用的仓库管理系统,例如,是Oracle仓库管理系统(“Oracle”系统或“Oracle WMS”)。当然,可以使用任何的事务系统,诸如Oracle、SAP,等等。在这个特定的实例中,Oracle系统从它的数据库中收集数据,并且按照特定的XML格式来格式化所述数据,以便传输到所述打印机。由于这个特定的实例使用Oracle系统,所以代码段6的模板使用Oracle的XML语义。
[0370] 在这个方面,在代码段6的第2行中,用业界所熟知的、被标识为“label.dtd”的文档类型定义或“DTD”来定义Oracle仓库管理系统所使用的特定XML语义。同样,如同业界所熟知的那样,ERP系统88或Oracle系统具有指定XML数据的打印格式的能力。借助于背景技术,由于Oracle系统和其它ERP系统被设计为与一种定制的“中间件”软件系统连接,所以这样的能力已经被初始地建立到这些系统中,上述“中间件”软件系统处理Oracle或ERP系统和使用的特定条码打印机之间的格式转换。本混合打印机消除了对这样的“中间件”系统的需求。
[0371] 然而,由Oracle系统发送的XML数据在代码段6的第3行指定存在一个被称为“标记”的XML元素,它具有一种被称为“_FORMAT”的属性。此项属性指定使用特定的格式模板。在这个特定的实例中,与被发送的XML数据配合使用的格式模板被标识为“E:SHIPLABEL.ZPL”,它是先前被存储在混合XML打印机系统300中的格式模板,如代码段5中所示,并且它是一种基于ZPL的格式模板。因此,可以从“E:SHIPLABEL.ZPL”所指定的位置再调用先前下载并存储在混合XML打印机系统300的存储器中的格式模板。
[0372] 第3行还含有“标记”元素的某些附加属性,诸如“_QUANTITY”、“_PRINTERNAME”和“_JOBNAME”。属性“_QUANTITY”指定要打印的条码标记的数目,同时属性“_PRINTERNAME”和“_JOBNAME”是混合XML打印机系统300不需要的传统字段,但是因为这样的数据被初始地生成以便如同上面所述那样和中间件软件连接,所以还是被包括在Oracle数据中。
[0373] 代码段6含有3组“标记”数据,分别如第5-11、12-18和19-25行所示。要注意的是,这3组“标记”数据表现出分别与代码段1的第8-14、15-21和22-28行相似,因为这两个代码段分别指的是“AlbertEinstein”、“Steven Hawking”和“Richard Feynman”,并且具有用于地址、城市、州和邮政编码数据的相关字段。因此,代码段6中所示的数据对应于待打印的3个单独的标记。然而,要注意的是,对于待打印的3个标记中的每一个,所有的收件人信息都作为文本被打印,只有邮政编码字段作为实际的条码而打印。这是由于在代码段5第12行的模板中所定义的“^BZ”命令。
[0374] 参照代码段5和6,在代码段6中所示的由Oracle系统发送的数据随后与在代码段5中所示的对应的格式模板相关联。例如,在代码段6的第6行中,变量名“姓名”对应于“阿尔伯特爱因斯坦”,后者是实际的XML文本数据。使用先前保存的代码段5的模板,在“姓名”(其内容为“阿尔伯特爱因斯坦”)和字段号“999”之间建立关联,如代码段5的第7行所示。然后,XML数据“阿尔伯特爱因斯坦”被保存在由字段号“999”所定义的存储器中。
[0375] 类似地,XML数据“1234 Relative Way”被保存在由字段号998所定义的存储器中,XML数据“Princeton”被保存在由字段号997所定义的存储器中,XML数据“NJ”被保存在由字段号996所定义的存储器中,如此等等。一旦XML数据输入流中所包含的所有数据都已经与相应的模板相关联并且已经被装入存储器,则打印标记。
[0376] 现在转到图7和8,图7表示混合XML打印机系统300的一个特定实施例的高级功能方框图,同时图8表示混合XML打印机系统的一个特定实施例的组合的高级软件方框图和数据流程图。如同上面针对本地XML打印机系统而描述的那样,混合XML打印机系统300从企业资源计划(ERP)系统88接收数据。所述数据可以包含XML成分和ZPL成分二者,诸如XML数据和/或ZPL模板数据。
[0377] 图7的高级方框表示一个用于XML的简单应用程序接口(SAX,Simple API for XML)处理器320的使用,其是XML处理器的一种类型。借助于背景技术,SAX处理器不使用前面针对图2-6的本地XML打印机系统而描述的XML处理器所使用的文档对象模型(DOM,Document Object Model)。
[0378] 如上所述,基于DOM的XML处理器在存储器中生成节点树,以便执行业界所熟知的处理步骤。当执行如前面针对图2-6的实施例而描述的XML类型处理时,这是必要的。因此,所有数据都被存储在存储器中,从而占用大量的存储空间。然而,SAX处理器解释XML语法和数据流,而不是在存储器中建立节点树,如业界所熟知的那样,它生成由事件处理器处理的“事件”。SAX处理器是十分节省存储空间的,当处理大量XML数据时是令人期待的。
[0379] 然而,在图7-8的这个替换实施例中,最好是不进行XML类型的处理,因而不需要基于存储器中的节点树的处理。因此,如图7所示,可以使用SAX处理器,而不使用严格地基于DOM的XML处理器。术语“SAX”仅仅是指关于如何去处理XML语言的数据和语法的规范。例如,在本实施例中可以使用的一种市售的XML处理器是可以从Thai Open Source Software Center有限公司购买的“Expat”XML处理器。虽然这种特定型号的XML处理器有能力起到基于DOM的XML处理器或者不基于DOM的SAX处理器二者的作用,可用于本实施例的用途,所述处理器最好被配置为不基于DOM的XML处理器,并且因此将被称为SAX处理器。然而,可以使用任何适当的基于DOM的或者不基于DOM的XML处理器。
[0380] 如图7所示,除了SAX处理器320以外,还示出了一个ZPL处理器322。来自SAX处理器320和ZPL处理器322的数据路径被安排通往被标记为可变数据整合的方框328。可变数据整合方框328组合从ERP系统88接收到的数据,并且将所述数据应用于先前由ZPL模板定义的字段,或与其“相关联”,如同前面针对代码段5的ZPL模板所描述的。实质上,在这个步骤中,实际的XML数据,例如姓名“Albert Einstein”被保存在由代码段5的模板999定义的关联位置上,余类推。
[0381] 其次,由位图/条码/RFID呈现方框330呈现所述数据,其处理过程类似于在已知的市售ZPL打印机中所使用的ZPL位图呈现。例如,下列已知的ZPL打印机,可以从位于伊利诺斯州沃农山的ZebraTechnologies公司购买,并且包括能执行ZPL位图/条码处理的软件、硬件和/或固件的下列型号:Zebra型号XiIII+、90XiIII+、96XiIII+、110XiIII+、140XiIII+、170XiIII+、220XiIII+,型号Z4M、Z6M、105SL,型号R4M+、R402、R-140的打印机/编码器,以及来自ZebraTechnologies公司的Xi系列的任何型号的条码打印机。要注意的是,最好是不使用任何XSLFO处理来执行所述位图/条码/RFID呈现方框330,XSLFO处理在本地XML打印机系统实施例中是需要的,并且不使用XSLT样式表或模式。然而,XSLT处理和模式管理是预期的,并且处于本发明的范围和精神实质内。
[0382] 此外,RFID收发信机61可以通过操作被连接到所述位图/条码/RFID呈现方框330,以利于与RFID应答器62进行通信。RFID收发信机61和RFID应答器62可以类似于或相同于前面针对图1、2和6的实施例而展示和描述的收发信机和应答器。
[0383] 按照如同前面针对本地XML打印机实施例而描述的方式来呈现条码,所不同的是,条码的各项参数不是在XML数据中作为属性来指定,而最好是由格式模板中的ZPL命令参数来指定。例如,对线性条码来说,ZPL命令“^BY2,2,100”指定,窄条宽度为2个点,宽条宽度与窄条宽度之比为2,同时条的高度为100个点。
[0384] 在位图被呈现之后,它被送往也被示于图1的打印机驱动器54。打印机驱动器54是上述部件的一个实例,其功能可以由计算机系统12中的处理装置去执行,或者由处理装置60(图1)去执行,这取决于相关的处理装置的物理位置。再有,单个处理装置如果功能足够强大,也可以管理混合XML打印机系统300的所有功能。
[0385] 现在参照图1、7和8,图8表示组合的高级软件方框图和数据流程图的一个特定实施例。下面描述的软件可以由图1的计算机系统12的处理器28执行。再有,处理器28可以执行计算机系统12和打印机系统50二者共同的功能。可以有一个或多个处理器,它们可以协同工作或者单独工作。由计算机系统(或在计算机系统中),还是由打印机系统(或在打印机系统中)执行处理或处理功能,对本发明的范围来说是不重要的。
[0386] 正如将在下面说明的那样,在SAX处理器320的控制下,可以出现如图8所示的多个“通过”处理步骤。然而,这样的多个“通过”不一定是线性的,并且因此,在图8中可以不一定示出由专门的线或箭头表示的实际路径。描述了一种可以不具有如图8所示的实际的起点和终点的叠代过程。宁可,可以示出由“通过”产生的一个动作或结果,并且在图8中可以用虚线来表示一条“替代的路径”,它向SAX处理器320返送处理控制。这是一条捷径,表示所述路径可以是叠代的,并且在处理到达其终点之前,SAX处理器320可以循环或叠代许多次。
[0387] 仅为了说明目的,在图8所示的第1次“通过”处理中,首先向混合XML打印机系统300发送一个ZPL模板,而待打印的实际数据尚未发出。在第2次“通过”处理中,正如将在下面说明的那样,表示待打印的条码标记的XML数据被送往所述打印机系统,准备按照先前保存的ZPL模板进行打印。
[0388] 如图8所示,从ERP系统88接收数据输入流340,并且如上所述,上述数据输入流340可以含有XML数据和/或ZPL模板数据。SAX处理方框320初始地接收和解释所述数据输入流340。要注意的是,由于SAX处理器是以SAX方式运行的XML处理器,所以实际上由一个XML处理器来执行SAX处理方框320。因此,短语XML处理器或XML处理方框可以与短语SAX处理器或SAX处理方框互换使用。然而,如上所述,XML处理器最好工作于SAX方式,并且因此被称为SAX处理器320。
[0389] 首先,SAX处理方框320通过把标准XML语法规则应用于数据输入流,来确定所述数据输入流340是否是良好地形成的XML数据。要注意的是,图8的SAX处理方框320实质上相同于图7的SAX处理器,其中,图7表示某些硬件,而图8则表示数据流。在这里,术语SAX处理器和SAX处理方框将被可互换地使用。
[0390] 如果SAX处理方框320确定所述数据输入流不遵从XML语法,则它假定所述数据输入流是基于ZPL的。因此,SAX处理方框320将所述数据输入流340送往ZPL处理方框322,用于进一步的处理。要注意的是,图8的ZPL处理方框322实质上相同于图7的ZPL处理器,其中,图7表示某些硬件,而图8则表示数据流。在这里,术语ZPL处理器和ZPL处理方框将被可互换地使用。
[0391] 然后,ZPL处理方框322处理或解释表示ZPL格式模板的数据输入流340。最好是,ZPL处理方框322接收一条“标记开始”命令(^XA),上述命令让它开始处理格式模板。所述格式模板示于代码段5中。
[0392] 各种ZPL命令管理处理过程并且定义所述标记的各个字段,实质上建立和定义待打印的数据。在这个处理阶段,可以接收打印机控制和其它命令。当所有格式模板都已经被下载时,ZPL处理方框遇到一条“标记结束”命令(^XZ),这条命令导致保存格式模板。要注意的是,具有相应的标识符“E:SHIPLABEL.ZPL”的(^DF)命令(示于代码段5的第2行)向ZPL处理方框322表明,最好在文件名为“shiplabel.zpl”的文件中在打印机系统的“E:”设备上内部保存格式模板。当然,不一定需要将格式模板内部保存在打印机系统中,并且可以保存在任何存储位置,诸如在联网的服务器上,或者在可通过通信网络进行访问的远程位置上。
[0393] ^DF(下载格式)ZPL命令表明,所述标记格式(下载格式是标记格式的一部分)将被存储,而不是立即打印。当遇到^XZ命令时(表明所有的模板数据都已经收到),实际上发生保存。
[0394] 在图8中,标记为“ZPL标记格式”的方框(352)代表一个数据存储器。这表明来自输入流的模板数据被存储在一个数据存储器中。从数据存储器352出来的线表示,在稍后的某个时间,将从所述数据存储器检索数据用于进一步的处理。数据流动的路径是从方框360到所述存储器再到方框356,但是这并不表示实际的“控制流”,后者不是线性流。
[0395] 虽然被标记为“再调用ZPL标记格式”的方框356被表示为与上述的被标记为“保存ZPL标记格式”的方框360相连接,但是处理可以不是线性的,并且因此数据流可以不一定是连续的,或者从“保存ZPL标记格式”的方框360流动到“再调用ZPL标记格式”的方框356。而是,整个过程是如上所述那样的叠代,并且在ZPL标记格式被保存之后,在这次初始的“通过”中,如方框360所示,输入数据流的控制可以返回到SAX处理方框320,以便进行后续的处理,如虚线370所示。如果在输入数据流340中没有待处理的附加数据,则处理过程结束,并且等待附加的下载数据。
[0396] 在图7-8所示的第2次“通过”处理中,ERP系统88可以发送实际的XML数据,混合的XML打印机系统300将根据先前下载的ZPL模板来处理上述XML数据。例如,SAX处理方框320可以接收良好地形成的XML数据,它可以指定跟随在后面的是标记数据。为了处理所述实际数据,已存储的ZPL格式被再调用,如被标记为“再调用ZPL标记格式”的方框356所示,因此,被再调用的格式模板可以与到来的XML数据流结合在一起使用。
[0397] SAX处理方框320处理XML语法并且确定由数据输入流340定义的各种元素和属性。在这个实施例中,当接收到一个“_FORMAT”属性时,数据输入流340将被暂时地中断,并且输入数据来自被存储在打印机系统300的格式模板,因此被嵌入到格式模板中的ZPL命令将由ZPL处理方框322解释。一旦格式模板中的命令已经被解释,数据输入流340将再次变为SAX处理方框320,后者继续处理XML数据。
[0398] 如上所述,在SAX处理器320的控制下,附加的通过处理可以导致各种“事件”被启动。例如,可以启动一个“可变数据SAX事件”376,使得格式模板中的各个字段用所接收的相应或“相关的”XML数据来填充。这被示于标记为“将XML变量匹配于ZPL标记格式变量”的方框380中。实质上,XML数据输入流340中的各个变量与格式模板中的各个字段相关联。例如,在这个步骤中,XML变量,诸如代码段6中所示的实际的XML数据“阿尔伯特爱因斯坦”(图9的306)匹配于ZPL标记格式变量,诸如代码段5的ZPL模板中的标记变量“姓名”。
[0399] SAX处理器320可以启动更多的事件以处理上述各项任务,诸如一个“开始标记SAX事件”384,以及“其它SAX事件”388。在SAX处理器320的控制下,图8的这个或其它通过处理可以导致“其它SAX事件”的产生,后者可以由标记为“处理事件”的方框390进行处理。例如,这样的“其它”事件可以包括“设置打印机速度事件”、“设置待打印的标记的数量事件”、“选择介质事件”、“选择使用的色带事件”、“选择纸张事件”、“使用300dpi打印机事件”、“使用600dpi打印机事件”、“可变数据事件”,等等。
[0400] 这样的事件的数量事实上是不受限制的,并且是由硬件打印机系统的类型、配置和能力来支配的。实质上,通过使用在数据输入流340中所发送的代码,能控制所述打印机的所有方面和功能。这还允许所述打印机确定它是否能够或者被配置为打印由XML数据流描述的标记,并且如果它不能打印的话,则可选地返回出错信息。虽然在对应于基于Oracle的XML数据的代码段6中,仅示出了有限数目的“其它命令”(即,数量=1和打印机名=打印机1,二者均示于第3行),实质上,如上所述,凡是在打印机中可以控制的任何功能或特征都可以在XML输入数据流中加以指定。因此,在实际的XML输入数据和打印机控制代码之间可以存在紧密的连结。
[0401] 还要注意的是,由SAX处理方框320响应于所述命令而产生的这样的“其它”命令和相应的“其它事件”不是Oracle系统的一部分,也不是Oracle系统所专用的,这意味着所述Oracle系统不一定“知道”这些命令做什么或者它们如何被使用。在SAX处理过程中,仅当这样的已下载的命令被匹配,所述命令和后继产生的事件才会有意义。
[0402] 当接收到一个“标记元素的结束”事件()时,所述标记是完整的,并且现在可以被打印。然后,控制转到ZPL格式化引擎处理394,导致所述标记被打印。最好是,ZPL格式化引擎处理394的功能包括位图/条码/RFID呈现。因此,方框394将被称为ZPL格式化引擎。这种组合的功能为文本、条码和标记上的其它字段中的每一个确定位图,通过适当的旋转和放大将各个位图整合为单个标记位图396,并且将已完成的标记位图发送到打印引擎(或打印机驱动器54,见图1),以便在介质上进行物理呈现。如上所述,ZPL格式化引擎处理394可以在多种市售的ZPL打印机、诸如可以从位于伊利诺斯州沃农山的Zebra Technologies公司购买的打印机中找到,其中包括下列型号的打印机:XiIII+、90XiIII+、96XiIII+、110XiIII+、140XiIII+、170XiIII+、220XiIII+,型号Z4M、Z6M、105SL,型号R4M+、R402、R-140打印机/编码器,以及Xi系列的任何型号的条码打印机。
[0403] ZPL格式化引擎处理394实质上确定在待打印的标记中所包含的所有字段,并且确定必须为每一个字段做什么。例如,ZPL格式化引擎处理394可以确定,使用下列参数来打印含有示于代码段6第6行的数据“阿尔伯特爱因斯坦”(图9的306):字号0、按照正常(“N”)方向、高度为58个点和宽度为58个点、开始于字段原点坐标188,169,如代码段5的第7行所示。
[0404] 因此,ZPL格式化引擎处理394检查与相应的XML数据相结合的格式模板所定义的所有字段,并且实质上确定如何在标记上生成表示文本或条码的点(或位)。通过基于线性条码的水平和垂直尺寸以及二维条码的放大的指定用于字段的条码符号学,将适当的位图产生算法应用于字段参数而进行条码字段的格式化和呈现。
[0405] 同样,RFID收发信机61可以通过操作被连接到ZPL格式化引擎处理394,以利于与RFID应答器62进行通信。RFID收发信机61和RFID应答器62可以类似于或相同于前面针对图1、2、6和7的实施例而展示和描述的收发信机和应答器。
[0406] 现在转到代码段7,紧接在下面的题为“代码段7-具有RFID和数据日志命令的ZPL可下载模板”的代码段表示具有添加了某些RFID和数据日志命令的代码段5。所添加的代码将导致从RFID标签读出和写入RFID标签,并且将RFID数据记录到主计算机中。行号不是所述代码的一部分,插入行号仅为了说明的目的。
[0407] 代码段7-具有RFID和数据日志RFID命令的ZPL可下载模板
[0408] ^XA
[0409] ^DFE:SHIPLABL.ZPL^FS
[0410] ^LXE:LOG04128.XML^FS
[0411] ^MCY
[0412] ^LRN^FWN^CFD,24^LH0,0
[0413] ^CI0^PR2^MNY^MTT^MMT^MD0^JJ0,0^PON^PMN
[0414] ^LT0
[0415] ^A0N,58,58^FO188,169^CI0^FN999^FDname^LX^FS
[0416] ^A0N,58,58^FO188,244^CI0^FN998^FDaddress^LX^FS
[0417] ^A0N,58,58^FO188,319^CI0^FN997^FDcity^LX^FS
[0418] ^A0N,58,58^FO657,319^CI0^FN996^FDstate^LX^FS
[0419] ^A0N,58,58^FO188,394^CI0^FN995^FDzip^LX^FS
[0420] ^BY4^FO188,488^BZN,35,N^FN995^FDzip^FS
[0421] ^WT^FN995^FDzip^FS
[0422] ^AON,58,58^FO188,394^CI0^FN994^FDtagid^FS
[0423] ^RI^FN994^FDtagid^LX^FS
[0424] ^PQ1,0,1,Y
[0425] ^XZ
[0426] 在第14行纳入写标签(^WT)命令表明,由字段号995指定的数据、由带有参数995的字段号命令^FN指定的数据将被写入(编码于)RFID标签。在这个实例中,与字段号995关联的XML数据是邮政编码。对第一个标记来说,实际的邮政编码数据“08540”将被编码在RFID标签上。
[0427] 在第16行纳入读唯一标签标识(^RI)命令表明,正如第16行上带有参数“tagid”的^FD所指定的那样,所述标签的标识号码将从所述标签读出并且与名为“tagid”的XML变量相关联。此外,从所述标签读出的数据与字段号994(具有参数994的^FN命令)相关联。由于第15行上的文本字段也具有字段号994,所以从所述RFID标签读出的标签标识将作为文本被打印在所述标记的位置188,394。
[0428] 在第3、8、9、10、11、12和16行纳入一条新的ZPL命令“log inXML”(^LX)表明,某些字段数据应当被保存在数据日志中,用于稍后向主计算机发送。第3行的^LXE:LOG04128.XML命令表明,用于这个标记的日志数据应当被保存在设备E:的被称为“LOG04128.XML”的文件中。在第8、9、10、11、12和16行的^LX命令表明,与那些字段相关联的数据应当被保存在具有先前指定的名字的日志中。例如,当处理第8行上的^LX命令时,与“姓名”字段相关联的数据将被记入日志。对第一个标记来说,待记入日志的实际数据就是“阿尔伯特爱因斯坦”,如代码段6的第6行所示。针对第16行的^LX命令而记入日志的数据就是从所述标签读出的唯一的标签标识。用于本实例的目的,假定对第一个标记来说,从所述标签读出的唯一的标签标识是“1248002001”。
[0429] 为了观察在上面的代码段7的格式模板中指出的数据如何被返送到主计算机,紧接在下面示出了题为“代码段8-上载的XML数据”的代码段8。行号不是所述代码的一部分,插入行号仅为了说明的目的。
[0430] 代码段8-上载的XML数据
[0431]
[0432]
[0433]
[0434]
[0435] Albert Einstein
[0436] 1234 Relative Way[0437] Princeton
[0438] NJ
[0439] 08540
[0440] 1248002001
[0441]
[0442]
[0443] Steven Hawking
[0444] 5678 Black Hole Drive[0445] Los Angeles
[0446] CA
[0447] 90007
[0448] 1248002002
[0449]
[0450]
[0451] Richard Feynman
[0452] 90 Quantum Circle[0453] New York
[0454] NY
[0455] 10044
[0456] 1248002003
[0457]
[0458]
[0459]
[0460] 当所述打印机被请求上载日志数据时,所述打印机将形成一个类似于代码段8所示的XML数据流。所述数据十分相似于被送往打印机以便打印标记的XML数据,但是有一些添加。已经添加了一个“根”元素,使得可以在同一XML数据流中返回来自一个以上的完整打印任务的数据。日志文件的名字在第2行所示的_LOGFILE属性中指定。从RFID标签中读出的数据被包括作为第10、18和26行上的“tagid”变量。当主计算机接收到这个数据时,主计算机将知道具有标识“1248002001”的RFID标签被用来标识被发往“阿尔伯特爱因斯坦”的货物。这个数据可以被存储在主计算机的数据库中,以备日后参考。虽然这个实例用唯一的标签标识符来表示,但是可以以类似方式向主计算机报告被写入RFID标签或从RFID标签读出的任何数据。
[0461] 混合打印机系统不限于使用ZPL用于打印机控制和标记模板语言。只要XML能够与打印机控制语言(PCL,printer control language)区分开,就可以以类似方式使用除了ZPL以外的其它专用的或非专用的打印机控制语言(PCL)。
[0462] 为了说明本发明在其中被建立和被使用的方式,已经说明了根据本发明的XML系统的特定实施例,包括本地XML打印机系统和混合XML打印机系统。应当理解,本发明的其它变动和修改的实施以及它的各个方面对本领域的技术人员来说是显而易见的,并且本发明并不局限于已描述的那些特定的实施例。因此,作者打算用本发明来覆盖处于在这里公开和主张权利的基本的主要原理的精神实质和范围内的任何和所有的修改、变动或等价物。