Roughly speaking there are two kinds of programs these days. I will call them hard and soft here. I will grant at the beginning that I like hard programs but also admit that soft programs are necessary for my life style. I may never write a good soft program.
Hard programs adapt some one or a few algorithms which are at the root of the solution of some problem. Soft programs deal in ill-structured data by applying heuristics. Hard programs may come with crisp specifications and criteria for successful answers. Hard programs can often be said to be correct. Soft programs can be clearly wrong, but never clearly right. Soft programs often have GUI’s and are many megabytes in size. More often hard programs are small. Soft programs often have hard components. Google search is a soft program with many hard components. A compiler is a large hard program.
This fuzzy data is the opposite of abstraction, which aims to limit a form of data to a fixed piece of code. I like abstraction as it lets you know for sure, at some low level at least, what the data means.
XML also flies in the face of data base designers who insist on vetting data before it gets into a data base to better ensure that the data’s meaning suits the uses of the data base.