After hours I'm totally despaired.

I like to validate a request against xsd.
All validates correct but if load this into dom with php, then I get some warnings about an incorrect attribute:

Warning: DOMDocument::loadXML() [domdocument.loadxml]: AttValue: " or ' expected in Entity, line: 6
Warning: DOMDocument::loadXML() [domdocument.loadxml]: attributes construct error in Entity, line: 6
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Couldn't find end of Start Tag orderBy line 6
...


This is the XML I like to recive:

<request>
<requestType>21</requestType>
<requestData>
<sessionID>012345</sessionID>
<mitarbeiterID>35</mitarbeiterID>
<orderBy direction="DESC">abc</orderBy>
</requestData>
</request>


My xsd is this:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:annotation>
<xsdocumentation xml:lang="de">
Copyright 2010 Christian Waltjen for metapeople GmbH.
</xsdocumentation>
</xsd:annotation>

<xsd:element name="request" type="request_def"></xsd:element>

<xsd:complexType name="request_def">
<xsd:sequence>
<xsd:element name="requestType" type="requestTypeNumber_def" minOccurs="1" maxOccurs="1" />
<xsd:element name="requestData" type="requestData_def" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="requestData_def">
<xsd:choice>
<xsd:group ref="LoginDataGroup" minOccurs="1" maxOccurs="1"></xsd:group>
<xsd:group ref="AppDataGroup" minOccurs="1" maxOccurs="1"></xsd:group>
</xsd:choice>
</xsd:complexType>

<xsd:simpleType name="requestTypeNumber_def">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="0" />
<xsd:enumeration value="11" />
<xsd:enumeration value="12" />
<xsd:enumeration value="13" />
<xsd:enumeration value="21" />
<xsd:enumeration value="22" />
<xsd:enumeration value="31" />
<xsd:enumeration value="32" />
<xsd:enumeration value="33" />
</xsd:restriction>
</xsd:simpleType>

<xsd:group name="LoginDataGroup">
<xsd:choice>
<xsd:sequence>
<xsd:element name="loginname" type="xsd:string" />
<xsd:element name="password" type="xsd:string" />
</xsd:sequence>

<xsd:sequence>
<xsd:element name="password" type="xsd:string" />
<xsd:element name="loginname" type="xsd:string" />
</xsd:sequence>
</xsd:choice>
</xsd:group>

<xsd:group name="AppDataGroup">
<xsd:sequence>
<xsd:element name="sessionID" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="mitarbeiterID" type="xsd:int" minOccurs="1" maxOccurs="1" />
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:group ref="PwdChangeGroup" />
<xsd:group ref="TaskGroup" />
<xsd:group ref="RangeGroup" />
<xsd:group ref="FavTaskDataGroup" />
</xsd:choice>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="orderBy" type="OrderByType" minOccurs="1" maxOccurs="1" />
</xsd:choice>
</xsd:sequence>
</xsd:group>

<xsd:group name="FavTaskDataGroup">
<xsd:sequence>
<xsd:element name="kostenstellen" type="KostenstellenListDef" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:group>

<xsd:group name="PwdChangeGroup">
<xsd:sequence>
<xsd:element name="old_password" minOccurs="1" maxOccurs="1" />
<xsd:element name="new_password" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:group>


<xsd:group name="TaskGroup">
<xsd:sequence>
<xsd:element name="task" type="Task_def" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:group>

<xsd:group name="RangeGroup">
<xsd:sequence>
<xsd:element name="range" type="Range_def" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:group>

<xsd:complexType name="Task_def">
<xsd:all>
<xsd:element name="kostenstelleID" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minExclusive value="0"></xsd:minExclusive>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="projektID" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minExclusive value="0"></xsd:minExclusive>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="startDateTime" minOccurs="1" maxOccurs="1" type="xsdateTime">
</xsd:element>
<xsd:element name="endDateTime" minOccurs="1" maxOccurs="1" type="xsdateTime">
</xsd:element>
</xsd:all>
</xsd:complexType>

<xsd:complexType name="Range_def">
<xsd:all>
<xsd:element name="startDateTime" minOccurs="1" maxOccurs="1" type="xsdateTime">
</xsd:element>
<xsd:element name="endDateTime" minOccurs="1" maxOccurs="1" type="xsdateTime">
</xsd:element>
</xsd:all>
</xsd:complexType>

<xsd:complexType name="KostenstellenListDef">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="kostenstellenID" minOccurs="0" maxOccurs="unbounded"></xsd:element>
<xsd:element name="projektID" minOccurs="0" maxOccurs="unbounded"></xsd:element>
</xsd:choice>
</xsd:complexType>

<xsd:simpleType name="boolean">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="true"></xsd:enumeration>
<xsd:enumeration value="false"></xsd:enumeration>
<xsd:enumeration value="1"></xsd:enumeration>
<xsd:enumeration value="0"></xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="OrderByType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="direction" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="DESC"></xsd:enumeration>
<xsd:enumeration value="ASC"></xsd:enumeration>
<xsd:enumeration value="desc"></xsd:enumeration>
<xsd:enumeration value="asc"></xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>

</xsd:schema>

Thanks for help.