Expat, being an event-based parser, processes your XML document and reports events through callback functions you specify. To give you an idea how it works, consider the following XML:
ASP is better than PHP
As you can see, the XML contains only one element, "<lie>", which is the root element. When this element is encountered by Expat, it calls the function you specified for the start of an element, passing in the parameter "lie". Then it calls the function you specified for handling character data, passing the parameter "ASP is better than PHP". Finally, it reads "</lie>", and calls the function you provided for closing elements, passing in "lie" again.
When PHP calls your function for starting element, it also passes in an array of attributes that parameter has. This is shown below:
ASP is 20% more popular than PHP
In that example, PHP would pass an array to your start element function containing one element - "type", with the value "statistic".
Now you have an idea of how an event-based parser works, we can take a look at how PHP implements Expat.