Source: https://patents.google.com/patent/US9201845B2/en
Timestamp: 2019-10-19 07:37:26
Document Index: 87708093

Matched Legal Cases: ['Application No. 60', 'Application No. 60', 'Application No. 10', 'Application No. 10', 'art 2', 'Application No. 02789602', 'Application No. 04752504', 'Application No. 10']

US9201845B2 - XML printer system - Google Patents
XML printer system Download PDF
US9201845B2
US9201845B2 US14/013,703 US201314013703A US9201845B2 US 9201845 B2 US9201845 B2 US 9201845B2 US 201314013703 A US201314013703 A US 201314013703A US 9201845 B2 US9201845 B2 US 9201845B2
US14/013,703
US20140061318A1 (en
Bruce N. Alleshouse
2001-12-17 Priority to US34142701P priority Critical
2002-01-04 Priority to US34538902P priority
2002-07-17 Priority to US10/197,014 priority patent/US6540142B1/en
2002-11-13 Priority to US10/332,604 priority patent/US7025268B2/en
2002-11-13 Priority to PCT/US2002/036322 priority patent/WO2003052658A1/en
2003-01-21 Priority to US10/348,422 priority patent/US6655593B2/en
2003-06-20 Priority to US10/601,213 priority patent/US6908034B2/en
2004-05-17 Priority to PCT/US2004/015499 priority patent/WO2005122057A1/en
2004-12-13 Priority to US11/010,895 priority patent/US7172122B2/en
2006-02-10 Priority to US11/351,748 priority patent/US7407102B2/en
2006-11-17 Priority to US11/561,084 priority patent/US7959082B2/en
2007-07-06 Priority to US11/774,152 priority patent/US7959083B2/en
2009-09-01 Priority to US12/551,953 priority patent/US7988051B2/en
2011-05-06 Priority to US13/102,614 priority patent/US8459555B2/en
2011-06-10 Priority to US13/157,973 priority patent/US8393540B2/en
2011-06-14 Priority to US13/160,037 priority patent/US8544746B2/en
2013-02-06 Priority to US13/760,716 priority patent/US8820642B2/en
2013-05-09 Priority to US13/890,908 priority patent/US8919652B2/en
2013-08-29 Priority to US14/013,703 priority patent/US9201845B2/en
2013-08-29 Application filed by ZIH Corp filed Critical ZIH Corp
2013-11-01 Assigned to ZIH CORP. reassignment ZIH CORP. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ALLESHOUSE, BRUCE N.
2014-03-06 Publication of US20140061318A1 publication Critical patent/US20140061318A1/en
2015-12-01 Publication of US9201845B2 publication Critical patent/US9201845B2/en
101700033040 CALR family Proteins 0 description 1
101700023606 ENV family Proteins 0 description 18
241000283070 Equus zebra Species 0 description 12
101700030310 FUS family Proteins 0 description 18
101700025860 LDB3 family Proteins 0 description 18
101700057993 NCAP family Proteins 0 description 18
101700032474 NS1 family Proteins 0 description 18
241001417524 Pomacanthidae Species 0 description 1
101700032263 SAMP family Proteins 0 description 1
101700021322 VNS1 family Proteins 0 description 18
238000002372 labelling Methods 0 description 18
238000007639 printing Methods 0 claims description 11
238000009877 rendering Methods 0 abstract description 32
G06K17/0025—Methods or arrangements for effecting co-operative working between equipments covered by two or more of the preceding main groups, e.g. automatic card files incorporating conveying and reading operations arrangements or provisious for transferring data to distant stations, e.g. from a sensing device the arrangement consisting of a wireless interrogation device in combination with a device for optically marking the record carrier
An XML processing system for use in a barcode printer apparatus includes a computer system operatively coupled to the barcode printer apparatus. The computer system further includes an XML processor configured to receive, parse, and process an XML input data stream and obtain schema identified in the XML data stream from a schema repository. Alternatively, the system includes a SAX processor configured to receive and process the XML input data stream, a ZPL processor configured to receive and process a format template, a variable data integrator configured to develop an association between the XML data contained in the XML input data stream and the format template, a formatting engine configured to format the associated XML data according to a format governed by the format template, and a barcode rendering engine configured to receive the associated and formatted XML data and generate a bit map representative of the bar code label.
This application claims the benefit of priority from, and is a continuation of U.S. application Ser. No. 13/160,037, filed Jun. 14, 2011, entitled XML Printer System”, which is a continuation of, U.S. application Ser. No. 11/774,152, filed Jul. 6, 2007, entitled “XML Printer System,” which is a continuation application of U.S. Ser. No. 11/351,748, filed Feb. 10, 2006, entitled XML Printer System; which is a continuation application of non-provisional application U.S. Ser. No. 10/332,604, filed on Oct. 20, 2003, entitled XML Printer System; which is (1) a continuation in part of U.S. Ser. No. 10/197,014, filed on Jul. 17, 2002, entitled Native XML Printer which claims the benefit of priority from provisional patent application U.S. Ser. No. 60/345,389, filed Jan. 4, 2002, entitled XML Printer Technology and from provisional patent application U.S. Ser. No. 60/341,427, filed Dec. 17, 2001, entitled Bar Code Labeling Systems Having Machine Readable Standards and (2) a national stage entry of PCT/US02/36322 filed Nov. 13, 2002 which also claims the benefit of U.S. Ser. No. 10/197,014, filed on Jul. 17, 2002, entitled Native XML Printer which claims the benefit of priority from provisional patent application U.S. Ser. No. 60/345,389, filed Jan. 4, 2002, entitled XML Printer Technology and from provisional patent application U.S. Ser. No. 60/341,427, filed Dec. 17, 2001, entitled Bar Code Labeling Systems Having Machine Readable Standards. All of which are incorporated by reference as if set forth in their entirety herein.
This application also claims the benefit of priority from, and is a continuation-in-part of U.S. application Ser. No. 13/890,908, filed May 9, 2013 entitled “XML System”, which is a continuation of U.S. application Ser. No. 13/102,614, filed May 6, 2011, entitled “XML system”; which is a continuation of U.S. application Ser. No. 11/561,084, filed Nov. 17, 2006, entitled “XML System”; which is a continuation of U.S. application Ser. No. 11/010,895, filed Dec. 13, 2004, entitled “XML System”; which is a continuation of U.S. application Ser. No. 10/601,213, filed Jun. 20, 2003, now U.S. Pat. No. 6,908,034, entitled “XML System”; which is a continuation-in-part of U.S. application Ser. No. 10/348,422, filed Jan. 21, 2003, now U.S. Pat. No. 6,655,593, entitled “Native XML Printer”; which is a continuation of U.S. application Ser. No. 10/197,014, filed Jul. 17, 2002, now U.S. Pat. No. 6,540,142, entitled “Native XML Printer”; which claims priority from U.S. Provisional Application No. 60/345,389, filed Jan. 4, 2002, entitled “XML Printer Technology”, and U.S. Provisional Application No. 60/341,427, filed Dec. 17, 2001, entitled “Bar Code Labeling Systems Having Machine Readable Standards.” All of which are incorporated by reference as if set forth in their entirety herein.
This application also claims the benefit of priority from, and is a continuation-in-part application of U.S. application Ser. No. 13/760,716, filed Feb. 6, 2013, entitled “XML Printer System with RFID Capability”, which is a continuation of Ser. No. 13/157,973 filed Jun. 10, 2011, entitled “XML Printer System with RFID Capability”; which is a continuation of U.S. application Ser. No. 12/551,953, filed Sep. 1, 2009, entitled “XML Printer System with RFID Capability,” which is a continuation of Ser. No. 10/505,982 filed Mar. 28, 2006 which is a national stage entry of PCT/US04/15499 filed May 17, 2004 and a continuation-in-part of application U.S. Ser. No. 10/332,604, filed Jan. 10, 2003 entitled XML Printer System, which is a continuation-in-part of application U.S. Ser. No. 10/197,014, filed Jul. 17, 2002, entitled Native XML Printer, now U.S. Pat. No. 6,540,142, which claims the benefit of priority from the following provisional applications: 1) provisional patent application U.S. Ser. No. 60/345,389, filed Jan. 4, 2002, entitled XML Printer Technology, and 2) provisional patent application U.S. Ser. No. 60/341,427, filed Dec. 17, 2001, entitled Bar Code Labeling Systems Having Machine Readable Standards. All of which are incorporated by reference as if set forth in their entirety herein.
The present invention relates generally to a method and apparatus for printing bar code labels and more specifically in one embodiment, to an XML (Extensible Mark-up Language) printer that prints bar code labels based on an XML data stream using existing ZPL-based (Zebra Programming Language) format template.
Printer systems for printing barcodes and for transmitting data to a barcode printer are known. However, many such systems use proprietary methods of data encoding, and therefore such methods cannot be used interchangeably with other barcode printers. Also, known data encoding methods typically render the underlying data unreadable by humans. While this presents no impediment to the computer systems, it may be burdensome to humans attempting to review, debug or understand certain data appearing in the underlying barcode element names. In that regard, XML is an open standard that is being adopted by many business entities and is human-readable. Use of XML may avoid many of the problems and pitfalls associated with non-human readable methods.
A need exists to permit an enterprise resource planning system (ERP) to format its data for transmission to a barcode printer system in XML, while additionally making use of existing ZPL format templates that govern the layout of the label and/or by making use of a pure XML format template that uses XSL (extensible stylesheet language) to govern the layout of the label to be printed.
FIG. 5 is a specific representation of a barcode label produced in accordance with the printer system of FIGS. 1-4;
FIG. 6 is a specific example of an alternate embodiment of a printer system configured as a barcode rendering server;
FIG. 7 is a high-level software block diagram of a specific alternate embodiment of a printer system;
FIG. 8 is a combined high-level software block diagram and data flow diagram of a specific alternate embodiment of a printer system; and
FIG. 9 is a specific representation of a barcode label produced in accordance with the printer system of FIGS. 7-8.
Referring now to FIG. 1, a specific embodiment of a high-level hardware block diagram of an XML printer system 10 is shown generally. In the embodiment of FIGS. 1-6, the native or natural “language” of the system is XML, thus the printer system 10 may be referred to as a “native XML printer.” The XML printer system 10 includes a computer or processing system 12, which includes various hardware components, such as RAM 14, ROM 16, hard disk storage 18, cache memory 20, database storage 22, and the like (also referred to as “memory subsystem” 26), as is known in the art. The computer system 12 may include any suitable processing device 28, such as a computer, microprocessor, RISC processor (reduced instruction set computer), CISC processor (complex instruction set computer), mainframe computer, work station, single-chip computer, distributed processor, server, controller, micro-controller, discrete logic computer and the like, as is known in the art. For example, the processing device 28 may be an Intel Pentium® microprocessor, x86 compatible microprocessor, or equivalent device.
The computer system 12 is further coupled to a printer system 50. The printer system 50 may include a media/paper control system 52, a printer driver 54 and a print head mechanism 56. Any suitable printer capable of printing barcode labels may be used, which may include various dot matrix, ink jet, laser and/or thermal printers. Of course, dot matrix printers are usually of lower quality and require closer monitoring of the label output. Preferably, the printer system 50 is a thermal transfer printer. Such suitable printers, for example, are available from Zebra Technologies Corporation of Vernon Hills, Ill., and may include the Model Xi series barcode printers (XiIII+, 90XiIII, 96XiIII, 140XiIII, 170XiIII, 220XiIII, etc.), the 2800 Series barcode printers, Model Z4M, Z6M, 105SL barcode printers, and others. Any suitable barcode label printer may be used.
Typically, such printers may include various motors, label cutters, ribbon handlers, sensors, and the like (not shown). Additionally, such printers may include various control inputs or sensors, such as a media sensor, print head temperature sensor, head open sensor, ribbon sensor, and the like (not shown), as is known in the art. The printer system 50 may include one or more additional processors 60, other than the processor 28 residing in the computer system 12. Alternatively, the processor 28 in the computer system 12, if sufficiently powerful, may control and handle the printer system 50 functions without the need for a separate processing device. Greater detail concerning the control of the print-head may be found in U.S. Pat. No. 5,372,439 entitled “Thermal Transfer Printer With Controlled Ribbon Feed,” issued Dec. 13, 1994, and owned by the owner of the present invention. U.S. Pat. No. 5,372,439 is hereby incorporated by reference in its entirety.
The software blocks illustrated in FIGS. 2-3 include an XML (extensible mark-up language) processor 70 (also referred to as the “XML parser”), an XSLT (extensible stylesheet language transformation) processor 74, an XSLFO (extensible stylesheet language formatting object) processor 78, a barcode rendering engine 80 (also referred to as the “bitmap/barcode rendering engine”), and the printer driver 54 (FIG. 1). Note that the printer driver 54 is an example of a component described above whose function may be performed by either the processing device in the computer system 12 or the processing device 60 (FIG. 1) in the printer system 50, depending upon the physical location of the associated processing device. Again, a single processing device, if sufficiently powerful, may handle all functions for the XML printer system 10.
As described above, known barcode label systems often use proprietary software encoding schemes. Additionally, such schemes are often prone to errors, and the underlying value data is usually unreadable by a non-technical individual. In known systems, if an error exists in the underlying value data sent from the enterprise system, or if the data is missing or otherwise incorrect, the barcode printer will print what it is instructed to do, which of course, produces an error in the barcode label, rendering it inaccurate or useless.
Moreover, when dealing with compliance labeling, known systems require non-trivial changes in the data encoding when the form or content of the label changes in accordance with the compliance label demands. Such changes in the form or content of the barcode, again, are susceptible to errors, which in turn can lead to monetary fines by the entity demanding compliance. Business relationships may also be damaged by continued problems in the barcode labeling system, especially if such errors disrupt the business of the compliance demander.
The present XML printer system 10 utilizes an open format. In particular, the formatting requirements and the form of the barcode label are all defined in the XML language. Moreover, not only is XML well defined and available for all to use, but non-programmers can understand the data and commands in an XML data stream or file (or hard copy) with minimal training.
Various XML software blocks shown in FIGS. 2-3 are commercially available. Several different commercially available XML processors 70 may be used interchangeably or with little modification. For example, the following commercially available XML processors 70 may be used: “XML for C++” available from IBM Corporation, “MSXML3” available from Microsoft Corporation, “Oracle XML Developers Kit for C” available from Oracle Corporation, “Expat” available from Thai Open Source Software Center, Ltd., or “Xerces-C++” available from the Apache Software Foundation. However, any suitable XML processor may be used.
Still referring to FIGS. 1-3, the XML processor 70 receives the XML input data stream 90 from an external source 88. For example, the external source may be the ERP system 88, such as the warehouse management system. The XML processor 70 is essentially parses and processes the XML input data stream 90 and generates a set of nodes, which may be in a “tree” structure, as is known in the art. Each of the software processing blocks shown in FIGS. 2-3 act on the nodes of the “tree” to perform their required function. The underlying value data contained in the XML input data stream 90 from the ERP system 88 is processed and entered into a “label values node tree,” 100 which holds the data.
The following is a brief overview of the operation of the various software components. First, note that the XML input data stream 90 includes text that identifies the name and location of other required XML documents or files. One such document is referred to as “XML schema” or “schema.” The schema is used to validate the XML input data stream, including the underlying value data. If validation is successful, a stylesheet is applied, as will be described below. The name and location of the stylesheet is also specified in the XML input data stream 90. Application of the stylesheet is handled by the XSLT processor 74, which under the direction of the stylesheet, may transform the underlying XML element names and/or underlying value data. Next, the data is processed by the XSLFO processor 78, which handles formatting and “layout” of the underlying value data, which may include, for example, formatting the underlying value data in accordance with, for example, font type, font size, color, and the like. Next, the underlying value data is processed by the bitmap rendering engine 80, which creates a bitmap 92 of the barcode label corresponding to the transformed and formatted data. The bitmap rendering engine 80 may utilize an “instream foreign object” residing in the stylesheet to direct creation of the bitmap. The bitmap 92 is then sent to the printer driver 54 (FIG. 1) for subsequent printing of the barcode label by the barcode printer.
The name and location of the schema document is contained in the XML input data stream 90, which XML input data stream corresponds to the request to print a barcode label. The XML processor 70 in conjunction with a schema validation module 110 validates the underlying value data. The use of schema is cost effective because it prevents errors and omissions with respect to the final output, namely, the bar code label or “shipping label.”
For example, the compliance demander may now require that a nine digit zip code be used rather than the original five digit zip code. Accordingly, the compliance demander will modify the schema to require both a first and second zip code field, and the second field will also be limited to numerical digits within a certain range, perhaps 0000-9999. The compliance demander may also modify the stylesheet to accommodate that change. In response thereto, the supplier must insert the added zip code field in its ERP system so that it appears in the XML input data stream 90 sent to the XML printer system 10. If such modification of the XML input data stream 90 is not performed correctly, the schema will cause an error to be reported back to the ERP system 88, and the label will not be printed.
Thus, the supplier need only access the modified schema and/or stylesheet from the repository 82, 84, which is automatically applied to the underlying value data when received. Essentially, minor changes, and significantly, major changes, to the foam and content of the barcode label are transparent to the supplier, and such changes to the content of the barcode label are validated in accordance with the schema. Accordingly, the supplier need not incur costs to change the form or content of the barcode label dictated by the compliance demander, and cannot make any errors in implementing such changes. If there are any errors, such errors would have been inadvertently made by the compliance demander, who could not then blame the supplier.
Code Segment 1 For An XML Input Data Steam 1 <?xml version=“1.0” encoding=“UTF-8”?> <?xml-stylesheet type=“text/xsl” href=“D:\Projects\XML\Native\Docs\ShipLabels.xsl”?> <labels 5 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>
Code Segment 2 For XML Schema 1 <?xml version=“1.0” encoding=“UTF-8”?> <xs:schema xmlns: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 name=“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>
For example, the schema document shown in code segment 2 above specifies that the underlying value data corresponding to the element name, <address>, must be a string, as defined in the XML Schema specification, as shown by line 5 in the code segment 2. The schema document also specifies that the underlying value data corresponding to the element names of <name>, <address>, <city>, <state>, and <zip> must also be present in the sequence indicated, as shown by lines 9-15 in the code segment 2. Further, this specific schema document shown in the code segment 2 specifies that the underlying value data corresponding to the element name, <state>, must be one of three states, namely, “CA,” “NJ,” or “NY.” Of course, this is only an abbreviated example, and not all states have been included for purposes of illustration only. The schema document shown in code segment 2 also specifies that the underlying value data corresponding to the element name, <zip>, must be in the range from 00000 to 99999. If any of the above-mentioned schema criteria are not met by the data in the XML input data stream, the schema validation module 110 will reject it, and will preferably return an error message back to the source 88.
Code Segment 3 For An XSLT Stylesheet 1 <?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=“1in” /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-name=“all-labels”> 15 <fo:flow flow-name=“xsl-region-body” font=“12pt Times”> <xsl:apply-templates /> </fo:flow> </fo:page-sequence> </fo:root> 20 </xsl:template> <xsl:template match=“label”> <fo:block break-after=“page”> <xsl:apply-templates select=“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>
As mentioned above, the stylesheet is used to transform the data. In this specific example, the stylesheet of the code segment 3 defines two types of namespace, namely, a “bo” type object, which is selected to be a “barcode-type object,” and an “fo” type object, which is selected to be a formatting object, which was described above with respect to the XSLFO processor 78. This permits differentiation between the different objects, as is known in the art. The stylesheet may cause some data to be transformed or even added. For example, the underlying value data from the XML input data stream of the code segment 1, namely “Einstein, “1234 Relative Way,” and the like, is inserted, as indicated by lines 40-62.
Further, this specific stylesheet specifies that an “instream foreign object” is inserted, as shown at line 31. Line 31 is shown as <fo:instream-foreign-object> in conjunction with lines 31-37, which define the instream foreign object. Note that the instream-foreign object is not processed by either the XSLT processor 74 or the XSLFO processor 78. Rather, the instream foreign object is passed to and is processed by the bitmap/barcode rendering engine 80. For example, lines 32-36 of the code segment 3 cause a <bo:barcode> element to be inserted that contains the definition of a “postnet” barcode element, which element will later be processed by the bitmap/barcode rendering engine 80. At line 34, the XSLT processor 74 causes the zip code from the XML input data stream to be inserted as the text of the <bo:postnet> element.
Now turning to FIG. 3, code segments 1-3, and a code segment shown immediately below entitled “code segment 4 for an XSLT instance node tree representation,” the code segment 4 shows a specific example of a representation of an XSLFO instance node tree 130 output produced by the XSLT processor 74 in conjunction with the stylesheet of code segment 3, which output is a representation of the XSLFO instance node tree provided to the XSLFO processor 78. Line numbering has been inserted for purposes of illustration only and is not part of the code.
Code Segment 4 For An XSLFO Instance Node Tree Representation 1 <?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=“1in” /> </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”>1234 15 Relative 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”>Steven Hawking</fo:block> <fo:block font=“bold 14pt Times” text-align=“left”>5678 Black Hole Drive</fo:block> <fo:block font=“bold 14pt Times” text-align=“left”>Los 35 Angeles, 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”>90 Quantum Circle</fo:block> <fo:block font=“bold 14pt Times” text-align=“left”>New York, 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- 60 line=“none”>10044</bo:postnet> </bo:barcode> </fo:instream-foreign-object> </fo:block> </fo:block> 65 </fo:flow> </fo:page-sequence> </fo:root>
With respect to formatting the underlying value data shown in code segment 1, for example, the font attribute of “bold 14pt Times” and text-align=“left” shown in lines 12-13 will be applied to the underlying value data of “Albert Einstein” so that when the barcode label is printed, the name of “Albert Einstein” will be printed in 14 point Times font, and it will aligned with the left margin of the barcode label. As is known in the art, may different kinds of formatting instructions may be specified, which will be interpreted by the XSLFO processor 78.
Further, this specific example of the representation of the XSLFO instance node tree 130 contains an instream foreign object, as shown at lines 21-26 of the code segment 4, which instream foreign object may not be processed by the XSLFO processor 78. Rather, the instream foreign object may be passed to the bitmap/barcode rendering engine 80 for processing. Note that at this point in the processing, the XSLFO processor 78 does not “know” how to print a barcode label because barcode element types are not included in the XSLFO specification. Rather, only the text information, such as the underlying value data, namely, “Einstein,” “1234 Relative Way,” and the like, as shown in code segments 1-2, could be printed on the barcode label as text. No actual barcode symbol would appear because the XSLFO processor 78 does not “know” how to produce a barcode symbol.
The result of processing by the XSLFO processor 78 is an XSLFO area node tree 140. Note that the instream foreign object shown in the code segment 4 is not processed by the XSLFO processor 78, but rather, is passed to the barcode/bitmap rendering engine 80 in one or more nodes of the XSLFO area node tree 140. The instream foreign object element is referred to as <bo:barcode> and is shown at lines 21-26 of the code segment 4. The barcode/bitmap rendering engine 80 receives the <bo:barcode> element and processes the code contained in that block. For example, the rendering engine 80 interprets lines 23-24, namely, <bo:postnet interpretation-line=“none”>08540<bo:postnet> as defining this particular node as being a “postnet” barcode type of element. Many different “types” of barcode symbols may be defined, as is defined by corresponding industry standards, discussed below.
As shown in block 150 in FIG. 4, the nodes of the XSLFO area node tree 140 are processed. In particular, the rendering engine 80 “knows” how to render or produce the actual barcode symbol defined by the instream foreign object. Commercially available XSLFO processors do not “know” how to process such instream foreign objects representing barcode symbols, and thus are not able to produce or render barcode symbols. Commercially available XSLFO processors may, however, render text in an acceptable manner and may even render certain types of instream foreign objects.
Next, as shown in a block 160, if the node contains an instream foreign object representing a barcode, which is not capable of being processed by the XSLFO processor 78, the rendering engine 80 checks to determine if the instream foreign object has a “namespace” specific to this XML printer system 10. For example, the rendering engine 80 may check to determine if the namespace associated with the instream foreign object corresponds to the “Zebra corporation namespace.” The namespace notation is known in the art. This is shown in line 3 of the code segment 4 as “xmlns:bo=“http://www.zebra.com/2002/XSUBarcode”>” Thus, as shown in the code segment 4, the namespace defined above is applied to any elements having a “bo” prefix. Such elements having a “bo” prefix are then only available for processing by the rendering engine 80, which “bo” prefix type elements correspond to a barcode-type instream foreign object. The XSLFO processor 78 will not “know” how to process such elements.
Next, after the barcode type has been ascertained from the instream foreign object, the attributes of the instream foreign object are interpreted to determine the barcode characteristics, as shown in a block 176. The characteristics may modify the way in which the barcode symbol is created. For example, one attribute of the “postnet” type barcode may be seen at lines 23-24 of the code segment 4 as ‘interpretation-line=“none”’ As is known in the art, ‘interpretation-line=“none”’ means that no corresponding human readable text is generated along with the specific barcode symbol. Another example of an attribute associated with the barcode element may be the height of the barcode symbol, which may also be specified in the instream foreign object as an attribute.
Using the barcode type and the attributes obtained from the instream foreign object, the rendering engine 80 then obtains the actual node text data to be converted into the barcode symbol, as shown in a block 180. In this example, the actual barcode data is the zip code “08540,” as is shown between reverse angled brackets (>80540<) in line 24 of the code segment 4. The physical conversion from the numerical data “80540” into the bitmap representing the lines or bars of the barcode symbol (for a linear barcode, for example) may be performed by software routines contained in, for example, the barcode label printers commercially available from Zebra Corporation. Such suitable barcode printers may include, for example Models Xi series barcode printers (XiIII+, 90XiIII, 96XiIII, 140XiIII, 170XiIII, 220XiIII, etc.), the 2800 Series barcode printers, Model Z4M, Z6M, 105SL barcode printers, and the like. Such known software routines or algorithms contained in the barcode printers commercially available from Zebra Corporation are very efficient, and thus the barcodes are rendered quickly.
For linear barcodes, the bitmap is rendered by converting the text data to a series of dark and light bars whose relative widths conform to the industry specifications for the barcode symbology. The text data may have check characters added before encoding to allow verification of the barcode when it is read by a barcode scanner. The check characters may be required or may be optional depending upon the symbology. The bars may be grouped into modules of bars depending upon the requirements of the encoding of the symbology. The text data may be compressed during encoding depending upon the symbology. The bars may be preceded and/or followed by one or more “finder” bars as defined by the symbology specifications, which allow a scanner to locate the barcode data more easily.
Other algorithms may be applied as needed for the proper encoding and proper physical dimensions required by the symbology. The height of the bars, the width of the narrow bar, the ratio of the wide bar to narrow bar, and other symbology specific parameters may be specified by attributes in the XML data. In addition, the barcode bitmap may be rotated (usually in ninety degree increments) as specified by attributes in the XML data.
For two-dimensional barcodes, the bitmap is rendered by converting the text data to a bit pattern according to the various unique symbology algorithms. Two-dimensional barcodes typically allow for encoding of more text data than linear barcodes. The encoding algorithm may include, for example, data compression, error checking and correction, varying levels of data redundancy, modularization, finder patterns, and other algorithms as defined by the symbology. The user-specifiable symbology specific parameters may be specified by attributes in the XML data. The bitmap generated by the symbology algorithm may then be magnified and/or rotated as specified by attributes in the XML data.
In response, the computer system 12 of the XML server 200 may process the XML input data stream. All of the same processing functions described above are carried out in this embodiment, except that the bitmap is not sent to the printer driver. Rather, the bitmap is converted to any suitable format, such as “JPEG” or “PNG” format, as is known in the art. The JPEG or PNG file is then sent back to the external requestor 194, who then formats the JPEG or PNG file for the appropriate printer driver, and prints and/or displays the barcode label. Accordingly, the present invention may function as a barcode rendering server and need not necessarily perform the printing function.
An alternate embodiment of the printer system of FIG. 1 is now shown in FIGS. 7-8, which show a “hybrid” XML printer system 300, rather than the “native” XML printer system 10 shown in FIGS. 2-6. Note that this embodiment may still be used with the computer system 12 and printer system 50 shown in FIG. 1, and like reference numerals will be used to denote like structure or components.
In this embodiment, the hybrid XML printer system 300 may receive XML data that is based on ZPL data templates, which templates conform to the ZPL language (Zebra Programming Language), such as ZPL I and/or ZPL II, and any variants thereof. The ZPL language is a formatting language that uses the “caret” character and a two letter command code to define a command. For example, the “^XA” command defines the start of a new label format, and the “^XZ” command defines the end of a label format.
The ZPL language also includes “tilde” commands, which represent control commands. For example, the command “˜JR” is a printer reset command, which is acted upon immediately by the printer, and does not really have significant bearing on the actual formatting of a barcode label. ZPL I and ZPL II were developed by Zebra Corporation of Vernon Hills, Ill., the owner of the present invention. Note that ZPL is used interchangeably with ZPL II herein.
Greater detail regarding the ZPL language specification can be found in documents entitled “ZPL II Programming Guide Volume One: Command Reference for X.10,” Manufacturer Part No. 45541LB, and “ZPL II Programming Guide Volume Two: The X.10 Environment,” Manufacturer Part No. 45542LB, which documents may be found and downloaded at the Zebra Corporation website at the following Internet web address “www.zebra.com/SS/manuals.htm.” The aforementioned documents are hereby incorporated by reference in their entirety. In the embodiment of FIGS. 7-9, the “language” of the printer system is a hybrid of both ZPL and XML, thus the printer system 10 may be referred to as a “hybrid XML printer.”
As is known, ZPL-based printers can handle “on demand printing” and “stored label format.” On-demand printing means that when a data stream containing label data to be printed is sent to the printer, it is immediately printed. Stored label format means that templates for the labels may be created in advance and downloaded to the printer. The templates may then be recalled internally within the printer to use in conjunction with a data stream transmitted at a later time that contains the label data to be printed.
As will become more clear in the description below, one difference between the native XML printer system embodiment of FIGS. 2-6 and the hybrid XML printer system embodiment of FIGS. 7-8 is that in the hybrid XML printer system embodiment, the data templates are predefined in ZPL and are first downloaded to the printer. Also note that the hybrid embodiment of FIGS. 7-8 is not a combination of the native XML printer system of the embodiment of FIGS. 2-6 with a known ZPL printer. It is not a “two-in-one” printer that merely switches between a native XML mode and a ZPL mode.
The hybrid XML printer system of FIGS. 7-8 is different from the native XML printer system of FIGS. 2-6 in which XSLT is used to define and layout the label in conjunction with XSL formatting elements embedded in the XSL template. To handle the layout and formatting of a label in the embodiment of the native XML printer system of FIGS. 2-6, a company (or vendor) must prepare and define a label layout using XSL formatting objects, and in many situations, must also prepare XSL stylesheets and XSL schema, as set forth above in the native XML printer embodiment. If the business entity's ERP system 88 was able to transmit well-formed XML data using XSL formatting objects and the like (i.e., XSL style sheets and schema) in the first place, then there would be no need to use the ZPL templates, which would indicate that the business entity already made the complete switch to a fully compatible XML ERP system, thus obviating the need for any form of ZPL.
Some companies, however, may not be ready or willing to make the investment to such a “full conversion” of its system into “pure XML” because such companies may have a sizeable investment in the older ZPL templates for their labels to be printed. Many companies are building infrastructure to permit XML data to be easily passed from business process to business process because transmission of such data in XML compatible format is becoming the industry standard. Although many companies, and the industry as a whole, are moving in the direction of using XML format for data, such companies may not want to scrap their investment in their template database infrastructure just to make the switch to a fully compatible XML format.
Accordingly, the hybrid XML printer embodiment of FIGS. 7-8 permits use of existing ZPL templates with data in XML format. The ERP system 88 may continue to use the existing ZPL templates because the “complete” switch to well-formed XML has not yet been made, most likely for economic reasons. Thus, XSL stylesheets, schema and formatting objects have not yet been implemented at the ERP site, and the hybrid XML printer system provides a cost-effective solution in such environments.
Turning now to FIG. 7 and code segment 5, the code segment shown immediately below entitled “code segment 5—a ZPL downloadable template” shows a specific example of a ZPL format template that may be transmitted to the hybrid XML printer system 300 prior to the printing of an actual bar code label, and which may be saved in the memory of the printer system for future printing jobs. Line numbering has been inserted for purposes of illustration only and is not part of the code.
Code Segment 5 -- a ZPL downloadable template 1 {circumflex over ( )}XA {circumflex over ( )}DFE:SHIPLABL.ZPL{circumflex over ( )}FS {circumflex over ( )}MCY {circumflex over ( )}LRN{circumflex over ( )}FWN{circumflex over ( )}CFD,24{circumflex over ( )}LH0,0 5 {circumflex over ( )}CI0{circumflex over ( )}PR2{circumflex over ( )}MNY{circumflex over ( )}MTT{circumflex over ( )}MMT{circumflex over ( )}MD0{circumflex over ( )}JJ0,0{circumflex over ( )}PON{circumflex over ( )}PMN {circumflex over ( )}LT0 {circumflex over ( )}A0N,58,58{circumflex over ( )}FO188,169{circumflex over ( )}CI0{circumflex over ( )}FN999{circumflex over ( )}FDname{circumflex over ( )}FS {circumflex over ( )}A0N,58,58{circumflex over ( )}FO188,244{circumflex over ( )}CI0{circumflex over ( )}FN998{circumflex over ( )}FDaddress{circumflex over ( )}FS {circumflex over ( )}A0N,58,58{circumflex over ( )}FO188,319{circumflex over ( )}CI0{circumflex over ( )}FN997{circumflex over ( )}FDcity{circumflex over ( )}FS 10 {circumflex over ( )}A0N,58,58{circumflex over ( )}FO657,319{circumflex over ( )}CI0{circumflex over ( )}FN996{circumflex over ( )}FDstate{circumflex over ( )}FS {circumflex over ( )}A0N,58,58{circumflex over ( )}FO188,394{circumflex over ( )}CI0{circumflex over ( )}FN995{circumflex over ( )}FDzip{circumflex over ( )}FS {circumflex over ( )}BY4{circumflex over ( )}FO188,488{circumflex over ( )}BZN,35,N{circumflex over ( )}FN995{circumflex over ( )}FDzip{circumflex over ( )}FS {circumflex over ( )}PQ1,0,1,Y 14 {circumflex over ( )}XZ
As is known in the art, the commands shown at lines 1 and 14 (^XA, ^XZ) define the beginning and end of the template, as is specified in the ZPL language. Line 2 indicates that the format template downloaded to the hybrid printer system 300 is stored in the memory of the hybrid printer at a location defined by “E:SHIPLABL.ZPL,” where “E:” represents a storage device identifier, which may be, for example, a disk drive. However, any suitable storage device may be used. The inclusion of this command indicates that this format template is to be saved. Lines 3-6 represent some of the various printer setup and initialization commands provided for by the ZPL programming language.
Referring now to line 7, the “^A0” command with an associated parameter of “N” means that a text field is to be created using font number zero, and in a normal (“N”) orientation (i.e., the font is not rotated), where “58, 58” represents the height and width (in dots) of the text that will be printed. As provided for in the ZPL language, the command “^FO188, 169” defines the field origin so that the text will be positioned at coordinates 188, 169 (i.e., 188 dots across and 169 dots down from the beginning of the label).
The command “^FN999” (FN command with the parameter of “999”) defines a variable field, which will contain variable information to be downloaded to the printer at a later time. In that regard, this is somewhat different than in standard ZPL. In standard ZPL, when an “^FN” command in a template is received, no data is supplied along with the command because when the template is later recalled, a subsequent “^FN” command is sent that specifies the location of that variable data, followed by the data itself. In this hybrid embodiment, however, certain “association” data is provided immediately following the “^FN” command, as indicated by the “^FD” data field command. In this specific example, the data immediately following the “^FN” command, but preceded by the “^FD” data field command, is shown as “name,” which is the data that will be matched with the XML data sent from the ERP or warehouse system at a later time. Thus, when the template shown in code segment 5 is received by the hybrid XML printer system 300, it is stored in memory of the printer, and additionally, the “association” between “name” and field “999” is stored.
Similarly, on line 8, the association between “address” and field 998 is stored, on line 9, the association between “city” and field 997 is stored, and so on. Note that the fields represented by, for example, “name,” “address,” “city,” and the like, are not the actual data to be sent as XML data by the ERP system 88. Rather, “name,” “address,” and “city” are “tags” or “associations” that associate the data that will later be sent by the ERP system with the field location or identifier, namely, “999,” “998,” and “997,” respectively.
Turning now to line 12, the “^BY” command defines default parameters for barcode commands which follow it. In this case the parameter of 4 defines the narrow bar width to be 4 dots. The “^FO” command defines that the barcode to be printed will be placed at coordinates 188, 488. The “^BZ” command defines a barcode, which is a postnet type of barcode format, with normal orientation (parameter of N), height of 35 dots (parameter of 35), and no human-readable interpretation line (parameter of N). Further, the “FN” command with a parameter of 995 specifies the association between the label field identified as “995” with name of the XML data to be downloaded, which is defined by the data command “^FD” having an attribute of “zip,” which further specifies that “zip” is the name of the XML data to be downloaded to create the actual printed barcode. The actual barcode that is printed is the zip code 304, as shown in FIG. 9.
Of course, text fields are printed on the barcode label 305 as well as the barcode itself 304, as shown in FIG. 9. Such fields, may include for example, a name 306, address 308, city 310, state 312, and text zip code 314.
Thus, in this embodiment, the template shown in code segment 5 is stored in the hybrid XML printer system 300, and no real “work” is performed (i.e., a label is not yet printed). In summary, lines 7-11 define text fields and line 12 defines a bar code that are defined along with associations that will be correlated with actual XML data sent from the ERP system 88 at a later time, along with other parameters, as set forth above. The template of code segment 5 may define which fields are static and which fields are variable. The variable fields have a variable name (stored in the ^FD command), which may be later correlated or “associated” with data to be downloaded at a later time, which data corresponds to the printed label.
Thus, in the hybrid embodiment of FIGS. 7-8, the “^FD” command (i.e., followed by “name”) determines the name of the variable that will be sent in the actual XML data that eventually follows the downloading of the template, rather than the actual data that will be printed on the barcode label.
To see how the format template of code segment 5 above is used in operation, code segment 6 is shown immediately below, and is entitled “code segment 6—downloaded XML data for use with a ZPL template.” Line numbering has been inserted for purposes of illustration only and is not part of the code.
Code Segment 6 - downloaded XML data for use with a ZPL template 1 <?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE labels SYSTEM “label.dtd”> <labels _FORMAT=“E:SHIPLABL.ZPL” _QUANTITY=“1” _PRINTERNAME=“Printer 1” _JOBNAME=“LBL101”> 5 <label> <variable name=“name”>Albert Einstein</variable> <variable name=“address”>1234 Relative Way</variable> <variable name=“city”>Princeton</variable> <variable name=“state”>NJ</variable> 10 <variable name=“zip”>08540</variable> </label> <label> <variable name=“name”>Steven Hawking</variable> <variable name=“address”>5678 Black Hole Drive</variable> 15 <variable name=“city”>Los Angeles</variable> <variable name=“state”>CA</variable> <variable name=“zip”>90007</variable> </label> <label> 20 <variable name=“name”>Richard Feynman</variable> <variable name=“address”>90 Quantum Circle</variable> <variable name=“city”>New York</variable> <variable name=“state”>NY</variable> <variable name=“zip”>10044</variable> 25 </label> </labels>
Code segment 6 represents the actual XML data stream that the ERP system 88 or warehouse management system would send to the hybrid XML printer system 300, but after the format template of code segment 5 was first downloaded to the hybrid XML printer system. In the specific example of code segments 5 and 6, the warehouse management system that may be used, for example, is an Oracle warehouse management system (the “Oracle system” or “Oracle WMS”). Of course, any business system may be used, such as Oracle, SAP, and the like. In this specific example, the Oracle system gathers data from its database and formats the data in a particular XML format for transmission to the printer. Because this specific example uses the Oracle system, the template of code segment 6 uses Oracle XML semantics.
In that regard, the particular XML semantics used by the Oracle warehouse management system is defined in line 2 of code segment 6 by the “DTD” or document type definition, which is identified as “label.dtd,” as is known in the art. Also, as is known in the art, the ERP system 88 or Oracle system has the capability of specifying the format in which the XML data is to be printed. By way of background, this capability may have been originally built into the Oracle system and other ERP systems because such systems were designed to interface to a custom “middleware” software system, which handled the format conversion between the Oracle or ERP system and the particular barcode printer in use. The present hybrid printer eliminates the need for such a “middleware” system.
However, the XML data transmitted by the Oracle system specifies on line 3 of code segment 6 that there is an XML element called “labels,” which has an attribute called “_FORMAT.” This attribute specifies the particular format template to use. In this specific example, the format template to use with the transmitted XML data is identified as “E:SHIPLABL.ZPL,” which is the format template previously stored in the hybrid XML printer system 300, as shown in code segment 5, and which is a ZPL based format template. Thus, the format template previously downloaded and stored in the memory of the hybrid XML printer system 300 may be recalled from a location specified by “E:SHIPLABL.ZPL.”
Line 3 also contains some additional attributes of the “labels” element, such as “_QUANTITY,” “_PRINTERNAME,” and “_JOBNAME.” The attribute “_QUANTITY,” specifies the number of barcode labels to print, while the attributes “_PRINTERNAME,” and “_JOBNAME” are legacy fields not needed by the hybrid XML printer system 300, but are nonetheless included in the Oracle data because such data was originally created to interface to the middleware software, as described above.
The code segment 6 contains three groups of “label” data, as shown at lines 5-11, 12-18, and 19-25, respectively. Note that the three groups of “label” data appear to be similar to code segment 1, namely lines 8-14, 15-21, and 22-28 respectively, because both code segments refer to “Albert Einstein,” “Steven Hawking,” and “Richard Feynman,” respectively, and have associated fields for address, city, state, and zip code data. Accordingly, the data shown in code segment 6 corresponds to three individual labels to be printed. Note, however, that for each of the three labels to be printed, all of the addressee information is printed as text, but only the zip code field is printed as an actual barcode. This is because of the “^BZ” command defined in template of code segment 5, line 12.
Referring to code segments 5 and 6, the data transmitted by the Oracle system shown in code segment 6 is then associated with the corresponding format template shown in code segment 5. For example, in line 6 of code segment 6, the variable name of “name” corresponds to “Albert Einstein,” which is the actual XML text data. Using the previously saved template of code segment 5, an association is made between “name” (the contents of which are “Albert Einstein”) and the field number “999,” as shown in line 7 of code segment 5. The XML data “Albert Einstein” is then saved in memory defined by the field number 999.
Similarly, the XML data “1234 Relative Way” is saved in memory defined by the field number 998, the XML data “Princeton” is saved in memory defined by the field number 997, the XML data “NJ” is saved in memory defined by the field number 996, and so on. Once all of the data contained in the XML data input stream have been associated with the corresponding template and have been loaded into memory, the label is printed.
Turning now to FIGS. 7 and 8, FIG. 7 shows a high-level functional block diagram of a specific embodiment of the hybrid XML printer system 300, while FIG. 8 illustrates a combined high-level software block diagram and data flow diagram of a specific embodiment of the hybrid XML printer system. The hybrid XML printer system 300 receives data from the enterprise resource planning (ERP) system 88, as described above with respect to the native XML printer system. The data may contain both XML components and ZPL components, such as XML data and/or the ZPL template data.
The high level blocks of FIG. 7 illustrate use of a SAX processor 320, which is a type of XML processor. By way of background, a SAX processor (Simple API for XML) does not use the DOM processing model (Document Object Model) used by the XML processors described above with respect to the native XML printer system of FIGS. 2-6.
As described above, DOM-based XML processors create a node tree in memory in order to carry out its processing steps, as is known in the art. This is necessary when performing XSL type processing, as described above with respect to the embodiment of FIGS. 2-6. Accordingly, all data is stored in memory, and thus may occupy a large amount of memory. A SAX processor, however, interprets XML syntax and data streams, and rather than building a node tree in memory, it creates “events” that are handled by event handlers, as is known in the art. SAX processors are very memory efficient, which is desirable when processing large amounts of XML data.
In this alternate embodiment of FIGS. 7-8, however, XSL-type processing is preferably not performed, hence processing based on node trees in memory is not required. Accordingly, rather than using an XML processor that is strictly DOM-based, a SAX processor may be used, as shown in FIG. 7. The term “SAX” merely refers to a specification regarding how to handle data and syntax of the XML language. For example, a commercially available XML processor that may be used in this embodiment is the “Expat” XML processor available from Thai Open Source Software Center, Ltd. Although this specific model of XML processor has the capability to function as both a DOM-based XML processor or a non DOM-based SAX processor, for purposes of this embodiment, the processor is preferably configured as a non-DOM-based XML processor, and thus will be referred to as the SAX processor.
As shown in FIG. 7, in addition to the SAX processor 320, a ZPL processor 322 is also shown. The data paths from the SAX processor 320 and the ZPL processor 322 are then routed to the block labeled Variable Data Integration 328. The Variable Data Integration block 328 combines the XML data received from the ERP system 88 and applies or “associates” the data with the fields that were previously defined by the ZPL template, as mentioned above with respect to the ZPL template of code segment 5. Essentially, in this step, the actual XML data, for example, the name “Albert Einstein,” is saved in its associated location defined by 999 of the template of the code segment 5, and the like.
Next, the data is rendered by a Bitmap/Barcode Rendering block 330, which processing is similar to known ZPL bitmap rendering used in known commercially available ZPL printers. For example, the following known ZPL printers, which are commercially available from Zebra Technologies Corporation of Vernon Hills, Ill., may include software, hardware, and/or firmware able to perform the ZPL bitmap/barcode processing as follows: Zebra Models XiIII+, 90XiIII, 96XiIII, 140XiIII, 170XiIII, 220XiIII, Model Z4M, Z6M, 105SL and any Model Xi series barcode printers from Zebra Corporation. Note that the Bitmap/Barcode Rendering block 330 is preferably performed without use of any XSLFO processing, which processing was required in the native XML printer system embodiment, and no XSLT stylesheets or schema is used.
The barcodes are rendered as described above for the native XML printer embodiment, but preferably with the exception that the barcode parameters are not specified in the XML data as attributes, but rather, are preferably specified by ZPL command parameters in the format template. For example, the ZPL command “^BY2,2,100” specifies, for a linear barcode, that the narrow bar width will be 2 dots, the ratio of the wide bar width to narrow bar width will be 2, and the height of the bars will be 100 dots.
After the bitmap is rendered, it is routed to the printer driver 54, which is also shown in FIG. 1. The printer driver 54 is an example of a component described above whose function may be performed by either the processing device in the computer system 12 or the processing device 60 (FIG. 1), depending upon the physical location of the associated processing device. Again, a single processing device, if sufficiently powerful, may handle all functions for the hybrid XML printer system 300.
Referring now to FIGS. 1, 7 and 8, FIG. 8 illustrates a specific embodiment of a combined high-level software block diagram and data flow diagram. The software described below may be executed by the processor 28 of the computer system 12 of FIG. 1. Again, the processor 28 may perform functions common to both the computer system 12 and the printer system 50. There may be one or more processors, which may function in concert or which may function separately. It is not material to the scope of this invention whether the processing or processing functions are performed by or in the computer system or by or in the printer system.
As will be described below, multiple “passes” through the processing steps shown in FIG. 8 may occur under control of the SAX processor 320. However, such multiple “passes” are not necessarily linear and thus, an exact path shown by specific lines or arrows in FIG. 8 may not necessarily be shown. An interactive process is described that may not have an exact beginning and ending point shown on FIG. 8. Rather, an action or result generated by the pass may be shown, and thus an “alternative path” may be shown in FIG. 8 in dashed lines that returns processing control back to the SAX processor 320. This is a shorthand way of indicating that the path may be iterative and that the SAX processor 320 may loop or iterate many times before processing reaches its end.
For purposes of illustration only, in a first “pass” through the processing illustrated in FIG. 8, a ZPL template is first sent to the hybrid XML printer system 300, where the actual data to be printed is not yet sent. In a second “pass,” as will also be described below, the XML data representing the barcode label to be printed is sent to the printer system, to be printed in accordance with the ZPL template previously saved.
As shown in FIG. 8, a data input stream 340 is received from the ERP system 88, and as described above, may contain XML data and/or ZPL template data. The SAX processing block 320 initially receives and parses the data input stream 340. Note that the SAX processing block 320 is actually performed by an XML processor because a SAX processor is an XML processor operating in a SAX mode. Thus, the phrase XML processor or XML processing block may be interchanged with the phrase SAX processor or SAX processing block. However, as described above, the XML processor preferably operates in SAX mode, and is thus referred to as the SAX processor 320.
First, the SAX processing block 320 determines whether the data input stream 340 is well-formed XML data by applying standard XML syntax rules to the data input stream. Note that the SAX processing block 320 of FIG. 8 is the essentially the same as the SAX processor of FIG. 7 with FIG. 7 showing some hardware and FIG. 8 showing data flow. The terms SAX processor and SAX processing block will be used interchangeably herein.
If the SAX processing block 320 determines that the data input stream does not conform to XML syntax, then it is assumed that the data input stream is ZPL based. Accordingly, the SAX processing block 320 routes the data input stream 340 to the ZPL processing block 322 for further processing. Note that the ZPL processing block 322 of FIG. 8 is the essentially the same as the ZPL processor of FIG. 7 with FIG. 7 showing some hardware and FIG. 8 showing data flow. The terms ZPL processor and ZPL processing block will be used interchangeably herein.
The ZPL processing block 322 then processes or parses the data input stream 340, which represents the ZPL format template. Preferably, the ZPL processing block 322 receives a “beginning of label” command (^XA), which causes it to begin processing the format template. The format template is shown in the code segment 5.
Various ZPL commands govern the processing and define the fields of the label, essentially establishing and defining the data to be printed. Printer control and other commands may be received at this stage of processing. When all of the format template has been downloaded, the ZPL processing block 322 encounters an “end of label” command (^XZ), which causes the format template to be saved. Note that the ADF command with the corresponding identifier “E:SHIPLABL.ZPL,” (shown at line 2 of code segment 5) indicates to the ZPL processing block 322 that the format template is preferably saved internally in the printer system on the “E:” device in a file named “shiplabl.zpl.” Of course, the format template need not be saved internally in the printer system and may be saved at any storage location, such as on a networked server or a remote location accessible through a communication network.
The ^DF (Download Format) ZPL command indicates that the label format of which it is part is to be stored rather than immediately printed. The save actually takes place when the ^XZ is encountered which indicates that all template data has been received.
Also note in FIG. 8, a block labeled “ZPL label formats” (352) without vertical lines completing the box is the symbol in the figure for a data store. This indicates that the template data coming from the input stream is stored in a data store. The line exiting the data store 352 indicates that at some later time the data is retrieved from the data store for additional processing. The data flow path is from the block 360 to the store to the block 356, but this does not represent the actual “control flow,” which is not a linear flow.
Although a block labeled “recall ZPL label format” 356 is shown connected to the block labeled “save ZPL label format” 360 as mentioned above, processing may not be linear, and thus data flow may not necessarily continue or flow from the “save ZPL label format” block 360 to the “recall ZPL label format” block 356. Rather, the entire process is iterative as described above, and in this initial “pass,” after the ZPL label format is saved, as shown in the block 360, control of the input data stream may revert back to the SAX processing block 320 for continued processing, as shown by dashed lines 370. If there is no additional data in the data input stream 340 to be processed, processing terminates and awaits additional downloaded data.
In a second “pass” through the processing illustrated in FIGS. 7-8, the ERP system 88 may transmit the actual XML data, which will be processed by the hybrid XML printer system 300 in accordance with the previously downloaded ZPL template. For example, the SAX processing block 320 may receive well-formed XML data, which may specify that label data is to follow. To process the actual data, the stored ZPL format is recalled, as shown in the block labeled “recall ZPL label format” 356, so that the recalled format template may be used in conjunction with the incoming XML data stream.
The SAX processing block 320 processes the XML syntax and determines various elements and attributes defined by the data input stream 340. In this embodiment upon receiving a “_FORMAT” attribute, the data input stream 340 is temporarily interrupted and input data comes from the format template stored in the printer system 300, and thus the ZPL commands embedded in the format template are interpreted by the ZPL processing block 322. Once the commands in the format template have been interpreted, the data input stream 340 again becomes the SAX processing block 320, which continues to process the XML data.
Additional passes through the processing under control of the SAX processor 320 may cause various “events” to be initiated, as described above. For example, a “variable data SAX event” 376 may be initiated so that the various fields in the format template are populated with the corresponding or “associated” XML data being received. This is shown by the block labeled “Match XML variable with ZPL label format variable” 380. Essentially, the variables in the XML data input stream 340 are associated with the fields in the format template. For example, in this step, the XML variable, such as the actual XML data “Albert Einstein” (306 of FIG. 9) shown in code segment 6, is matched with the ZPL label format variable, such as the label variable “name” in the ZPL template of code segment 5.
The SAX processor 320 may initiate further events to handle the tasks described above, such as a “begin label SAX event” 384, and “other SAX events” 388. This pass or other passes through the processing of FIG. 8 under control of the SAX processor 320 may cause the generation of “other SAX events,” which may be processed by a block labeled “Process event” 390. For example, such “other” events may include “set printer speed event,” “set quantity of labels to print event,” “select media event,” “select ribbon to use event,” “choose paper event,” “use 300 dpi printer event,” “use 600 dpi printer event,” “variable data event,” and the like.
The number of such events are virtually unlimited, and are governed by the type, configuration, and capability of the hardware printer system. Essentially, all aspects and functions of the printer may be controlled by use of codes sent in the data input steam 340. This also allows the printer to determine if it is capable or configured to print the label described by the XML data stream, and to optionally return error information if it cannot. Although in code segment 6 corresponding to the Oracle-base XML data, only a limited number of “other commands” are shown (namely, quantity=1 and printer name=printer 1, both shown on line 3), essentially, any function or feature that may be controlled in the printer may be specified in the XML input data stream, as mentioned above. Thus, there may be a close binding between the actual XML input data and printer control codes.
Also note that such “other” commands and corresponding “other events” generated by the SAX processing block 320 in response to the commands are not part of or specific to the Oracle system, meaning that the Oracle system does not necessarily “know” what these commands do or how they are used. It is only when such downloaded commands are matched during SAX processing that the commands and subsequent generated events take on meaning.
When an “end of label element” event (</label>) is received, the label is complete and now may be printed. Control is then routed to the ZPL formatting engine processing 394, which causes the label to be printed. Preferably, the function of the ZPL formatting engine processing 394 includes the function of bitmap/barcode rendering. Thus, the block 394 will be referred to as the ZPL formatting engine. This combined function determines the bitmaps for each of the text, barcode, and other fields on the label, integrates the individual bitmaps with proper rotation and magnification into a single label bitmap 396, and sends the completed label bitmap to the print engine (or printer driver 54, FIG. 1) for physical rendering on media. As described above, the ZPL formatting engine processing 394 may be found in various commercially available ZPL printers, such as for example, in printers commercially available from Zebra Technologies Corporation of Vernon Hills, Ill., which may include the following printer models: XiIII+, 90XiIII, 96XiIII, 140XiIII, 170XiIII, 220XiIII, Model Z4M, Z6M, 105SL and any Model Xi series barcode printers.
The ZPL formatting engine processing 394 essentially determines all of the fields contained in the label to be printed and determines what must be done for each field. For example, the ZPL formatting engine processing 394 may determine that the field containing the data “Albert Einstein” (306 of FIG. 9) shown in line 6 of code segment 6 is printed using font number zero and in a normal (“N”) orientation, and is 58 dots in height and 58 dots in width, and begins at a field origin coordinate of 188, 169, as indicated by line 7 of the code segment 5.
Thus, the ZPL formatting engine processing 394 inspects all of the fields defined by the format template in conjunction with the corresponding XML data and essentially determines how to create dots (or bits) on the label that represent the text or barcode. Barcode fields are formatted and rendered by applying the appropriate bitmap generation algorithm to the field parameters based upon the barcode symbology specified for the field accounting for horizontal and vertical sizing of linear barcodes and magnification of two-dimensional barcodes.
Specific embodiments of an XML printer system, including a native XML printer system and a hybrid XML printer system, according to the present invention have been described for the purpose of illustrating the manner in which the invention may be made and used. It should be understood that implementation of other variations and modifications of the invention and its various aspects will be apparent to those skilled in the art, and that the invention is not limited by the specific embodiments described. It is therefore contemplated to cover by the present invention any and all modifications, variations, or equivalents that fall within the true spirit and scope of the basic underlying principles disclosed and claimed herein.
1. A non-transitory computer-readable medium having computer readable program code stored thereon, the program code being configured to, when executed, cause an apparatus to at least:
receive, by an extensible markup language (XML) processor module, an XML input data stream;
select, by the XML processor module and based on the XML input data stream, a format template from a plurality of format templates;
associate XML data contained in the XML input data stream with the selected format template; and
format the associated XML data according to a format governed by the format template.
2. The computer readable storage medium of claim 1, wherein the program code further causes the apparatus to generate a printable representation of at least a portion of a media based on the formatted XML data.
3. The computer readable storage medium of claim 1, wherein the format template is downloaded to the apparatus.
4. The computer readable storage medium of claim 1, wherein the XML input data stream is received from an Oracle warehouse management system.
5. The computer readable storage medium of claim 1 wherein the program code further causes the apparatus to validate at least a portion of the XML data according to a Document Type Definition (DTD).
6. The computer readable storage medium of claim 1 wherein the program code further causes the apparatus to create an event based on the XML input data stream, wherein the event is created by the SAX processor module.
7. The computer readable storage medium of claim 6, wherein the event includes a variable data event for dots-per-inch printing on the media.
8. The computer readable storage medium of claim 6, wherein the event includes an event that is related to a barcode field.
9. The computer readable storage medium of claim 6, wherein the event includes a begin label SAX event.
10. A hybrid extensible markup language (XML) printer system comprising:
a print head mechanism; and
at least one memory configured to store a downloaded format template and a printer firmware, the printer firmware configured to cause the XML printer system to at least;
receive an XML input data stream;
select, based on the XML input data stream, a format template from a plurality of format templates;
11. The hybrid XML printer system of claim 10, wherein the hybrid XML printer system is a thermal printer.
12. The hybrid XML printer system of claim 10, wherein the hybrid XML printer system is a thermal transfer printer.
13. The hybrid XML printer system of claim 10, wherein the XML input data stream comprises a document type definition.
14. The hybrid XML printer system of claim 13, wherein the document type definition is identified as label.dtd.
15. The hybrid XML printer system of claim 13, wherein the document type definition comprises an attribute called_FORMAT, and wherein the format template is selected based at least in part on the attribute called_FORMAT.
16. The hybrid XML printer system of claim 13, wherein the document type definition comprises an attribute called QUANTITY that specifies a number of media to print.
receiving, by an extensible markup language (XML) processor module of a printer, an XML input data stream;
selecting, by the XML processor module and based on the XML input data stream, a format template from a plurality of format templates;
associating XML data contained in the XML input data stream with the selected format template;
formatting the associated XML data according to a format governed by the format template;
generating a printable representation of at least a portion of a media based on the formatted XML data; and
printing the printable representation by the printer.
18. The method of claim 17, wherein the format template is downloaded to the apparatus.
19. The method of claim 17, wherein the XML input data stream is received from an Oracle warehouse management system.
20. The method of claim 17, wherein the program code further causes the apparatus to validate at least a portion of the XML data according to a Document Type Definition (DTD).
US14/013,703 2001-12-17 2013-08-29 XML printer system Active US9201845B2 (en)
US34142701P true 2001-12-17 2001-12-17
US34538902P true 2002-01-04 2002-01-04
US10/197,014 US6540142B1 (en) 2001-12-17 2002-07-17 Native XML printer
PCT/US2002/036322 WO2003052658A1 (en) 2001-12-17 2002-11-13 Xml printer system
US10/332,604 US7025268B2 (en) 2001-12-17 2002-11-13 XML printer system
US10/348,422 US6655593B2 (en) 2001-12-17 2003-01-21 Native XML printer
US10/601,213 US6908034B2 (en) 2001-12-17 2003-06-20 XML system
PCT/US2004/015499 WO2005122057A1 (en) 2003-06-20 2004-05-17 Xml printer system with rfid capability
US11/010,895 US7172122B2 (en) 2001-12-17 2004-12-13 XML system
US11/351,748 US7407102B2 (en) 2001-12-17 2006-02-10 XML printer system
US11/561,084 US7959082B2 (en) 2001-12-17 2006-11-17 XML system
US11/774,152 US7959083B2 (en) 2002-07-17 2007-07-06 XML printer system
US12/551,953 US7988051B2 (en) 2001-12-17 2009-09-01 XML printer system with RFID capability
US13/102,614 US8459555B2 (en) 2001-12-17 2011-05-06 XML system
US13/157,973 US8393540B2 (en) 2001-12-17 2011-06-10 XML printer system with RFID capability
US13/160,037 US8544746B2 (en) 2001-12-17 2011-06-14 XML printer system
US13/760,716 US8820642B2 (en) 2001-12-17 2013-02-06 XML printer system with RFID capability
US13/890,908 US8919652B2 (en) 2001-12-17 2013-05-09 XML system
US14/013,703 US9201845B2 (en) 2001-12-17 2013-08-29 XML printer system
US14/923,874 US9600463B2 (en) 2001-12-17 2015-10-27 XML printer system
US13/160,037 Continuation US8544746B2 (en) 2001-12-17 2011-06-14 XML printer system
US13/760,716 Continuation-In-Part US8820642B2 (en) 2001-12-17 2013-02-06 XML printer system with RFID capability
US13/890,908 Continuation-In-Part US8919652B2 (en) 2001-12-17 2013-05-09 XML system
US10/197,014 Continuation US6540142B1 (en) 2001-12-17 2002-07-17 Native XML printer
PCT/US2002/036322 Continuation WO2003052658A1 (en) 2001-12-17 2002-11-13 Xml printer system
US10/332,604 Continuation US7025268B2 (en) 2001-12-17 2002-11-13 XML printer system
US10/601,213 Continuation-In-Part US6908034B2 (en) 2001-12-17 2003-06-20 XML system
US14/923,874 Continuation US9600463B2 (en) 2001-12-17 2015-10-27 XML printer system
US20140061318A1 US20140061318A1 (en) 2014-03-06
US9201845B2 true US9201845B2 (en) 2015-12-01
ID=33552161
US10/601,213 Active 2022-08-18 US6908034B2 (en) 2001-12-17 2003-06-20 XML system
US11/010,895 Active US7172122B2 (en) 2001-12-17 2004-12-13 XML system
US11/561,084 Active 2025-10-07 US7959082B2 (en) 2001-12-17 2006-11-17 XML system
US13/102,614 Active US8459555B2 (en) 2001-12-17 2011-05-06 XML system
US13/160,037 Active US8544746B2 (en) 2001-12-17 2011-06-14 XML printer system
US13/890,908 Active US8919652B2 (en) 2001-12-17 2013-05-09 XML system
US14/013,703 Active US9201845B2 (en) 2001-12-17 2013-08-29 XML printer system
US14/923,874 Active US9600463B2 (en) 2001-12-17 2015-10-27 XML printer system
US (8) US6908034B2 (en)
EP (4) EP1639445A4 (en)
JP (1) JP2006528384A (en)
CN (2) CN1836201A (en)
WO (2) WO2005001601A2 (en)
US6857013B2 (en) * 1999-01-29 2005-02-15 Intermec Ip.Corp. Remote anomaly diagnosis and reconfiguration of an automatic data collection device platform over a telecommunications network
US6976062B1 (en) * 1999-09-22 2005-12-13 Intermec Ip Corp. Automated software upgrade utility
EP1840854B1 (en) 2000-10-20 2011-04-06 Promega Corporation Radio frequency identification method and system of distributing products
US7959083B2 (en) * 2002-07-17 2011-06-14 Zih Corp. XML printer system
US7600685B2 (en) * 2001-12-17 2009-10-13 Zih Corp. XML printer system with RFID capability
CN1653477A (en) * 2002-05-16 2005-08-10 美国联合包裹服务公司 Systems and methods for package sortation and delivery using radio frequency identification technology
EP1406183A3 (en) * 2002-10-01 2004-04-14 SAP Aktiengesellschaft Method and system for refreshing browser pages
RU2232419C1 (en) * 2002-12-17 2004-07-10 Аби Софтвер Лтд. Computerized document input and check-up system
US7809698B1 (en) * 2002-12-24 2010-10-05 International Business Machines Corporation System and method remapping identifiers to secure files
JP2004326141A (en) * 2003-04-21 2004-11-18 Minolta Co Ltd Image processor and program
US7114654B2 (en) * 2004-04-15 2006-10-03 Printronix RFID encoder and verifier
US7114655B2 (en) * 2004-04-15 2006-10-03 Printronix EPC data manager
US9378293B2 (en) * 2004-06-03 2016-06-28 Paypal, Inc. Method and apparatus to author and manage pages of a website
US7557707B2 (en) * 2004-09-01 2009-07-07 Microsoft Corporation RFID enabled information systems utilizing a business application
US7378967B2 (en) * 2004-09-09 2008-05-27 The Gillette Company RFID tag sensitivity
US20060071063A1 (en) * 2004-09-29 2006-04-06 Duckett Jeanne F RFID printer system, method of printing and sets of record members
JP2008539487A (en) * 2005-04-27 2008-11-13 ジャストシステムズ カナダ インコーポレイテッド System and method for providing a data format
US8302002B2 (en) * 2005-04-27 2012-10-30 Xerox Corporation Structuring document based on table of contents
US20060271850A1 (en) * 2005-05-06 2006-11-30 Didier Gombert Method and apparatus for transforming a printer into an XML printer
US7455218B2 (en) * 2005-06-20 2008-11-25 Microsoft Corproation Rich object model for diverse Auto-ID tags
US20070013941A1 (en) * 2005-07-18 2007-01-18 Zih Corp. System, printer, and method for distributing data to a plurality of printers
US20070130513A1 (en) * 2005-12-05 2007-06-07 Xerox Corporation Printing device with an embedded extensible stylesheet language transform and formatting functionality
US7506803B2 (en) * 2005-12-15 2009-03-24 United Parcel Service Of America, Inc. Systems and methods for validating RFID tag data prior to writing into RFID tag
US8261187B2 (en) 2005-12-22 2012-09-04 Xerox Corporation System and method for managing dynamic document references
US7917845B2 (en) * 2005-12-22 2011-03-29 Xerox Corporation System and method for managing dynamic document references
US8775933B2 (en) 2005-12-22 2014-07-08 Xerox Corporation System and method for managing dynamic document references
US8250468B2 (en) * 2005-12-22 2012-08-21 Xerox Corporation System and method for managing dynamic document references
US9460060B2 (en) * 2005-12-22 2016-10-04 Xerox Corporation System and method for managing dynamic document references
US7756747B2 (en) * 2006-03-10 2010-07-13 Microsoft Corporation RFID business process-decoupling of design and deployment time activities
US8310533B2 (en) * 2006-03-27 2012-11-13 GE Sensing & Inspection Technologies, LP Inspection apparatus for inspecting articles
CN1967580B (en) 2006-04-04 2010-10-27 华为技术有限公司 Realizing method of electronic bill
US7292160B1 (en) * 2006-04-19 2007-11-06 Microsoft Corporation Context sensitive encoding and decoding
US7720809B2 (en) * 2006-06-06 2010-05-18 Microsoft Corporation Application integration using XML
US7956724B2 (en) * 2006-06-15 2011-06-07 Microsoft Corporation Support for reliable end to end messaging of tags in an RFID infrastructure
US7868738B2 (en) * 2006-06-15 2011-01-11 Microsoft Corporation Device simulator framework for an RFID infrastructure
US7675418B2 (en) * 2006-06-15 2010-03-09 Microsoft Corporation Synchronous command model for RFID-enabling applications
US7798408B2 (en) * 2006-07-10 2010-09-21 Hand Held Products, Inc. Apparatus and methods for controlling an imager
US20080043277A1 (en) * 2006-08-18 2008-02-21 Xerox Corporation Printing system and method
US8360315B2 (en) 2007-03-02 2013-01-29 Harold Szu Smart hybrid card system providing authenticity, privacy, and security (APS)
US7898417B2 (en) * 2007-03-26 2011-03-01 Microsoft Corporation Standardized mechanism for printing labels and managing templates within RFID
FR2917207A1 (en) * 2007-06-07 2008-12-12 Inside Contactless Sa Device for domestic printing comprising contactless personalization means
US20090007115A1 (en) 2007-06-26 2009-01-01 Yuanhao Sun Method and apparatus for parallel XSL transformation with low contention and load balancing
US8156432B2 (en) 2007-11-14 2012-04-10 Zih Corp. Detection of UTF-16 encoding in streaming XML data without a byte-order mark and related printers, systems, methods, and computer program products
JP5381009B2 (en) * 2008-10-20 2014-01-08 セイコーエプソン株式会社 Device control system
JP2012079085A (en) * 2010-10-01 2012-04-19 Seiko Epson Corp Printer with rfid writer, and rfid-attached printing medium issuing system
CN102446181A (en) * 2010-10-09 2012-05-09 广东省农业科学院科技情报研究所 XML-Based ISO15693 electronic tag data transformation method
US9009472B2 (en) * 2011-10-13 2015-04-14 International Business Machines Corporation Providing consistent cryptographic operations
CA2852480C (en) 2011-10-21 2017-03-21 David Ray Salzman Systems and methods for collecting primary and secondary data associated with shipping containers
US8706754B2 (en) 2012-01-27 2014-04-22 MicroTechnologies LLC System and method for integrating knowledge engines in a cloud computing environment
US9213580B2 (en) 2012-01-27 2015-12-15 MicroTechnologies LLC Transportable private cloud computing platform and associated method of use
US9294552B2 (en) 2012-01-27 2016-03-22 MicroTechnologies LLC Cloud computing appliance that accesses a private cloud and a public cloud and an associated method of use
KR101325625B1 (en) * 2012-09-28 2013-11-06 한미아이티 주식회사 Apparatus and method for providing product code and computer-readable recording medium thereof
CN103914933B (en) * 2012-12-30 2017-06-30 航天信息股份有限公司 One kind of method and apparatus based on the receipt printing technology xml
US9098558B2 (en) * 2013-04-01 2015-08-04 Oracle International Corporation Enhanced flexibility for users to transform XML data to a desired format
JP2015215706A (en) * 2014-05-08 2015-12-03 株式会社東芝 Data processor for issuing ic card, ic card issuance device, ic card issuance system, data processing program for issuing ic card, and ic card issuance program
CN104506464A (en) * 2014-12-12 2015-04-08 北京中科江南软件有限公司 Electronic message parsing component based on node descriptors
CN104991993A (en) * 2015-06-09 2015-10-21 北京红马传媒文化发展有限公司 Site information graph processing method
JP6515729B2 (en) 2015-08-06 2019-05-22 セイコーエプソン株式会社 Printer control method, program, storage medium, and printer
TWI651655B (en) * 2017-12-15 2019-02-21 宏通數碼科技股份有限公司 Electronic display card and its manufacturing method
US5527407A (en) 1992-12-30 1996-06-18 The Goodyear Tire & Rubber Company Apparatus and method for marking a rubber article with a message readable by a light scanning device
US6154378A (en) 1998-04-29 2000-11-28 Lockheed Martin Corporation Polyphase inverter with neutral-leg inductor
WO2001006345A1 (en) 1999-07-14 2001-01-25 Fargo Electronics, Inc. Identification card printer with client/server
CN1287922A (en) 1999-09-14 2001-03-21 普林昌尼克斯股份有限公司 System for bar codes calibration and printing
WO2001030581A1 (en) 1999-10-29 2001-05-03 Zih Corporation Printer programming tool and method
GB2359645A (en) 1999-09-20 2001-08-29 Dell Products Lp Using scripts to generate style and content for XML documents
US6289501B1 (en) 1999-03-31 2001-09-11 Unisys Corp. Method for generating simple document type definitions
US6305605B1 (en) 1999-08-09 2001-10-23 John W. Goetz Multiple-casualty incident patient tracking
JP2002103746A (en) 2000-09-28 2002-04-09 Toshiba Tec Corp Method of printing barcode corresponding to xml data
JP2002108850A (en) 2000-09-28 2002-04-12 Fujitsu Ltd Device for transforming structured document having hierarchical structure
US20020112224A1 (en) 2001-01-31 2002-08-15 International Business Machines Corporation XML data loading
US6457883B1 (en) 1999-06-30 2002-10-01 Silverbrook Research Pty Ltd Interactive printer reward scheme
WO2002082363A1 (en) 2001-04-04 2002-10-17 Koninklijke Philips Electronics N.V. Internet enabled houselhold applicance for processing bar code or rfid tags
US6540142B1 (en) * 2001-12-17 2003-04-01 Zih Corp. Native XML printer
CN1409668A (en) 1999-12-15 2003-04-09 法格电子公司 Identification card personalization device with web broawser
US20030090712A1 (en) 1999-07-14 2003-05-15 Lenz Gary A. Identification card printer with client/server
TW578064B (en) 2002-12-25 2004-03-01 Inst Information Industry Conversion device and method for formatted table of hypertext markup language
US20050246694A1 (en) 1999-07-26 2005-11-03 Microsoft Corporation Methods and apparatus for parsing extensible markup language (XML) data streams
US20050262049A1 (en) 2004-05-05 2005-11-24 Nokia Corporation System, method, device, and computer code product for implementing an XML template
US7126716B1 (en) 1999-08-20 2006-10-24 Zih Corp. Printer for printing labels, tags or the like
US20060249566A1 (en) 2001-12-17 2006-11-09 Zih Corporation Xml printer system with rfid capability
US58469A (en) * 1866-10-02 Improvement in well-packings
EP2375320A3 (en) * 2001-06-30 2012-07-11 Cokinetics Systems An internet interface and integration language system and method
US6568586B1 (en) * 2002-08-06 2003-05-27 Domino's Pizza Pmc, Inc. Foldable cardboard food box having food receptacle and dip tray
2003-06-20 US US10/601,213 patent/US6908034B2/en active Active
2004-05-14 EP EP04752405A patent/EP1639445A4/en not_active Ceased
2004-05-14 CN CNA200480023568XA patent/CN1836201A/en not_active Application Discontinuation
2004-05-14 WO PCT/US2004/015384 patent/WO2005001601A2/en active Application Filing
2004-05-14 EP EP10183493A patent/EP2284767A3/en not_active Withdrawn
2004-05-17 CN CN2004800235694A patent/CN1836243B/en active IP Right Grant
2004-05-17 JP JP2006521056A patent/JP2006528384A/en active Pending
2004-05-17 WO PCT/US2004/015499 patent/WO2005122057A1/en active Application Filing
2004-05-17 EP EP04752504A patent/EP1639517A4/en not_active Ceased
2004-05-17 EP EP10184234A patent/EP2275967A3/en not_active Ceased
2004-12-13 US US11/010,895 patent/US7172122B2/en active Active
2006-11-17 US US11/561,084 patent/US7959082B2/en active Active
2011-05-06 US US13/102,614 patent/US8459555B2/en active Active
2011-06-14 US US13/160,037 patent/US8544746B2/en active Active
2013-05-09 US US13/890,908 patent/US8919652B2/en active Active
2013-08-29 US US14/013,703 patent/US9201845B2/en active Active
2015-10-27 US US14/923,874 patent/US9600463B2/en active Active
US7339690B2 (en) 1999-07-14 2008-03-04 Fargo Electronics, Inc. Identification card printer with client/server
US7267279B2 (en) 2001-05-30 2007-09-11 Tripletail Ventures, Inc. Method for tagged bar code data interchange
US7733509B2 (en) 2001-09-26 2010-06-08 Infoprint Solutions Company, Llc Method and apparatus for printing XML directly using a formatting template
CN1605081B (en) 2001-12-17 2011-08-31 Zih公司 Xml printer system
US20060138227A1 (en) 2001-12-17 2006-06-29 Zih Corp. XML printer system
US7172122B2 (en) * 2001-12-17 2007-02-06 Zih Corp. XML system
US6655593B2 (en) 2001-12-17 2003-12-02 Zih Corp. Native XML printer
US7407102B2 (en) * 2001-12-17 2008-08-05 Zih Corp. XML printer system
WO2003052658A1 (en) 2001-12-17 2003-06-26 Zih Corp. Xml printer system
US20030136841A1 (en) * 2001-12-17 2003-07-24 Zih Corp. Native XML printer
WO2005122057A1 (en) 2003-06-20 2005-12-22 Zih Corp. Xml printer system with rfid capability
2 pages entitled Toshiba TEC Corporation-Toshiba TEC introduces B-482 with the following invaluable network capability. (1999) Applicant submits that it was aware of the product more than one year prior to the filing of the above-identified patent application.
Anderegg, J.U.; "SVG and Image "Caching"-Page Fore-/Backgrounds-Transparency" FOP-DEV Mailing List Jan. 24, 2003, Downloaded at: http://mail-archives.apache.org/mod-mbox/xmlgraphics-fop-dev/200301.mbox/%3cLOEDKBFMBBGFAPEJNBCOEEAACHAA.hansuli.anderegg@bluewin.ch%3e; Jul. 14, 2010; 3 sheets.
Application Development Trends Apr. 1999, XML The Last Silver Bullet, J. Vaughan (4page magazine article).
Auto-ID Center Uses Physical Markup Language in Radio Frequency Identification (RFID) Tag Technology, Cover Pages, http://xml.coverpages.org/ni2001-11-21-c.html, created Nov. 21, 2001.
Böhm, Klemens; "On Extending the XML Engine with Query-Processing Capabilities"; Proceedings of the IEEE Advances in Digital Libraries; 2000; IEEE Computer Society Washington, DC, USA; May 2000; pp. 127-138.
Chicago Tribune, Dec. 4, 2000, New Computer Language to Streamline Business-to-Business e-commerce (1 page).
Extended Search Report for European Patent Application No. 10 18 3493 completed Mar. 18, 2011
Extended Search Report for European Patent Application No. 10 18 9303 completed Jul. 12, 2011.
Final Notice of Allowance for U.S. Appl. No. 13/160,037, dated May 29, 2013.
First Notice of Allowance for U.S. Appl. No. 13/160,037, dated Jun. 11, 2012.
Infoworld, Sep. 4, 2000, www.infoworld.com, EDI-to-XML Conversions Getting. A Boost, Ephraim Schwartz (1 page magazine article).
International Business Machines Corporation, "A Process for Optimized Application of XSL Stylesheets for Use With Partially Static XML Data Streams", Research Disclosure, Mason Publications, whole document, Apr. 2000 , vol. 432, No. 179.
International Preliminary Examination Report for Application No. PCT/US2002/036322; dated Jul. 17, 2003.
International Search Report and Written Opinion for Application No. PCT/2004/15499, dated May 6, 2005.
International Search Report-International Application No. PCT/US02/36322, dated Dec. 19, 2002.
JetForm XFA-JetForm XML Forms Architecture XFA.org (17 page power point presentation). Applicant submits that it was aware of this document more than one year prior to the filing of the above-identified patent application.
Kay M., "XSLT Part 2-How Does XSLIT Transform XML?", Internet Citation, http://web.archive.org/web/20011124080629/http://tutorials.beginners.co.uk/read/id/143; Nov. 24, 2001 (retrieved on May 25, 2004).
Notice of Allowance for U.S. Appl. No. 11/561,084, dated Jan. 28, 2011.
Notice of Allowance for U.S. Appl. No. 11/774,152, dated Feb. 9, 2011.
Notice of Allowance for U.S. Appl. No. 12/551,953, dated Mar. 23, 2011.
Notice of Allowance for U.S. Appl. No. 13/102,614, dated Feb. 12, 2013.
Notice of Allowance for U.S. Appl. No. 13/157,973, dated Nov. 26, 2012.
Notice of Allowance for U.S. Appl. No. 13/760,716, dated May 1, 2014.
Oakley, et al.; "Page Description Languages: Development, Implementation and Standardization"; Electronic Publishing; vol. 1(2); 79-96; Sep. 1988.
Office Action for U.S. Appl. No. 11/561,084, dated Mar. 16, 2010.
Office Action for U.S. Appl. No. 11/774,152, dated Apr. 13, 2010.
Office Action for U.S. Appl. No. 12/551,953, dated Mar. 1, 2010.
Office Action for U.S. Appl. No. 13/160,037, dated Jan. 27, 2012.
Office Action from European Application No. 02789602, dated Aug. 8, 2012.
Office Action from European Application No. 04752504, dated Aug. 8, 2012.
Office Action from U.S. Appl. No. 11/561,084, mailed Aug. 3, 2010.
Office Action from U.S. Appl. No. 11/774,152, mailed Aug. 4, 2010.
Office Action from U.S. Appl. No. 12/551,953, mailed Sep. 29, 2010.
Office Action from U.S. Appl. No. 13/102,614, mailed Jun. 14, 2012.
Office Action from U.S. Appl. No. 13/102,614, mailed Sep. 26, 2012.
Office Action from U.S. Appl. No. 13/157,973, mailed Jun. 7, 2012.
Office Action from U.S. Appl. No. 13/160,037, mailed Nov. 23, 2012.
Office Action from U.S. Appl. No. 13/160,716, mailed May 22, 2013.
Office Action from U.S. Appl. No. 13/760,716, dated Jan. 16, 2014.
Office Action from U.S. Appl. No. 13/890,908, dated Dec. 30, 2013.
Sandstrom, A: "Announce: FOP 0.16 Release" XSL-List Mailing List Jan. 2, 2001; Downloaded at: URL:http://xml.coverpages.org/fop16-Ann.html; Jul. 14, 2010; 2 sheets.
Schneider, B., "Dynamic Web Presentation with Java and XSLT"; [Online]; [Retrieved on Nov. 22, 2006]; Retrieved from the Internet <URL:http://www.eveandersson.com/arsdigita/asj/xslt; XP002408527; Jun. 5, 2001; 8 pages.
Search Report for European Patent Application No. 10 18 4234 dated Jan. 21, 2011.
Summons to Attend Oral Proceedings Pursuant to Rule 115(1) EPC dated Feb. 3, 2015.
Toshiba TEC Corporation Bar Code Systems Engineering Dept., Web Printer XML Function, Sep. 20, 2000 (7 page power point presentation).
X Marks the Spot, Apr. 1999; D.Andrews, website article http://www.idsystems.com/reader/1999-04 infolink/xm110499.htm (3 page website article).
EP2284767A2 (en) 2011-02-16
US8544746B2 (en) 2013-10-01
WO2005001601A2 (en) 2005-01-06
US20050150953A1 (en) 2005-07-14
CN1836243A (en) 2006-09-20
US7172122B2 (en) 2007-02-06
EP2275967A3 (en) 2011-02-23
CN1836243B (en) 2011-06-08
EP2284767A3 (en) 2011-04-27
US20140061318A1 (en) 2014-03-06
EP1639517A1 (en) 2006-03-29
EP1639517A4 (en) 2008-04-09
US20110303753A1 (en) 2011-12-15
EP1639445A4 (en) 2008-04-16
US20070125859A1 (en) 2007-06-07
WO2005122057A1 (en) 2005-12-22
US8459555B2 (en) 2013-06-11
US20110303749A1 (en) 2011-12-15
US20140049796A1 (en) 2014-02-20
US20160048496A1 (en) 2016-02-18
JP2006528384A (en) 2006-12-14
EP2275967A2 (en) 2011-01-19
EP1639445A2 (en) 2006-03-29
US9600463B2 (en) 2017-03-21
US20040149826A1 (en) 2004-08-05
US7959082B2 (en) 2011-06-14
WO2005001601A3 (en) 2005-04-14
US8919652B2 (en) 2014-12-30
US6908034B2 (en) 2005-06-21
CN1836201A (en) 2006-09-20
JP4355639B2 (en) 2009-11-04 Image processing apparatus and control method thereof
EP1920350B1 (en) 2017-09-27 Markup based extensibility for user interfaces
US7146564B2 (en) 2006-12-05 Extensible stylesheet designs using meta-tag and/or associated meta-tag information
US7194485B2 (en) 2007-03-20 Mapping XML schema components to qualified java components
EP1325432B1 (en) 2008-07-23 Method of and software for recordal and validation of changes to markup language files
DE60220662T2 (en) 2008-02-07 Method and system for outputting xml data based on pre contexts and a document object model
US7434157B2 (en) 2008-10-07 Programmable object model for namespace or schema library support in a software application
CA2368089C (en) 2010-11-16 Providing clients with services that retrieve data from data sources that do not necessarily support the format required by the clients
US20040135805A1 (en) 2004-07-15 Document composition system and method
CN100520716C (en) 2009-07-29 Code automatically generating device based on model component, system and method
US7152062B1 (en) 2006-12-19 Technique for encapsulating a query definition
US6912529B1 (en) 2005-06-28 Method and system for storing and retrieving documents
US20040205571A1 (en) 2004-10-14 Method and system for stylesheet-centric editing
US20040049738A1 (en) 2004-03-11 Computer implemented system and method of transforming a source file into a transfprmed file using a set of trigger instructions
US20010054172A1 (en) 2001-12-20 Serialization technique
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ALLESHOUSE, BRUCE N.;REEL/FRAME:031531/0303