Give them a corrupted file and you'll get an error message.
XML applications are just the same: they contain a parser which reads XML and identifies the function of each the pieces of the document, and it then makes that information available in memory to the rest of the program. As the component parts of the program are identified, a validating parser can compare them with the pattern laid down by the DTD or Schema, to check that they conform.
While reading an XML file, a parser checks the syntax (pointy brackets, matching quotes, etc) for well-formedness, and reports any violations (reportable errors). In the process, default values and datatypes (if specified) can be added to the in-memory result of the validation that the validating parser gives to the application.(and lots of other stuff too).
This ends up as a kind of family-tree structure in the application's memory (tree structures are a common way for programs to store related data).
HTML pages include a document type declaration (sometimes referred to as !