Tei,
I think you're missing the point. All of the examples you give are valid, but this validation is extrinsic - it is something that is determined not by the data language itself, which is more or less typeless, but by an arbitrary external schema language: xsd, schematron or roll-your-own. Chances are, if you're doing external processing with this data, such a schema definition can prove useful, but there is in general no one "correct" schema for any given instance..
On 13 November 2013 06:41, Kurt Cagle <kurt.cagle@gmail.com> wrote:
The biggest problem with constraints that I've seen has to do with the fact that data itself, in the real world, has this very annoying tendency to morph over time. That's in great part because programmers do not think in terms of resources that evolve but data structures that represent state that is most useful to them, something that strong typing in particular has reinforced. XML was a radical departure from that model - unlike databases, where type was intrinsic, atomic, and implicit to the implementation, and binary objects, which similarly placed constraints upon type for optimization, XML was extrinsically typed, in an advisory rather than compulsory fashion.I think this is a lesson lost on many corporate developers who see XML only as an intermediation format from one strongly typed object to another (I've often wondered whether so much of the bad press that XML gained would have been spared if JSON had come out a few years earlier, and whether it would be JSON that would be villified as being too unwieldy as an object broker language, when the real culprit was the tendency for application developers to put too much of the business logic of an application, rather than more generic system logic, into heavyweight OOP in the first place).
For anyone wondering how it look wen a Black River meets a Brown River:
http://i.imgur.com/biLWdoE.jpg
For a C programmer, false is false, but the string "false" is true. So <data>false</data> is true or false depending on interpretation. If represents the string "false", then is true, but if it represents the boolean false, is false.
C programmers make a assumption about data, != 0 is true. ==0 is false.In spanish, you can write Hombre/Mujer as H/M, but also as Varon/Hembra V/H, or as Femenino/Masculino F/M, so if you find <genero>M</genero> without any other information, that can be a women, or a men.
<data>false</data> this is true or false<genero>M</genero> this can be "Mujer" or "Masculino"