CODE
<request type="addData">
<session id="(string)"/>
<block tempId="(string)">
<right clientId="(string)" value="(string)"/>
<desc crypt="(boolean) checksum="(string)">(bytes)</desc>
<data crypt="(boolean)" checksum="(string)">(bytes)</data>
</block>
</request>
Je cherche donc à faire un schéma XSD pour imposer ce formalisme. Voici ce que j'ai pour l'instant:
CODE
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Definition du type datacontainer -->
<xs:complexType name="datacontainer">
<xs:complexContent>
<xs:extension base="xs:byte">
<xs:sequence>
<xs:attribute name="crypt" type="xs:boolean" use="optional" />
<xs:attribute name="checksum" type="xs:string" use="optional" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Definition of the session node -->
<xs:element name="session">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<!-- definition of the block node -->
<xs:element name="block">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element ref="right" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="desc" minOccurs="0" maxOccurs="1" type="datacontainer" />
<xs:element ref="data" minOccurs="0" maxOccurs="1" type="datacontainer" />
</xs:sequence>
<xs:attribute name="tempId" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<!-- definition of the right node -->
<xs:element name="right">
<xs:complexType>
<xs:attribute name="clientId" type="xs:string" use="optional" />
<xs:attribute name="gfcId" type="xs:string" use="optional" />
<xs:attribute name="value" type="xs:string" fixed="[0|1]{5,5}" use="required" />
</xs:complexType>
</xs:element>
<!-- Definition of the request node -->
<xs:element name="request">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element ref="session" minOccurs="1" maxOccurs="1" />
<xs:element ref="right" minOccurs="0" maxOccurs="unbounded" />
<xs:element ref="block" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="required" fixed="addData"/>
</xs:complexType>
</xs:element>
</xs:schema>
Mais ça passe pô. <xs:extension base="xs:byte"> me jette Complex Type Definition Representation Error for type 'datacontainer'. When <complexContent> is used, the base type must be a complexType. 'byte' is a simpleType.
Grumpf...comment je fais moi alors?