[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打印机系统。应当理解,本发明的其它变动和修改的实施以及它的各个方面对本领域的技术人员来说是显而易见的,并且本发明并不局限于已描述的那些特定的实施例。因此,作者打算用本发明来覆盖处于在这里公开和主张权利的基本的主要原理的精神实质和范围内的任何和所有的修改、变动或等价物。