The XML Checker performs 3 tests on a map XML file. First, it checks that the file contains well-formed XML, searching for mistakes like unclosed tags or improperly nested tags (e.g. <a><b></a></b>). Then it valdates the XML syntax against a Relax NG schema, which is a set of rules that describes which tags are allowed and where. Finally it checks the semantics of the XML, specifically for the following errors and warnings:
Warning: No other countries border on X (it cannot be conquered)
Warning: Territory X has no borders
Error: Territory X has border Y which does not exist as a territory
Warning: Territory X has border Y, but not vice versa
Error: Territory X borders on itself
Error: Territory X has mutiple border entries for Y
Error: Territory X has bombardment Y which does not exist as a territory
Error: Territory X bombards itself
Error: Territory X has mutiple bombardment entries for Y
Error: Territory X has mutiple entries
Warning: No continents found
Error: Continent X has component Y which does not exist as a territory
Error: Continent X has mutiple component entries for Y
Error: Continent X has component Y which has not been previously defined as a continent
Error: Continent X has itself as a component
Error: Continent X has required amount higher than number of components
Error: Continent X has override Y which does not exist as a continent
Error: Continent X has mutiple override entries for Y
Error: Continent X overrides itself
Error: Objective X has component Y which does not exist as a territory
Error: Objective X has mutiple component entries for Y
Error: Reinforcement X - Y has lower limit greater than upper limit
Error: Reinforcement X - Y has divisor of zero
Error: Position X has component Y which does not exist as a territory
Error: Position X has component Y with zero starting armies
Error: Mutiple positions contain component X