Since http://wiki.openstreetmap.org/wiki/API_v0.6/XSD is outdated and not valid now, I created xsd for osm files.
I tested it by files from http://download.geofabrik.de/
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="osm">
<xs:complexType>
<xs:sequence>
<xs:element ref="bounds" />
<xs:element ref="node" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="way" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="relation" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="version" type="xs:float" use="required" fixed="0.6" />
<xs:attribute name="generator" type="xs:string" use="optional" />
<xs:attribute name="copyright" type="xs:string" use="optional" />
<xs:attribute name="attribution" type="xs:string" use="optional" />
<xs:attribute name="license" type="xs:string" use="optional" />
<xs:attribute name="timestamp" type="xs:dateTime" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="bounds">
<xs:complexType>
<xs:attribute name="minlat" type="Lat" use="required" />
<xs:attribute name="minlon" type="Lon" use="required" />
<xs:attribute name="maxlat" type="Lat" use="required" />
<xs:attribute name="maxlon" type="Lon" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="node">
<xs:complexType>
<xs:complexContent>
<xs:extension base="osmBasicType">
<xs:sequence>
<xs:element ref="tag" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="lat" type="Lat" use="required" />
<xs:attribute name="lon" type="Lon" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="way">
<xs:complexType>
<xs:complexContent>
<xs:extension base="osmBasicType">
<xs:sequence>
<xs:element ref="nd" minOccurs="1" maxOccurs="unbounded" />
<xs:element ref="tag" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="relation">
<xs:complexType>
<xs:complexContent>
<xs:extension base="osmBasicType">
<xs:sequence>
<xs:element ref="member" minOccurs="1" maxOccurs="unbounded" />
<xs:element ref="tag" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="tag">
<xs:complexType>
<xs:attribute name="k" type="xs:string" use="required" />
<xs:attribute name="v" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="nd">
<xs:complexType>
<xs:attribute name="ref" type="ID" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="member">
<xs:complexType>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="way" />
<xs:enumeration value="node" />
<xs:enumeration value="relation" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ref" type="ID" use="required" />
<xs:attribute name="role" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:simpleType name="Lat">
<xs:restriction base="xs:float">
<xs:minInclusive value="-90" />
<xs:maxInclusive value="90" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Lon">
<xs:restriction base="xs:float">
<xs:minExclusive value="-180" />
<xs:maxInclusive value="180" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ID">
<xs:restriction base="xs:long">
<xs:minInclusive value="1" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="osmBasicType">
<xs:attribute name="id" type="ID" use="required" />
<xs:attribute name="uid" type="xs:int" use="optional" />
<xs:attribute name="user" type="xs:string" use="optional" />
<xs:attribute name="timestamp" type="xs:dateTime" use="optional" />
<xs:attribute name="changeset" type="xs:int" use="optional" />
<xs:attribute name="version" type="xs:int" use="required" />
<xs:attribute name="visible" type="xs:boolean" use="optional" />
</xs:complexType>
</xs:schema>