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:
Il mio scopo è di creare dei documenti xml, i quali devono avere come root element "message",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>
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???

Rispondi quotando