D.2 Data Model

The Data Model is returned as a structure by mxlparser.dll upon completion of the parse. All text items in it are in UTF-32 strings, zero-terminated, for which length is also given in the structure:

typedef unsigned char unc;
typedef unsigned long unl;
struct element {  // data model uses one top element per doc
 unl *name;       // array of UTF-32 chars
 long namelen;
 pair **attrs;    // array of attribute pairs
 long attrcnt;
 cont **content;  // arrays of element ptrs or UTF-32 chars
 long contcnt;
};
struct pair {
 unl *name;      // attribute name, UTF-32
 long namelen;
 unl *val;       // attribute value, UTF-32
 long vallen;
};
struct cont {
 void *it;       // ptr to array of UTF-32 chars or element
 long cnt;       // count if chars, 0 if element
};

For convenient study, the driver converts the structure to JSON format as used in the spec, and writes it to stdout (or to a specified file) at completion. Here is what it produces for the sample in par. 3.1 of the spec:

[ "comment",
	{	"lang": "en",
		"date": "2012-09-11"
	}, 
	[	"\nI ",
		[ "em", {}, [ "love" ]
		],
		" \u00B5XML!",
		[ "br", {},  []
		],
		"\nIt's so clean & simple."
	]
]

This is slightly different formatting from the spec, as we wanted to make all braces and brackets have matching start and end columns when they held more than one item.

Previous Topic:  D.1 MXL Operation

Next Topic:  D.3 SAX Callbacks

Parent Topic:  Appendix D. MXL MicroXML Parser

Sibling Topics:

D.1 MXL Operation

D.3 SAX Callbacks

D.4 Licensing