可扩展标记语言系统的制作方法

文档序号:6491688阅读:143来源:国知局
专利名称:可扩展标记语言系统的制作方法
技术领域
本发明一般地涉及一种用于打印诸如票据、标签、卡片、条码标记、片页纸、连续和折叠的纸、塑料介质的介质,以及用于编码可以被嵌入到介质之中的射频识别电路(RFID,Radio frequencyIdentification Circuitry)的方法与装置,更具体地说,涉及一种本地打印机,它根据XML数据流来打印诸如打印介质和/或对RFID器件进行编码。
背景技术
用于打印条码和用于向条码打印机发送数据的打印机系统是众所周知的。然而,许多这样的系统使用专用的数据编码方法,并且因此这样的方法不能可互换地用于其它条码打印机。同样,已知的数据编码方法典型地导致基本数据不可被人读懂。虽然这对计算机系统没有妨碍,但是对于企图检查、排错或理解出现在基本的条码元素名中的某些数据的人来说,它可能是令人烦恼的。
条码标记广泛地用于商务的许多方面。特别是,发货人用特殊的条码标记来标识从一个目的地发往另一个目的地的包裹或商品。反过来说,也可以用条码标记来识别所收到的商品,并将其送入收货人的库存系统之中。通常,商品的收货人可以指定由发货人敷贴的条码的形式和内容。这被称为“顺从性标记”。当然,商品不需要利用条码标记的好处而被发货。例如,库存管理系统广泛地使用条码标记来跟踪和监测在一个机构或介于不同机构之间的各种货物。
顺从性标记典型地被具有相当大的市场实力或购买力的买家所使用。由于它们的经济实力,它们能够指定由它们的供应商或零售商敷贴到向他们提供的产品上的条码标记的形式和内容。虽然这对供应商来说可能是令人烦恼的,但是如果供应商希望跟这位买家做生意,卖方就必须顺从买方对条码标记的要求。例如,大型零售商,诸如沃尔玛公司,不仅有能力和购买力去要求供应商满足他们对顺从性标记的需求,而且还可以处罚那些不顺从标记要求的供应商。
还有,这样的条码标记需求可以随着要求顺从性的实体的兴之所致而改变。因此,供应商必须实现新的标记需求并且测试已修改的条码,以保证它能满足所有的规格。这是相当低效和费时的。它还容易出错,这将变成罚款。
存在提供一种用于定义条码标记信息的开放标准的需求,上述条码标记信息是自行验证的,并且为了实现在条码标签的形式或内容上的改变,并不需要作出重大的软件编程修改。还存在一种使用向条码打印机提供读取数据的人可读懂的数据的格式的需求。此外,存在一种使用可以向一个设备提供诸如RFID数据的其它数据以便实现将RFID数据编码到嵌入的RFID电路或其它自动标识设备中的格式的需求。


在所附的权利要求书中,专门地陈述了被认为是新颖的本发明的特征。通过参照以下的说明并结合附图,将有助于更好地理解本发明以及它的进一步的目的和优点。
图1是根据本发明的XML系统的一个特定的实施例的高级硬件方框图;图2是XML系统的特定实施例的高级软件方框图;
图3是XML系统的特定实施例的组合的高级软件方框图和数据流程图;图4是位图/条码和/或射频识别(RFID)呈现(rendering)引擎的特定实施例的高级软件方框图;图5是根据图1-4的XML系统而产生的条码标签的特定表示;以及图6是被配置成条码和/或RFID呈现服务器的XML系统的一个替代实施例的特定实例。
具体实施例方式
在这份书面的说明书中,转折连词的使用试图包括连词。不打算使用定冠词或不定冠词来表示基数。特别是,参照于“某一”对象或事物或“一个”对象或“一件”事物也被用来描述多个这样的对象或事物。
现在参照图1,图中一般地表示XML系统10的高级硬件方框图的一个特定的实施例。XML系统10包括计算机或处理系统12,其中又包括各种硬件组件,诸如业界所熟知的RAM 14、ROM 16、硬盘存储器18、高速缓冲存储器20、数据库存储器22等(也被称为“存储器子系统”26)。计算机系统12可以包括任何适合的处理装置28,诸如业界所熟知的计算机、微处理器、精简指令集计算机(RISC,reducedinstruction set computer)处理器、复杂指令集计算机(CISC,complexinstruction set computer)处理器、大型计算机、工作站、单片计算机、分布式处理器、服务器、控制器、微控制器、分立逻辑计算机等。例如,处理装置28可以是英特尔公司的奔腾(注册商标)微处理器、x86兼容的微处理器或者等效的器件。
存储器子系统26可以包括任何适合的存储部件,诸如RAM、电可编程只读存储器(EPROM,electrically programmable read onlymemory)、快闪存储器、动态存储器、静态存储器、先进先出(FIFO,first-in first out)存储器、后进先出(LIFO,last-in first-out)存储器、环形存储器、半导体存储器、磁泡存储器、缓冲存储器、磁盘存储器、光学存储器、高速缓冲存储器,等等。可以使用任何适合的存储器形式,无论是在磁性介质上的固定存储,在半导体器件中的存储,或者是可以通过通信链路进行访问的远程存储。
用户接口30可以被连接到计算机系统12,并且可以包括各种输入设备36,诸如用户可选择的开关和/或键盘。用户接口还可以包括适当的输出设备40,诸如业界所熟知的液晶显示器、阴极射线管(CRT)显示器、各种发光二极管(LED)指示器和/或语音输出设备。
为了在计算机系统12和外部资源之间进行通信,可以通过操作将通信接口42连接到计算机系统。通信接口42可以是,例如,局域网,诸如以太网、内联网或者其它适当的网络43。通信接口42还可以被连接到公共电话交换网(PSTN,public switched telephonenetwork)46或者老式电话系统(POTS,plain old telephone system),上述两种电话网都有助于经由因特网44进行通信。还可以使用专用的和远程的网络。如业界所熟知那样,可以使用任何适当的市售的通信设备或网络。
计算机系统12还可以被连接到打印机系统50。打印机系统可以包括介质/纸控制系统52、打印机驱动器54和打印头机构56。可以使用能打印条码标签的任何适合的打印机,包括各种点阵、喷墨、激光和/或热式打印机。当然,点阵打印机通常属于低质量,并且要求密切监视标签输出。最好是,打印机系统50是热转移打印机。这样的适合的打印机例如可以从位于伊利诺斯州沃农山的Zebra技术公司购买,并且包括型号为Xi的系列条码打印机(XiIII+,90XiIII,96XiIII,140XiIII,170XiIII,220XiIII等),2800系列条码打印机,型号为Z4M、Z6M、105SL的条码打印机,以及其它。可以使用任何适合的条码标记打印机。
可替代地,打印机系统50可以包括一种用于管理射频标识(RFID)介质的编程的“非打印”机构,RFID介质也可以接收在其表面上的打印标记或其它打印的标记。术语“打印机系统”指包括也具备RFID能力的系统,虽然“RFID”可以不是该术语的一部分。此外,虽然这里使用术语“条码标记”,但是这个术语不限于纸质标记,并且可以包括,例如,票据、标签、卡片、片页纸、连续的和折叠的纸、塑料介质、嵌入RFID电路的介质,以及其它自动标识设备。本发明适用于任何类型的介质。
典型地,这样的打印机可以包括各种马达、标记切割器、色带处理器、传感器等(未示出)。此外,这样的打印机可以包括业界所熟知的各种控制输入或传感器,诸如介质传感器、打印头温度传感器、打印头开启传感器、色带传感器等(未示出)。打印机系统50可以包括除了驻留在计算机系统12内的处理器28以外的一个或多个附加的处理器60。可替代地,计算机系统12内的处理器28,如果具备足够强大的功能,就可以控制和管理打印机系统50的各项功能而不需要单独的处理装置。因此,可以由物理上与打印机系统分开的计算机或处理器来控制打印机系统50的所有功能。
打印机系统的处理器60通过操作还可以被连接到RFID收发信机61。RFID收发信机61可以通过操作连接到处理器60,或者可以通过操作连接到计算机系统12的处理器28,如图1中的虚线所示。RFID收发信机61驻留在何处,或者它被连接到哪一个处理部件,对本发明的范围来说都是不重要的。
RFID收发信机61被配置成与RFID应答器62进行通信,并且对所述RFID应答器进行编程。RFID应答器62可以属于“有芯片”或“无芯片”类型,并且在“智能标记”中经常使用的这种RFID应答器的一种普通的形式包括天线和RFID集成电路(未示出)。这种RFID应答器62包括直流供电的有源应答器和无电池的无源应答器二者,并且具备多种形状因子。在这里,术语“条码打印机”或“条码系统”可以与术语“条码/RFID系统”、“XML系统”等互换使用,并且即使术语“RFID”不一定是标识文本的一部分,但是这样一个系统包括将RFID数据编码到RFID应答器中的能力。系统12必须具备将RFID数据编码到RFID应答器中的能力。
在2001年10月25日提交的题为“Method And Apparatus ForAssociating On Demand Certain Selected Media And Value-AddingElements”的申请第10/001,364号中,可以找到关于RFID应答器的更详细的描述,上述专利申请由本申请的受让人所拥有,目前待审。申请第10/001,364号在此以全文形式通过参考而并入。
最好是,计算机系统12和打印机系统50被放置在一个共同的机壳内,但是不一定需要以这种方式来构成。例如,计算机系统12可以被装入一个与打印机系统50分离并且远离的机壳内。
现在参照图1-3,图2表示高级软件方框图的的一个特定的实施例,同时图3表示一个组合的高级软件方框图和数据流程图的特定的实施例。下面所描述的软件可以由图1的计算机系统12的处理器28来执行。再有,处理器28可以执行计算机系统12和打印机系统50二者共同的功能。可以有一个或多个处理器,它们可以协同工作或者单独工作。由计算机系统(或在计算机系统中)还是由打印机系统(或在打印机系统中)来执行处理或处理功能,对本发明的范围来说是不重要的。
示于图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的功能和基本结构。
要注意的是,打印机驱动器54是上述部件的一个实例,其功能可以由计算机系统12中的处理装置执行,或者由打印机系统50中的处理装置60(图1)执行,这取决于相关的处理装置的物理位置。再有,单个处理装置如果功能足够强大,也可以管理XML系统10的所有功能。
XML模式库82(模式库)可以向XML处理器70提供输入,同时XSLT样式表库84(样式表库)可以向XSLT处理器74提供输入。图中还示出了一个企业资源计划(ERP,enterprise resource planning)系统88,它可以是,例如,向XML处理器70发送XML输入数据流90的仓库管理系统。ERP系统88实质上发出打印条码标记或者将RFID数据编码到RFID应答器62中的请求,并且提供形成所述条码的XML数据、RFID编码数据和待打印或编码的其它可变的标记或元素字段。这样的可变标记字段可以包括,例如,被打印在标记上的任何或所有人可读的文本和/或字符。当然,可以使用任何企业计算机系统,并且本发明不局限于使用任何特定类型的企业计算机系统。
当提到XML数据时,这里将涉及两种基本类型,即,XML值数据和XML元素名。XML值数据是可改变的数据,或者希望打印在条码标记上或者编码到RFID应答器中的数据,诸如数据“绿街1122号”,它可能是对应于,例如,一个发货地址的XML值数据的一部分。XML元素名是XML语言语义的一部分,在这里,任意的标记或元素名可以被选择用来表示XML值数据,其用法由XML语言规定。典型地,元素名出现在尖括号之间(“<元素名>”)。
如上所述,已知的条码标记和其它自动标识系统经常使用专有的软件编码方案。此外,这样的编码方案经常容易出错,并且其基础值数据通常是非技术人员无法读取的。在已知的系统中,如果从企业系统发出的基础值数据存在差错,或者如果数据丢失或者不正确,则条码系统将按照指示进行打印或编码,当然,这将在条码标记或RFID应答器中产生差错,使之不精确或者无用。
此外,当处理顺从性标记时,已知的系统要求当标记的形式或内容随着顺从性标记需求而改变时,数据编码也发生非轻微的改变。再次,条码或者RFID应答器中的这些形式或内容的改变是容易出错的,这反过来又可能导致由要求顺从性的实体处以罚款。由于在条码标记系统中连续出现问题还可能损害商务关系,特别是在如果这样的差错搞乱了顺从性要求者的业务的情况下。
本XML系统10使用一种开放的格式。特别是,格式化要求以及条码标记或RFID收发信机的形式全都以XML语言定义。而且,不仅以XML作出了明确的定义并且适用于所有的情形,而且非编程人员经过最少训练也能理解XML数据流或文件(或硬拷贝)中的数据和命令。
示于图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处理器。
类似地,可以互换地或稍加修改地使用几种不同的市售XSLT处理器74。例如,可以使用下列XSLT处理器74可从Infoteria公司购买的“iXSLT”、可从微软公司购买的“MSXML3”、可从Gnome购买的“Libxslt”。然而,可以使用任何适合的XSLT处理器。
再有,可以互换地或稍加修改地使用几种不同的市售的XSLFO处理器78。例如,可以使用下列XSLFO处理器78可从RenderX公司购买的“XEP”、可从Antenna House公司购买的“XSLFormatter”、可从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中。
下面是各种软件组件的操作的简要纵览。首先,要注意的是,XML输入数据流90包括标识其它所需的XML文档或文件的名字和位置的文本。一种这样的文档被称为“XML模式”或“模式”。所述模式被用来验证所述XML输入数据流90,包括基础值数据。如果验证成功,则应用一种样式表,这将在下面加以说明。在XML输入数据流90中也指定了样式表的名字和位置。由XSLT处理器74来管理样式页的应用,XSLT处理器74在样式表的引导下,可以转换基础XML元素名和/或基础值数据。其次,由管理基础值数据的格式化和“布局”的XSLFO处理器78对所述数据进行处理,其中包括,例如,按照,例如,字型、字号、颜色等来格式化所述基础值数据。其次,由位图/条码/RFID呈现引擎80来处理所述基础值数据,以便对应于已转换的和已格式化的数据,为RFID应答器生成条码标记或者编程代码序列的位图92。呈现引擎80可以利用驻留在样式页中的“流内外来对象(IFO,instream foreign object)”来引导位图的生成。然后,位图92被送往打印机驱动器54(图1),以便由条码打印机进行后继的条码标记打印,或者被送往RFID收发信机61,以便编码到RFID应答器62(图1)中。
如上所述,所述模式起到验证整个输入数据流90(特别是,典型地可以发现一些差错的基础值数据)的作用。在实践中,当对条码标记的形式或内容作出改变时,经常无意中引入差错。
模式文档的名字和位置被包含在XML输入数据流90中,所述XML输入数据流对应于所述打印和/或编码条码标记的请求。XML处理器70与模式验证模块110相结合,对基础值数据进行验证。由于所述模式能避免就最后输出(即,条码标记,或“发货标记”,或RFID标签或应答器)而言的各种差错和遗漏,所以模式的使用能降低成本。
如果由于存在差错而使XML输入数据流90被拒绝或者被加上标志,则可以向源88发回一个出错消息。这可能提示或触发人为干预以纠正差错。例如,在这个特定的实例中,所述源是ERP系统88。这样一来,在处理之前对所述数据进行初始校验,以保证它遵从所有所需的标记和条码规则。
当处理顺从性标记时,这可能是特别有利的。在已知的系统中,顺从性的要求者仅需把顺从性标记需求的改变通知供应商。如果供应商在解释或实施这些改变或指令过程中发生差错,则敷贴到被发往顺从性要求者的产品上的生产的标记或编码的RFID应答器可能存在差错,这可能危及未来的商务或者被货以罚款。
在本发明中,顺从性的要求者最好是直接地对所述模式和/或XSLT样式表作出改变。例如,如果标记的物理布局已经发生改变,或者如果元素名已经发生改变,则顺从性的要求者将修改XSLT样式表。类似地,如果基础值数据已经被添加或删除或者已被限制(即,新的可接受的邮政编码的数字范围),则顺从性的要求者可以修改所述模式。这样一来,供应商仅需修改其ERP系统88的输出,以保证它匹配于已修改的XML输入数据流90。如果只有标记的物理布局发生改变,则供应商完全不需要作出任何修改。
例如,顺从性的要求者现在可以要求使用9位的邮政编码,而不是原来的5位邮政编码。因此,顺从性的要求者可以修改所述模式以要求第一和第二邮政编码字段二者,并且第二字段也将被限定为处于一定范围内的数字位,或许是0000-9999。顺从性的要求者还可以修改样式表以适应这种改变。作为对此的响应,供应商必须在它的ERP系统中插入添加的邮政编码字段,使之出现在被送往XML系统10的XML输入数据流90中。如果对XML输入数据流90的这种修改没有被正确地执行,则所述模式将引起向ERP系统88回报出错,并且将不打印标记或者不对RFID应答器进行编码。
因此,供应商仅需从库82、84访问已修改的模式和/或样式表,当被接收时,它们将自动地被应用于基础值数据。基本上,对条码标记或RFID应答器的形式和内容的小的改变和显著地大的改变对供应商来说是透明的,并且按照模式对条码标记或RFID应答器的内容的这些改变进行验证。因此,供应商不需要付出代价去改变由顺从性的要求者所指定的条码标记或RFID应答器的形式和内容,并且在实施这些改变的过程中不能产生任何差错。如果存在任何差错,则这些差错都是由顺从性的要求者无意中产生的,他(她)不应当责怪供应商。
最好是从XML模式库82获得模式文档。在一个特定的实施例中,模式库82可以处于XML系统10和计算机系统12之外,并且可以经由网络,即因特网,或者经由计算机系统与之连接的任何适当的网络43、44来进行访问。模式库82可以含有多种模式文档。因此,表示生成条码标记或RFID应答器的各项请求的XML输入数据流90可以分别指定库82中相应的模式的名字和位置。当XML处理器70接收到所述请求时,就能从模式库82检索相应的模式。
在另一个实施例中,可以在本地保存经由网络43、44从模式库82获得的模式,并且因此暂时地驻留在存储器子系统26(图1)、诸如硬盘18或数据库22中。这样一来,如果同一模式被用于多个XML输入数据流90,或者用于后继的条码标记请求,则XML处理器70不需要经由网络43、44从外部来检索同一模式,而是可以从存储器子系统26来检索所述模式,这可能是更加有效的。根据这个实施例,顺从性的要求者仅可以在一定时间改变或修改外部库82中的模式。例如,所述顺从性的要求者仅在每天的上午1时可以改变样式表。因此,例如,在顺从性的要求者已经进行模式更新之后,供应商仅需每天一次把来自库82的模式更新到存储器子系统26中。然后,供应商将知道被暂时地保存在存储器子系统26中的模式就是至少到被安排进行更新的时间为止的最新的模式文档。
不管模式是在什么位置获得的,模式验证模块110都对基础数据进行校验和验证。虽然所述模式验证模块110在图2中被表示为一个独立于XML处理器70的方框,但是它被表示在这个位置上仅仅是为了图解的目的,使得它在图中可以被表示为靠近标记值节点树100,这就是它作用于其上的数据。然而,模式验证模块110可以被集成到XML处理器70中,并且成为它的一部分,或者它可以是一个单独的和与之分离的部分。
当然,所述模式也是一种XML文档,并且因此它也由XML处理器70进行处理。因此,所述模式的处理结果就是图3所示的XML模式节点树114,它是被处理的模式的“存储器表示”或工作模型。XML模式节点树114可以采取如业界所熟知的“文档对象模型”(DOM,document object model)的形式。还有,为了提高效率起见,XML模式节点树114可以驻留在高速缓冲存储器中,如同在一个XML模式高速缓冲存储器116中所示。模式验证模块110和/或XML处理器70对XML模式节点树114中的数据进行操作,以便执行按照模式文档对基础值数据进行验证的功能。
如上所述,如果模式的应用确定在XML输入数据流90中存在差错,则将产生出错消息。如果XML输入数据流90被验证,则所述数据实质上保持“未改变”。然后由XSLT处理器74使用XSLT样式表对标记值节点树100中的数据进行处理。
可替代地,可以根据文档类型定义(DTD,Document TypeDefinition)格式,而不使用模式,来进行基础值数据的验证。DTD的使用在各种XML规范中均有详细说明,并且为业界所熟知。
最好是从XSLT样式表库84中获得各种样式表文档。在一个特定的实施例中,样式表库84可以处于XML系统10和计算机系统12之外,并且可以经由网络,即因特网,或者经由计算机系统与之连接的任何适当的网络43、44来访问。样式表库84可以含有多个样式表。因此,表示生成条码标记或者对RFID应答器进行编码的各项请求的XML输入数据流90可以分别指定样式表库84中相应的样式表的名字和位置。当XML处理器70接收到所述请求时,就能从样式表库84中检索相应的样式表。
在另一个实施例中,可以在本地保存经由网络43、44从样式表库84中获得的样式表,并且因此可以暂时地驻留在存储器子系统26(图1)、诸如硬盘18或数据库22中。这样一来,如果相同的样式表被用于多个XML输入数据流90,或者被用于后继的条码标记或RFID应答器请求,则XML处理器70不需要经由网络43、44从外部检索该相同的样式表,而是可以从存储器子系统26检索所述样式表,这可能是更加有效的。
根据这个实施例,顺从性的要求者可以仅在一定时间改变或修改外部样式表库84中的样式表。例如,所述顺从性的要求者仅在每天的上午1时改变样式表。因此,例如,在顺从性的要求者已经进行样式表更新之后,供应商仅需每天一次把来自样式表库84的样式表更新到存储器子系统26中。然后,供应商将知道被暂时地保储在存储器子系统26中的样式表就是至少到被安排进行更新的时间为止的最新样式表。
当然,所述样式表也是一个XML文档,并且因此它也由XML处理器70进行处理。因此,所述样式表的处理结果就是图3所示的XSLT样式表节点树120,它是被处理的样式表的“存储器表示”或工作模型。XSLT样式表节点树120可以采取如业界所熟知的“文档对象模型”(DOM,document object model)的形式。还有,为了提高效率起见,XSLT样式表节点树120可以驻留在高速缓冲存储器中,如同在XSLT样式表高速缓冲存储器126中所示。XSLT处理器74对XSLT样式表节点树120中的数据进行操作,以便执行按照样式表对基础值数据或基础元素名进行转换的功能。
要注意的是,虽然XSLT样式表在图3中被表示为送往XML处理器70的输入,但是XSLT处理器74对样式表进行处理。由于所有的XML文档都被首先进行处理并且被置入适当的数据结构中以便进行后继的处理,所以它初始地被提供给XML处理器70。
XSLT处理器74可以修改、重置和重新安排基础值数据,或者可以添加到基础值数据或者删除某些基础值数据。例如,在样式表的引导下,基础值数据可以被重新安排为表格式或者列格式。特别是,样式表可以添加XSLFO格式化元素和属性。
在已经按照相应的样式表对标记值节点树100中的基础值数据进行处理之后,产生一个XSLFO实例节点树130。再次,该XSLFO实例节点树130可以采取如业界所熟知的文档对象模块的形式。XSLFO实例节点树130含有在格式化和布局方面引导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-stylesheet type="text/xsl"href="D:\Projects\XML\Native\Docs\ShipLabels.xsl" >
<labels5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="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”的目录中找到所述样式表文档。当然,模式文档和样式表文档可以被定位于任何位置,例如,用因特网地址来加以标识。
这个特定的实例表示用于3份待打印的发货标记的基础值数据和元素名。每一份发货标记都含有如下的被定义在尖括号之间的XML元素名<姓名>、<地址>、<城市>、<州>和<邮政编码>。第一元素名<姓名>的值为“阿尔伯特爱因斯坦”,第二元素名<地址>的值为“相对路1234号”,第三元素名<城市>的值为“普林斯顿”,第四元素名<州>的值为“新泽西州”,并且第五元素名<邮政编码>的值为“08540”。这就是基础值数据。
现在转到图3,代码段1,以及紧接在下面的题为“用于XML模式的代码段2”的代码段,所述代码段2表示采取在代码段1的XML输入数据流中所指定的XML模式文档形式的XML文档的一个特定实例。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
用于XML模式的代码段21 < xml version="1.0"encoding="UTF-8" >
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified">
5 <xs:element name="address"type="xs:string"/>
<xs:element name="city"type="xs:string"/>
<xs:element name="label">
<xs:complexType>
<xs:sequence>
10 <xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="state"/>
<xs:element ref="zip"/>
15</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element nama="labels">
<xs:complexType>
20<xs:sequence>
<xs:element ref="label"maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
25<xs:element name="name"type="xs:string"/>
<xs:element name="state">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="CA"/>
30 <xs:enumeration value="NJ"/>
<xs:enumeration value="NY"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
35<xs:element name="zip">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="00000"/>
<xs:maxInclusive value="99999"/>
40</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
如上所述,所述模式被用来验证基础值数据。这就需要进行校验,以确定所有所需的数据都已存在,不存在无关的数据,存在的数据都处于指定的范围内,等等。可以根据应用在所述模式中指定适当的验证方案。XML语言是牢靠的,并且可以写入代码,以便处理多种多样的要求。
例如,在上面的代码段2中所示的模式文档指定对应于元素名<地址>的基础值数据必须是如同在XML模式说明中所定义的字符串,如代码段2中的第5行所示。模式文档还指定对应于元素名<姓名>、<地址>、<城市>、<州>和<邮政编码>的基础值数据也必须以代码段2的第9-15行所示的序列存在。还有,在代码段2中所示的特定模式文档指定对应于元素名<州>的基础值数据必须是3个州,即“加利福尼亚州”、“新泽西州”或“纽约州”其中之一。当然,这只是一个简略的实例,并且仅为了说明的目的而没有包括所有的州。在代码段2中所示的模式文档还指定对应于元素名<邮政编码>的基础值数据必须处于从00000到99999的范围内。如果XML输入数据流中的数据不满足上述模式规范中的任何一项,则模式验证模块110将拒绝它,并且最好是向源88返送一条出错消息。
现在转到图3,代码段1-2,以及紧接在下面的题为“用于XSLT样式表的代码段3”的代码段,所述代码段3表示采取在代码段1的XML输入数据流中所指定的XSLT样式表文档形式的XML文档的一个特定实例。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
用于XSLT样式表的代码段31 < xml version="1.0"encoding="UTF-8" >
<xsl:transform version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:fo="http://www.w3.org/1999/XSL/Format"5 xmlns:bo="http://www.zebra.com/2002/XSL/Barcode">
<xsl:output method="xml"version="1.0"indent="yes"/>
<xsl:template match="labels">
<fo:root>
<fo:layout-master-set>
10<fo:simple-page-master master-name="all-labels">
<fo:region-body margin="lin"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-seguence master-name="all-labels">
15<fo:flow flow-name="xsl-region-body"font="12pt Times">
<xsl:apply-templates/>
</fo:flow>
</fo:page-seguence>
</fo:root>
20 </xsl:template>
<xsl:template match="label">
<fo:block break-after="page">
<xsl:apply-templates selact="name"/>
<xsl:apply-templates select="address"/>
25 <fo:block font="bold 14pt Times"text-align="left">
<xsl:apply-templates select="city"/>
<xsl:apply-templates select="state"/>
</fo:block>
<xsl:apply-templates select="zip"/>
30 <fo:block>
<fo:instream-foreign-object>
<bo:barcode>
<bo:postnet interpretation-line="none">
<xsl:value-of select="zip"/>
35 </bo:postnet>
</bo:barcode>
</fo:instream-foreign-object>
</fo:block>
</fo:block>
40 </xsl:template>
<xsl:template match="name">
<fo:block font="bold 14pt Times"text-align="left">
<xsl:value-of select="."/>
</fo:block>
45 </xsl:template>
<xsl:template match="address">
<fo:block font="bold 14pt Times"text-align="left">
<xsl:value-of select="."/>
</fo:block>
50 </xsl:template>
<xsl:template match="city">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="state">
55 <xsl:text>,</xsl:text>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="zip">
<fo:block font="bold 14pt Times"text-align="left">
60 <xsl:value-of select="."/>
</fo:block>
</xsl:template>
</xsl:transform>
如上所述,样式表被用来转换数据。在这个特定的实例中,代码段3的样式表定义了两种类型的名字空间,即,一个“bo”类型对象,它被选择为“条码类型对象”,以及一个“fo”类型对象,它被选择为“格式化对象”,在前面提到XSLFO处理器78时对它已经作了描述。如业界所熟知那样,这允许在不同对象之间加以区分。样式表可以使某些数据被转换或者甚至被添加。例如,如第40-62行所示,来自代码段1的XML输入数据流的基础值数据,即“爱因斯坦”、“相对路1234号”等等,被插入。
样式表还使得产生多个“fo ”类型元素,它们被指定为格式化元素或XSLFO对象。XSLFO对象含有XSLFO处理器78“理解”和处理的布局类型命令。要注意的是,具有前缀“fo”的所有代码行都不由XSLT处理器74进行解释,而是被送往XSLFO处理器78。
例如,代码段3的第21行示出<xsltemplate match=″label″>,其后跟随第22行的<foblock break-after=″page″>。这被XSLFO处理器78解释为将一个“分页符”放置在代码段1中指定的3个发货标记之间。实质上,由于分页符生成了一个新的发货标记,每一个新的发货标记都含有在代码段1中指定的基础值数据。
还有,特定的样式表指定插入一个“流内外来对象”,如第31行所示。第31行被表示出为与定义流内外来对象的第31-37行相结合的<foinstream-foreign-object>。要注意的是,流内外来对象不由XSLT处理器74进行处理,也不由XSLFO处理器78进行处理。而是流内外来对象被送往位图/条码/RFID呈现引擎80并由后者进行处理。例如,代码段3的第32-36行使得插入一个<bobarcode>元素,后者含有一个“postnet”条码元素的定义,稍后,所述元素将由位图/条码/RFID呈现引擎80进行处理。在第34行,XSLT处理器74使来自XML输入数据流的邮政编码作为<bopostnet>元素的文本而被插入。可替代地,虽然在代码中没有示出,但是一个RFID类型的流内外来对象可以定义用于对RFID应答器进行编程的编码。
现在转到图3,代码段1-3,以及紧接在下面的题为“用于XSLT实例节点树表示的代码段4”的代码段,所述代码段4表示由XSLT处理器74结合代码段3的样式表所产生的XSLT实例节点树130输出的一个特定的实例,所述输出是向XSLFO处理器78提供的XSLFO实例节点树的表示。行号不是代码的一部分,插入行号仅仅是为了说明的目的。
用于XSLFO实例节点树表示的代码段41 < xml version="1.0"encoding="UTF-16" >
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"xmlns:bo="http://www.zebra.com/2002/XSL/Barcode">
<fo:layout-master-set>
5 <fo:simple-page-master master-name="all-labels">
<fo:region-body margin="lin"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-name="all-labels">
10<fo:flow flow-name="xsl-region-body"font="12pt Times">
<fo:block break-after="page">
<fo:block font="bold 14pt Times"text-align="left">Albert Einstein</fo:block>
<fo:block font="bold 14pt Times"text-align="left">123415Relative Way</fo:block>
<fo:block font="bold 14pt Times"text-align="left">Princeton,NJ</fo:block>
<fo:block font="bold 14pt Times"text-align="left">08540</fo:block>
20<fo:block>
<fo:instream-foreign-object>
<bo:barcode>
<bo:postnet interpretation-line="none">08540</bo:postnet>
25</bo:barcode>
</fo:instream-foreign-object>
</fo:block>
</fo:block>
<fo:block break-after="page">
30<fo:block font="bold 14pt Times"text-align="left">StevenHawking</fo:block>
<fo:block font="bold 14pt Times"text-align="left">5678Black Hole Drive</fo:block>
<fo:block font="bold 14pt Times"text-align="left">Los35Angeles,CA</fo:block>
<fo:block font="bold 14pt Times"text-align="left">90007</fo:block>
fo:block>
<fo:instream-foreign-object>
40<bo:barcode>
<bo:postnet interpretation-line="none">90007</bo:postnet>
</bo:barcode>
</fo:instream-foreign-object>
45</fo:block>
</fo:block>
<fo:block break-after="page">
<fo:block font="bold 14pt Times"text-align="left">Richard Feynman</fo:block>
50<fo:block font="bold 14pt Times"text-align="left">90Quantum Circle</fo:block>
<fo:block font="bold 14pt Times"text-align="left">NewYork,NY</fo:block>
<fo:block font="bold 14pt Times"text-55 align="left">10044</fo:block>
<fo:block>
<fo:instream-foreign-object>
<bo:barcode>
<bo:postnet interpretation-60line="none">10044</bo:postnet>
</bo:barcode>
</fo:instream-foreign-object>
</fo:block>
</fo:block>
65 </fo:flow>
</fo:page-sequence>
</fo:root>
上面简要地描述了代码段4的两个主要部分,即,开始于第4行的具有代码<folayout-master-set>的第一部分,以及开始于第9行的具有代码<fopage-sequence master-name=″all-labels″>的第二部分。这个代码部分实质上定义了一个条码标记“看上去像”什么,或者它将如何被“布局”,以及所述基础值数据将如何出现在所述的布局中。
就对代码段1中所述的基础值数据的格式化而言,例如,第12-13行中所示的字型属性“bold 14pt Times”和text-align=″left″将被施加到基础值数据“阿尔伯特爱因斯坦”,使得当打印条码标记时,姓名“阿尔伯特爱因斯坦”将按照14点Times字型来打印,并且它将被对准于条码标记的左边沿。如业界所熟知的那样,可以指定许多不同种类的格式化指令,后者将由XSLFO处理器78加以解释。
再有,XSLFO实例节点树130的表示的这个特定实例含有一个流内外来对象,如代码段4的第21-26行所示,所述流内外来对象可以不由XSLFO处理器78进行处理。而是,所述流内外来对象可以被送往位图/条码/RFID呈现引擎80进行处理。要注意的是,在处理过程的这一点上,由于条码元素类型和RFID应答器元素类型都没有被包括在XSLFO说明中,所以XSLFO处理器78不“知道”如何打印条码标记或者对RFID应答器进行编码。而是,只有文本信息,诸如基础值数据,即,代码段1-2中所示的“爱因斯坦”、“相对路1234号”等,可以作为文本被打印在条码标记上。就标记而言,由于XSLFO处理器78不“知道”如何产生条码符号,所以不会出现实际的条码符号。由于XSLFO处理器78不“知道”如何对应答器进行编码,所以RFID应答器不会被编码。
XSLFO处理器78的处理结果是XSLFO区域节点树140。要注意的是,代码段4中所示的流内外来对象不由XSLFO处理器78进行处理,而是被送往XSLFO区域节点树140的一个或多个节点中的位图/条码/RFID呈现引擎80。流内外来对象元素被称为<bobarcode>并且示于代码段4的第21-26行。所述位图/条码/RFID呈现引擎80接收<bobarcode>元素,并且处理该块中所包含的代码。例如,呈现引擎80解释第23-24行,即,<bopostnet interpretation-line=″none″>08540<bopostnet>,把这个特定的节点定义为一个“postnet”条码类型的元素。可以定义许多不同“类型”的条码符号,正如将在下面所讨论的由相应的行业标准所定义的那样。
可替代地,如果流内外来对象涉及RFID编码,则呈现引擎80将根据RFID收发信机61(图1)管理RFID应答器62(图2)的编程和编码的特定标准对流内外来对象进行解释。如同指定如何打印条码的XML数据的元素和属性那样,这样的元素和属性也可以指定待编程到RFID标签(诸如RFID应答器62)中的文本和特性。实质上,根据RFID类型流内外来对象的呈现管理RFID收发信机61(图1)的运行。如此,射频信号在RFID收发信机和RFID应答器之间被发送,以实现RFID应答器的编程。
RFID收发信机的运行可以按照诸如ISO/IEC的国际标准,或者根据诸如Texas Instruments(Tag-it)或者Phillips(I·代码)的来自销售商的专用规范。例如,可以由国际标准化组织(ISO,InternationalOrganization for Standardization)用于邻近卡的规范15693、或者由用于接近卡的ISO规范14443来进行管理。ISO规范15693描述了物理特性、射频功率和信号接口,以及防冲突和传输协议。传输协议规范包括对读取、写入和锁定应答器的请求和响应。要注意的是,ISO规范15693是在涉及RFID标记标签时的优选应用标准。
有待于被打印为条码符号的基础值数据是数字数据“08540”,如代码段4的第24行所示,所述基础值数据是与在代码段1中所示的阿尔伯特爱因斯坦的地址有关的邮政编码。在这个特定的实例中,只有邮政编码才被转换为条码符号。当然,根据应用,任何和所有的信息都可以被转换为条码符号。同样,在这个特定的实例中,示于代码段4中的流内外来对象仅涉及示于代码段1中的3个邮政编码。在这个实例中,没有其它的基础值数据被转换为条码符号。
还要注意的是,XML系统10不一定包含XSLT处理器74。在一个替代的实施例中,XSLT处理器74或者其等价物可以被定位于远离XML系统10,并且可以被配置为转换XML输入流中的XML数据,并且向所述XML系统提供已转换的数据。因此,XML系统10可以接收已转换的XML数据,并且把它们处理为格式化的XML数据。等效于典型地由XSLT处理器处理的远程或者“单独”的处理可以根据在样式表中所包含的XSLFO指令,所述样式表也不需要驻留在XML系统10内,也不需要可以被XML系统10直接地访问。
现在转到与代码段4相结合的图2-4,现在将陈述涉及位图/条码/RFID呈现引擎80和流内外来对象的处理的附加细节。如上所述,呈现引擎80处理由XSLFO处理器78产生的XSLFO区域节点树140的每一个节点。如业界所熟知那样,XSLFO区域节点树140在存储器中被表示为文档对象模型。因此,可以存在多个节点。例如,一个节点可以包含流内外来对象,另一个节点可以包含相关的元素名,另一个节点可以包含相关的文本数据,另一个节点可以包含相关的属性,等等。
如图4的方框150所示,对XSLFO区域节点树140的各个节点进行处理。特别是,呈现引擎80“知道”如何呈现或产生由相应的流内外来对象定义的实际条码符号或者RFID应答器编码。市售的XSLFO处理器不“知道”如何处理代表条码符号和RFID应答器的这种流内外来对象,并且因此不能产生或呈现条码符号或者对RFID应答器进行编码。然而,市售的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”格式,并且,如上所述,可以从ApacheSoftware Foundation购买的被称为“FOP”的XSLFO处理器可以把一个节点呈现为“PDF”格式。
最好是,XML系统10利用可以从Apache Software Foundation购买的被称为“FOP”的XSLFO处理器78,因为这种处理器可以被这样配置,当它遇到无法处理的流内外来对象时,可以“调用”一个子程序或其它处理功能。特别是,这个XSLFO处理器78可以被设置去调用这里所描述的呈现引擎软件块80,来处理它无法处理的流内外来对象。
其次,如方框160所示,如果所述节点含有不能由所述XSLFO处理器78进行处理的、代表条码或RFID应答器的流内外来对象,则呈现引擎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处理器78能够处理一些有限数目的流内外来对象,所以假定它不是条码类型的流内外来对象。这由从方框160到方框154的箭头162来表示。然而,一般来说,流内外来对象的存在或者被生成是由于这样的特定原因,即,与流内外来对象有关的数据在性质上是十分独特的(诸如条码),并且因此,许多市售的或者通用的XSLFO处理器都不能处理它们。
要注意的是,这里所述及的市售的XSLFO处理器不一定不能处理所有的流内外来对象。然而,它们不能处理对应于条码符号和RFID编码的流内外来对象。
假定所述流内外来对象具有适当的名字空间,则方框170对流内外来对象中的元素进行解释,以便确定条码类型。例如,所述流内外来对象被表示于代码段4的第21-26行。更具体地说,具有表明对应于条码的正确名字空间的前缀为“bo”的条码元素被表示为具有“postnet”的条码类型,如代码段4的第23-24行所示,它表现为<bopostnet interpretation-line=″none″>08540</bopostnet>。要注意的是,代码段4的第41-42行表示用于另一个流内外来对象即,待打印的下一个条码标记的类似条码元素,它对应于在代码段1中所示的“Steven Hawking”的地址。
根据应用,可以在流内外来对象中指定任何条码类型。所述条码类型基于已知的条码标准。例如,条码类型不限于条码符号的postnet类型,并且可以是,例如,“工业的5中取2”、“PDF 417”、“UPC”,等等。条码“类型”指定待打印的条码符号的基本结构,诸如条的宽度、条的宽度与两条之间的空间的宽度之比等。每一种特定的已知条码标准都已被具体地规定。
其次,在已经从流内外来对象确定条码类型之后,对流内外来对象的属性进行解释,以便确定条码的各项特性,如方框176所示。所述各项特性可以修改生成条码符号的方式。例如,在代码段4的第23-24行可以看出“postnet”类型条码的一项属性为“interpretation-line=″none″”。如业界所熟知的那样,“interpretation-line=″none″”意味着没有相应的人可读文本随同特定条码符号一起被产生。与条码元素有关的属性的另一个实例可以是条码符号的高度,它也可以在流内外来对象中被指定作为一种属性。
使用从流内外来对象获得的条码类型和属性,呈现引擎80随后获得有待于转换为条码符号的实际节点文本数据,如方框180所示。在这个实例中,实际条码数据是邮政编码“08540”,如代码段4第24行中的两个反尖括号(>80540<)之间所示。从数字数据“08540”物理转换到表示条码符号(例如,对一种线性条码而言)的线或条的位图可以由,例如,可以从Zebra公司购买的条码标记打印机中所包含的软件程序来实现。这种适当的条码打印机可以是Xi系列条码打印机(90XiIII+、96XiIII+、140XiIII+、170XiIII+、220XiIII+等),2800系列条码打印机,型号为Z4M、Z6M、105SL的条码打印机等。可以从Zebra公司购买的条码打印机中所含有的这种软件程序或者“本地算法”是十分有效的,并且因此可以快速呈现条码。
一旦表示条码符号的位图已经被方框180所生成,如方框182所示,所述位图随后被置入或并入到“主”或“标记”位图184中,所述标记位图代表整个发货标记的图像。所述发货标记含有人可读的文本、其它文本或字符,以及条码符号。要注意的是,上述位图可以是单独的,即,针对文本的位图和针对条码符号的位图,或者一个主位图可以作为处理进程而被使用或者被“繁衍”。在这一方面,要注意的是呈现引擎80在其上运行的树或数据结构被称为“XSLFO区域节点树”,这意味着它包含不同的“区域”。这样的区域可以对应于不同的或个别的位图或位图部分。然而,可以使用任何数目的适当位图结构。位图的实际结构或配置,或者位图的数目与本发明的范围无关。
例如,当生成文本时,XSLFO处理器78可以把“它的”文本置于一个特定位图中。这样的文本可以对应于上面所讨论的姓名“阿尔伯特爱因斯坦”。由于这个文本也将与条码符号一起被打印在发货标记上,所以“主”或“标记”位图184将含有所有的组成位图。最终的“主”位图184将随后被送往打印机驱动器54(图1),使得发货标记可以被打印。
现在转到图4-5,图5是针对在代码段1中指定的第一条码发货标记的上述处理的最后输出的表示190。按照相应的样式表对文本数据进行呈现和格式化,同时,如上所述,也由呈现引擎80以条码符号的形式来呈现邮政编码192。要注意的是,仅为了说明目的,图5所示的字号或字型可以不同于在程序段3中所示的相应样式表中所指定的那些。
回到方框170,假定流内外来对象具有适当的名字空间,如果流内外来对象不是条码类型,则方框170对流内外来对象中的各元素进行解释,以确定它是否是RFID类型。如上所述,如同任何条码类型都可以在流内外来对象中被指定那样,任何RFID应答器类型也可以根据应用在流内外来对象中被指定。RFID应答器类型基于已知的RFID标准。例如,RFID类型不局限于ISO 15693类型的RFID编码,并且可以是,例如,Tag-it或I·代码类型的RFID编码,等等。RFID类型指定待编码的RFID数据的基本结构,诸如数据存储容量、数据寻址方案、发射频率、接收频率、专用的特征(诸如序列编号和数据锁定,等等)。如上所述,每一种特定的已知RFID标准都已被具体地规定。
其次,在已经确定所述流内外来对象是RFID类型之后,对流内外来对象的属性进行解释,以确定RFID应答器的各项特性,如方框183所示。这些特性可以修改编码RFID应答器的方式,诸如写入哪一个数据块,是否对所述数据块进行写保护(加锁),写入失败时是否重试,编程期间把标签定位于收发信机天线下面,等等。
使用从流内外来对象中获得的RFID应答器的类型和各项属性,呈现引擎80随后获得有待于转换为RFID应答器编码的实际节点文本数据,如方框185所示。例如,实际的RFID编码可以是邮政编码“08540”,它可以作为ASCII字符被放置在一个Tag-it应答器的数据块0和1中(因为Tag-it的每一个数据块都保存4个字节的数据)。Tag-it应答器可以保存8个数据块,每一个具有4个字节的数据,总共有32字节的用户数据。从表示实际的RFID编码数据的数字数据到适于编码到RFID应答器的形式的物理转换可以由,例如,从Zebra公司购买的打印机和系统中所包含的软件程序来执行。
例如,可以使用几种条码打印机/编码器,诸如型号R-140和型号R402等。可以从Zebra公司购买的系统中所含有的这样的软件程序或者“本地算法”是十分有效的,并且因此可以快速呈现条码和RFID应答器编码。
一旦RFID应答器编码已经被方框185生成,呈现一种RFID专用的数据结构,如方框187所示。如上所述,这个方框向使用本地RFID打印机算法的RFID应答器呈现所述RFID专用的数据结构,以便控制RFID收发信机61(图1)去读取和编码RFID应答器62(图2)。这实质上以相同于编程可编程存储器器件的方式,来编程RFID应答器。
现在参照图6,图中示出了一个可替代的实施例。相同的参考数字被用来表示相同的结构。在这个特定的实施例中,XML系统10不需要在所有情况下均包括或专门地利用XML打印机装置。在这个实施例中,例如,一个外部请求者194可以希望XML输入数据流被译成位图,使得它可以以远程方式来打印条码标记。可替代地,外部请求者194可以请求对RFID应答器进行编码。因此,外部请求者194可以通过因特网或者其它网络43、44向XML服务器200发出请求。该请求可以采取相同于上面就图1-3和代码段1-4描述的XML输入数据流的形式。所述请求也可以采取含有XML数据、诸如业界所熟知的简单对象访问协议(SOAP,Simple Object Access Protocol)的协议的形式。
作为响应,XML服务器200的计算机系统12可以处理XML输入数据流。上述的所有相同的处理功能,除了涉及条码等的以外,都可以在本实施例中实现,所述位图不被送往打印机驱动器。而是位图被转换为任何适当的格式,诸如业界所熟知的“JPEG”或“PNG”格式。随后,所述JPEG或PNG文件被送回外部请求者194,然后他(她)针对适当的打印机驱动器来格式化JPEG或PNG文件,并打印和/或显示所述条码标记。就RFID应答器而言,可以以数据文件的形式将已编码的数据送回所述请求者。可以使用数据文件的任何适当的形式或格式。因此,本发明可以起到一个条码呈现服务器和/或RFID呈现服务器的作用,并且不一定需要直接地执行打印或编码功能。可替代地,数据的输出表示可以采取可缩放的矢量图形(SVG,Scalable vectorGraphic)格式,所述格式由适当的行业标准定义。
为了说明本发明被建立和使用的方式,已经描述了根据本发明的XML系统的一些特定实施例。应当理解,本发明的其它变动和修改的实施以及它的各个方面对本领域的技术人员来说是显而易见的,并且本发明并不局限于已描述的那些特定的实施例。因此,作者打算用本发明来覆盖处于在这里公开和主张权利的基本的主要原理的精神实质和范围内的任何和所有的修改、变动或等价物。
权利要求
1.一种可扩展标记语言(XML,extensible markup language)系统,它被配置用于基于XML输入数据流,便于条码标记、标签、票据、卡片或其它介质的打印,和/或被嵌入介质中的射频标识(RFID,Radio Frequency Identification)器件的编码,所述XML系统包括计算机系统,它具有存储器子系统;通过操作与网络连接的通信接口;XML处理器,它被配置用于接收和处理所述XML输入数据流;可扩展样式表语言转换(XSLT)处理器,它被配置用于获得在XML数据流中标识的样式表,或者从样式表库中获得所述样式表,所述XSLT处理器根据所获得的样式表,将XML输入数据流中的数据转换为已转换的XML数据;可扩展样式表语言格式化对象(XSLFO)处理器,它被配置用于根据在样式表中包含的XSLFO指令,将已转换的XML数据格式化为已格式化的XML数据;以及呈现子系统,它被配置用于接收已格式化的XML数据,并且产生条码标记、标签、票据、卡片或其它介质的可打印的表示,和/或产生用于RFID器件的编码信息。
2.根据权利要求1所述系统,还包括打印机子系统,它通过操作被连接到所述XML系统,所述打印机子系统被配置用于打印条码标记、标签、票据、卡片或其它介质。
3.根据权利要求1所述系统,还包括打印机/编码子系统,它通过操作被连接到所述XML系统,所述打印机/编码子系统被配置用于打印条码标记、标签、票据、卡片或其它介质和/或被配置用于对被嵌入介质中的RFID器件进行编码。
4.根据权利要求1所述系统,还包括编码子系统,它通过操作被连接到所述XML系统,所述编码子系统被配置用于对被嵌入介质中的RFID器件进行编码。
5.根据权利要求1所述系统,其中,所述可打印的表示和/或编码信息采取从包括JPEG、PNG、SVG和数据文件的组中选择的格式。
6.根据权利要求1所述系统,其中,根据文档类型定义(DTD,Document Type Definition)来进行XML数据流的一部分的验证。
7.根据权利要求1所述系统,其中,外部源向所述XML系统发送请求,以产生条码标记、标签、票据、卡片或其它介质的表示。
8.根据权利要求1所述系统,其中,外部源向所述XML系统发送请求,以产生用于RFID器件的编码指令。
9.一种可扩展标记语言(XML)系统,它被配置用于基于XML输入数据流,便于条码标记、标签、票据、卡片或其它介质的打印、和/或被嵌入介质中的RFID器件的编码,所述XML系统包括计算机;存储器子系统;XML处理器,它被配置用于接收和处理所述XML输入数据流;可扩展样式表语言转换(XSLT)处理器,它被配置用于获得在XML数据流中标识的样式表,或者从样式表库中获得所述样式表,所述XSLT处理器根据所获得的样式表,把XML输入数据流中的数据转换为已转换的XML数据;可扩展样式表语言格式化对象(XSLFO)处理器,它被配置用于根据在样式表中包含的XSLFO指令,将已转换的XML数据格式化为已格式化的XML数据;以及呈现子系统,它被配置用于接收已格式化的XML数据,并且产生条码标记、标签、票据、卡片、其它介质的可打印的表示,和/或产生用于RFID器件的编码信息。
10.根据权利要求9所述系统,其中,所述存储器子系统便于XML输入数据流向XML处理器的传输。
11.根据权利要求9所述系统,其中,所述存储器子系统被配置用于访问含有XML输入数据流的存储器。
12.根据权利要求11所述系统,其中,所述存储器是从包括RAM、EPROM、快闪存储器、动态存储器、静态存储器、先进先出(FIFO,first-in first-out)存储器、后进先出(LIFO,last-in first-out)存储器、环形存储器、半导体存储器、磁泡存储器、缓冲存储器、磁盘存储器、光学存储器、和高速缓冲存储器的组中选择的。
13.根据权利要求9所述系统,其中,所述XML处理器获得在XML数据流中标识的模式,所述模式被配置用于便于XML数据流的一部分的验证。
14.根据权利要求13所述系统,其中,所述模式被存储在与计算机或存储器子系统分开的库中,并且经由通信网络以远程方式获得。
15.根据权利要求13所述系统,其中,所述模式被存储在所述存储器子系统中。
16.根据权利要求9所述系统,其中,根据文档类型定义(DTD)来进行XML数据流的一部分的验证。
17.根据权利要求9所述系统,其中,所述样式表被存储在与计算机或存储器子系统分开的库中,并且经由通信网络以远程方式获得。
18.根据权利要求9所述系统,其中,所述样式表被存储在所述存储器子系统中。
19.根据权利要求9所述系统,其中,所述可打印的表示和/或编码信息采取从包括JPEG、PNG、SVG和数据文件的组中选择的格式。
20.一种可扩展标记语言(XML)系统,它被配置用于基于XML输入数据流,便于条码标记、标签、票据、卡片或其它介质的打印、和/或被嵌入介质中的RFID器件的编码,所述XML系统包括计算机;存储器子系统;XML处理器,它被配置用于接收已转换的XML数据;可扩展样式表语言格式化对象(XSLFO)处理器,它被配置用于根据在样式表中包含的XSLFO指令,将已转换的XML数据格式化为已格式化的XML数据;以及呈现子系统,它被配置用于接收已格式化的XML数据,并且产生条码标记、标签、票据、卡片、其它介质的可打印的表示,和/或产生用于RFID器件的编码信息。
21.根据权利要求20所述系统,还包括可扩展样式表语言转换(XSLT)处理器,它被配置用于获得在XML数据流中标识的样式表,或者从样式表库中获得所述样式表,所述XSLT处理器根据所获得的样式表,把XML输入数据流中的数据转换为已转换的XML数据。
22.根据权利要求20所述系统,其中,所述XML处理器被配置用于接收和处理XML输入数据流,并且从模式库中获得在XML数据流中标识的模式,XML处理器根据所获得的模式来验证XML数据流。
23.一种用表示用于XML系统的计算机程序的数据来编码的计算机可读存储器或数据存储装置,所述XML系统被配置用于根据XML输入数据流,便于条码标记、标签、票据、卡片或其它介质的打印、和/或被嵌入介质中的RFID器件的编码,所述计算机可读存储器或数据存储装置包括具有可通过操作与之连接的存储器子系统的处理部件;用于接收和处理XML输入数据流的部件;转换部件,它被配置用于获得在XML输入数据流中标识的样式表,或者从样式表库中获得所述样式表,所述转换部件被配置用于根据所获得的样式表,将XML输入数据流中的数据转换为已转换的XML数据;格式化部件,它被配置用于根据所述样式表中包含的XSLFO指令,将已转换的XML数据格式化为已格式化的XML数据;以及呈现部件,它被配置用于接收已格式化的XML数据,并且产生条码标记、标签、票据、卡片、其它介质的可打印的表示,和/或产生用于RFID器件的编码信息。
24.用于条码和/或RFID装置中的XML处理系统,包括计算机系统,它通过操作被连接到所述条码或RFID装置;所述计算机系统还包括XML处理器,它被配置用于接收和处理XML输入数据流;可扩展样式表语言转换(XSLT)处理器,它被配置用于获得在XML数据流中标识的样式表,或者从一个样式表库中获得所述样式表,所述XSLT处理器根据所获得的样式表,将XML输入数据流中的数据转换为已转换的XML数据;可扩展样式表语言格式化对象(XSLFO)处理器,它被配置用于根据样式表中包含的XSLFO指令,将已转换的XML数据格式化为已格式化的XML数据;以及呈现子系统,它被配置用于接收已格式化的XML数据,并且产生条码标记、标签、票据、卡片或其它介质的可打印的位图表示,和/或产生用于RFID器件的编码信息。
25.一种在XML系统中适于根据XML输入数据流,产生条码标记、标签、票据、卡片、和/或对被嵌入在介质中的RFID器件进行编码的方法,所述方法包括由XML处理器来处理XML输入数据流;获得在XML数据流中标识或者从样式表库或其它外部源获得的样式表;根据所获得的样式表,使用可扩展样式表语言转换(XSLT)处理器,将XML输入数据流中的数据转换为已转换的XML数据;根据样式表中包含的XSLFO指令,使用可扩展样式表语言格式化对象(XSLFO)处理器,将已转换的XML数据格式化为已格式化的XML数据;基于已格式化的XML数据,使用呈现子系统来产生条码标记、标签、票据、卡片或其它介质的可打印的表示,和/或产生用于RFID器件的编码信息,所述呈现子系统处理在样式表中定义的条码类型或RFID类型流内外来对象;以及打印或发送用于打印条码标记、标签、票据、卡片或其它介质的可打印的表示,和/或向所述RFID器件发送编码指令。
全文摘要
一种XML系统,它被配置用于基于XML输入数据流,打印条码标记、票据、卡片或其它介质,和/或对被嵌入介质中的RFID器件进行编码。所述XML系统包括计算机系统,它具有存储器子系统,通过操作与网络连接的通信接口,被配置用于接收和处理所述XML输入数据流的XML处理器,以及可扩展样式表语言转换(XSLT)处理器,它被配置用于获得在XML数据流中标识的样式表,或者从一个样式表库中获得所述样式表。所述XSLT处理器根据所获得的样式表,把XML输入数据流中的数据转换为已转换的XML数据。还包括一个可扩展样式表语言格式化对象(XSLFO)处理器,它被配置用于根据样式表中包含的XSLFO指令,将已转换的XML数据格式化为已格式化的XML数据,以及呈现子系统,它被配置用于接收已格式化的XML数据,并且产生条码标记、标签、票据、卡片或其它介质的可打印的表示,和/或产生用于RFID器件的编码信息。
文档编号G06K1/12GK1836201SQ200480023568
公开日2006年9月20日 申请日期2004年5月14日 优先权日2003年6月20日
发明者布鲁斯·阿莱斯霍斯 申请人:Zih公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1