Three parts:
A data model for XML documents based on the XML Infoset
A mathematically precise query algebra; i.e. a set of query operators on that data model
A query language based on these query operators and this algebra