Overview
KML (formerly Keyhole Markup Language) is an XML language for online mapping, for making geospatial observations, and for controlling your geographic browser experience. KML is supported by Google Earth, Google Maps, MS Virtual Earth, and a number of GIS and spatial software products.
KML is intended primarily as a language for presentation and browser navigation (e.g. “look here”), and provides a rich set of capabilities for that purpose. KML is not intended to describe geographic objects in the sense of GML, and does not provide facilities to create a named kind of geographic entity (e.g. a Road or Building). It can transport a certain amount of data that can be related to a visualization through the use of the <ExtendedData> element added in KML V2.2. KML can transport GML inside an ExtendedData element, however, this GML data is NOT processed (nor is any other ExtendedData content not in the KML namespace) in anyway by the Google Earth browser.
KML is place centric and its dominant element is the . Placemarks can be aggregated into Folders and these in turn can be composed into Folder hierarchies. KML Placemarks can contain geometric elements, but there is no mechanism to express the role of the geometric element in relation to the Placemark. One can say that the geometry IS the Placemark (i.e. place mark). Such an approach is entirely appropriate for a presentation language.
KML can be returned by a Web Map Service (WMS) as an alternative to SVG or image formats such as TIFF or JPG. KML can also be generated by the styling of GML using tools such as the Galdos FreeStyler Feature Portrayal Service (a component WMS).
For details on KML see:
Google KML documentation: http://code.google.com/apis/kml/documentation/
Topics in KML: http://code.google.com/apis/kml/documentation/topicsinkml.html
KML 2.2 reference (beta): http://code.google.com/apis/kml/documentation/kml_tags_beta1.html
KML 2.2 schema (beta): http://code.google.com/apis/kml/schema/kml22beta.xsd
For automated validation of KML see:
Google KML Developer Support: http://groups.google.com/group/kml-support

