Introduction
The WiX team has chosen to use XML as its modus operandi. It's a good thing that they have, because the declarative syntax of XML lends itself well to changing the state of the end user's computer without being tied to the details of how it was done. If they had chosen a procedural language instead, such as C, then we would be obliged to write functions to perform installation tasks. Other installers, such as NSIS, take the procedural route.
The problem with a procedural approach is that it's implementation-specific. If working with a Windows XP filesystem is different than working with a Windows 10 filesystem, then we will need to have branching logic to call a different function depending on where our installer runs. XML lets us declare what we want the state of the system to look like and Windows Installer takes care of the details of making it happen. Truth be told, the Windows Installer platform is itself declarative. Behind the scenes, it creates tables of relational data...