Salve a tutti.
Ho bisogno di avere dei documenti XML che seguano certe regole, e ovviamente ho optato per degli schemi XSD per renderle.

Vi posto lo schema che ho creato:
Codice PHP:
<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    

    <xs:complexType name="message">
        <xs:sequence>
            <xs:element name="loginfield" type="login" minOccurs="1" maxOccurs="1"/>
            <xs:element name="appmessagefield" type="appmessage" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="srvmessagefield" type="srvmessage" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="data" type="xs:string" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>     
    
    
    
    <xs:complexType name="login">
        <xs:sequence>
            <xs:element name="username" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="password" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>   
    
    
    <xs:complexType name="appmessage">
        <xs:sequence>
            <xs:element name="application" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="datemsg" type="xs:date" minOccurs="1" maxOccurs="1"/>
            <xs:element name="timemsg" type="xs:time" minOccurs="1" maxOccurs="1"/>
            <xs:element name="parameter" type="paramdata" minOccurs="0" maxOccurs="1"/>
            <xs:element name="log" type="logdata" minOccurs="0" maxOccurs="1"/>
            <xs:element name="note" type="xs:string" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
    
    
    <xs:complexType name="srvmessage">
        <xs:sequence>
            <xs:element name="application" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="datemsg" type="xs:date" minOccurs="1" maxOccurs="1"/>
            <xs:element name="timemsg" type="xs:time" minOccurs="1" maxOccurs="1"/>
            <xs:element name="command" type="commanddata" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType> 




        
    <!--
        definizione del tipo: paramdata
        coppia di stringhe che rappresentano: parametro valore
    -->
    <xs:complexType name="paramdata">
        <xs:sequence>
            <xs:element name="paramname" type="xs:string" maxOccurs="unbounded"/>
            <xs:element name="value" type="xs:string" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    
    <!--
        definizione del campo logdata
        tipo di log
        coppia di stringhe: oggetto messaggio
    -->
    <xs:complexType name="logdata">
        <xs:sequence>
            <xs:element name="logtype" type="typedata" minOccurs="1" maxOccurs="1"/>
            <xs:element name="logobject" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="logmsg" type="xs:string" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
    
    
    <!--
        definizione dei tipi di log possibili
    -->
    <xs:complexType name="typedata">
        <xs:choice>
            <xs:element name="severe" type="xs:boolean"/>
            <xs:element name="warning" type="xs:boolean"/>
            <xs:element name="info" type="xs:boolean"/>
        </xs:choice>
    </xs:complexType>    
    
    
    <!--
        definizione del tipo command
    -->
    <xs:complexType name="commanddata">
        <xs:sequence>
            <xs:element name="commandname" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="parameter" type="paramdata" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
Il mio scopo è di creare dei documenti xml, i quali devono avere come root element "message",
un figlio "logginFiled" e (opzionale) un figlio "appmessagefield","srvmessagefield","data". Gli utlimi tre figli possono esserci o non esserci, oppure possono esserci in più di una occorrenza.

faccio un esempio di messagigo:

<message>
<logginfield>*qui ci vanno i dati di questo elemento figlio*
</logginfield>
<appmessagefield>*dati di questo figlio*
</appmessagefield>
<appmessagefield>*nuovi dati appmessage field di questo figlio*
</appmessagefield>
*nessun srvmessagefield e data*
</message>

Quando però vado a validare il documento xml e lo schema XSD mi da errore (lo valido qui: http://www.xmlforasp.net/SchemaValidator.aspx)

che cosa sbaglio???