JAXB xjc expected element of type …
<!-- MAIN element -->
<xs:element name="main" type="Main">
The problem here is that the main element and main element type names are identical (except the first letter that is uppercased). Xjc creates a class for for both root Xml element and all complex types defined in Xsd. In this case a java class that derives from class for xsd complexType would be empty. If you still insist on having java class for xml root element then declare it as a extension without any additions.
- declare xml root element as complexType extension (complexContent/complextType/extension) of the xsd complexType
- do not define type for root element and define the structure directly in xs:element