All guessing files must be valid with the following XML schema, corresponding to the "standard/types/ type_guessing.xsd" file.
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="pointer-type">
<xs:restriction base="xs:string">
<xs:enumeration value="" />
<xs:enumeration value="PTR" />
<xs:enumeration value="REF" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="cli-pointer-type">
<xs:restriction base="xs:string">
<xs:enumeration value="" />
<xs:enumeration value="PTR" />
<xs:enumeration value="REF" />
<xs:enumeration value="CLIPTR" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="declaration">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="container" type="xs:boolean" />
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element minOccurs="0" maxOccurs="1" name="pointer" type= "pointer-type" />
<xs:element minOccurs="0" maxOccurs="1" name="cliPointer" type= "cli-pointer-type" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="typeDef">
<xs:sequence>
<xs:element minOccurs="0" name="OptionalSimple" type="declaration" />
<xs:element minOccurs="0" name="MandatorySimple" type="declaration" />
<xs:element minOccurs="0" name="OptionalMultiple" type="declaration" />
<xs:element minOccurs="0" name="MandatoryMultiple" type="declaration" />
<xs:element minOccurs="0" name="Finite" type="declaration" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="types">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="basicType">
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="typeDef">
<xs:attribute name="name" type="xs:string" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="unbounded" name="primitiveType">
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="typeDef">
<xs:attribute name="name" type="xs:string" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="unbounded" name="classType">
<xs:complexType>
<xs:complexContent mixed="false">
<xs:extension base="typeDef">
<xs:attribute name="name" type="xs:string" use="optional" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="type-guessing">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="attribute" type="types" />
<xs:element minOccurs="1" maxOccurs="1" name="association-end" type="types" />
<xs:element minOccurs="1" maxOccurs="1" name="in-parameter" type="types" />
<xs:element minOccurs="1" maxOccurs="1" name="inout-parameter" type="types" />
<xs:element minOccurs="1" maxOccurs="1" name="return-parameter" type="types" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>