Hi There!
I've gotten a task to send information to a label printer that a customer has purchased for a project,
The issue is it can only handle two languaged, XML and ZPL. I am not at all familiar with those and i am unsure how i can turn a string with the Label information into those formats. I've asked the Supplier of the Printer on this and i only got some vauge answers, i'll attach the answers i got at the bottom. If anyone here got some suggestions or have dealt with something like this before then i'd be happy to learn!
XML Answer:
<?xml version="1.0" standalone="no"?>
<labels _FORMAT="E:kleinaldi.ZPL" _QUANTITY="1" _PRINTERNAME="ZDesigner for Developers - Generic Printer 200dpi" _JOBNAME="Test">
<label>
<variable name="Grades">L</variable>
<variable name="MHDdatum">99999</variable>
<variable name="Kuhldatum">99999</variable>
<variable name="MHDdatumATC">999999</variable>
<variable name="Producer1">1-DEF-99999</variable>
<variable name="Producer2">2-DEF-999999</variable>
<variable name="Bahn">99999</variable>
</label>
</labels>```
ZPL Answer:
```CT~~CD,~CC^~CT~
^XA
^DFE:kleinaldi.ZPL^FS
^LT16
^PON
^LH0,0
^XA
^XFE:kleinaldi.ZPL^FS
^CI28^FN1^FH\^FDL^FS^CI27
^CI28^FN2^FH\^FD02.09^FS^CI27
^CI28^FN3^FH\^FD27.08^FS^CI27
^CI28^FN4^FH\^FDGEF000209^FS^CI27
^CI28^FN5^FH\^FD1-DE-12345^FS^CI27
^CI28^FN6^FH\^FD2-DE-1500603^FS^CI27
^CI28^FN7^FH\^FD1^FS^CI27
^PQ1,0,1
^XZ
Something like this??
What I did is assign the xml variables to global variables in node-red (global.set)
then send the ZPL code to the printer with the delimited global.get
Hint: Zebra printers use port 9100 for ZPL so use a TCP node to send your code to it
if your not sure I can post my ZPL code for you
Something like that yes, I am not sure if they will be using that many variables as you got but i'd love to take a look at how you did it 
go here Labelary Online ZPL Viewer and design your label
copy and paste the ZPL code into a function node sending the code as the payload
if you want variables you can in use node-red globals like this
msg.payload = "^XA ^CFA,30 ^FO50,300^FDTicket Number: "+global.get(Ticket)+"^FS ^FO50,330^FDRego:"+rego+"^FS ^FO50,360^FDColour: "+color+"^FS ^FO50,390^FDMake: "+make+"^FS ^FO50,420^FDModel: "+model+"^FS ^FO50,450^FDDate/Time: "+datetime+"^FS ^FO50,480^FDJob Origin: "+originsub+"^FS ^FO50,510^FDTime Printed: "+timeprinted+"^FS ^FO50,540^FDNotes: "+global.get(notes)+"^FS ^CFA,32 ^FX Third section with bar code. ^BY5,2,270 ^FO100,590^BC^FD12345678^FS ^FO50,950^FDRelease Date: "+global.get(release)+"^FS ^XZ"
return msg;
i will try that!
Just a question about this, i forgot to mention that we are going to take the variables for a SQL Database, so they will be ever changing, not staying the same as this printer will handle boxes coming from 4 different zones that will run different orders, but this would still work? 
Sorry mate... Im not sure of your workflow.
I think your saying the data changes so therefore your labels have dynamic values?
You will need to work out a print queue and work out a way to flag that the label has been printed as well