Remember ObsRSS, the brainchild of sensor-web weaver Jeremy Cothran that adds some metadata tags to the RSS XML schema? Now he’s come up with ObsKML, which does the same for KML.
For a detailed discussion and examples, this is the thread you need over on Google Earth Community.
Jeremy’s motivation?
It would be great if Google or some group or organization could throw some more attention on this issue in regards to KML. KML standardizes the ‘where’ and ‘when’ information within a popular and easy xml standard and it would be interesting to see the ‘what’ part of this data stream standardized also. Separating data content from data display into a more standardized xml schema would allow KML to enable better end user data reuse, aggregation and styling needs.
As far as I understand it, KML is a tradeoff between ease and power. For a fully descriptive mark-up language that properly separates style from content, try GML, though it is harder to use.
I think you can have ease while still separating style from content. You have a ‘style’, something like CSS, that says when to apply certain stylings (color in the ‘body’ is ‘#a3dd77’ in css / color on ‘streets’ is ‘#a3dd77’ in geo). This could even be included in the same file, but should be conceptually different (specified as a separate piece) so others can easily override.
To accomplish this in practical terms you would just have to have to give placemarks ids, like how styles have ids, and allow styles to refer to placemark ids, instead of vice versa. In the naive way this ends up kind of lame, a specific style for each placemark. But it opens the possibility of including rules in styles – the equivalant of ‘body’ or ‘h3’ in css – so roads with a title that starts with ‘Highway’ are 5 pixels thick and blue, or buildings with an ‘extrude’ greater than 20 are red, or placemark ids between roads.50 and roads.200 get a happy face icon.
If Google is serious about standardizing KML then separating data from presentation is one of the most important things to be done, imho. Doesn’t need to be complete, and break backwards compatibility. But there should be an option.