One of the advantages of Schematron is that because the assertion text and diagnostics text are part of the schema, not built into the validator, a user who is distanced from the markup (e.g. by a GUI) can be given diagnostic information in terms of the application domain and even the GUI rather than just in terms of the invisible XML.
But nevertheless very often system-specific details can emerge despite out best efforts, like farts in an elevator and about as desirable.
PRESTO is a set of conventions I have been working on recently, and one of the advantages that recently came out from it is that because the URLs are meaningful to users, it is not so tragic if they emerge into the user’s notice. Just like a good Schematron diagnostic, they give system-level information in terms of how the user thinks, as much as that may be practical, rather than being limited to throwing deployment-contaminated muck at the user.