I found the answer to this but thought of still posting this as it was difficult to find. Thanks to a buddy of mine :)
I should not define the Element like I did and then try to reference it over and over each time with a new name.
What I should do is to define the simpleType on its own and give it a name.
<!-- Define the simpleType as an enum and give it a name -->
<xs:simpleType name="myCoolDataType">
<xs:restriction base="xs:string">
<xs:enumeration value="COMPLETED"/>
<xs:enumeration value="BUSY"/>
<xs:enumeration value="AWAITING INFORMATION"/>
</xs:restriction>
</xs:simpleType>
Then where I want to use it I need to define the element and just give it a type with the value you gave to the enum in the first stip
<xs:complexType name="MyTag1">
<xs:sequence>
<xs:element name="truckStatus" type="mine:myCoolDataType"/>
<xs:element name="carStatus" type="mine:myCoolDataType"/>
</xs:sequence>
</xs:complexType>