Help - Search - Member List - Calendar
Full Version: [xml] Petite Prise De Choux Avec Les Schemas
OpenSpace > Zone Ordinateurs > Programmation
PoP
Pouet!

J'ai un bout de flux XML don le template est le suivant:
CODE

(...)
 <!-- global commands -->
 <global_commands>
  <command name="ga" voice_value="pouet{A1}|camion{A1}" dtc_value="0"/>
  <command name="bu" voice_value="dring{A2}|vélo{A2}" dtc_value="8"/>
  <command name="zo" voice_value="dong{A3}|ding{A3}" dtc_value="5"/>
  <command name="meuh" voice_value="piotr{A4}" dtc_value="4"/>
 </global_commands>
 <!-- Additional properties for fisting -->
 <fisting_properties>
  <property name="hand" value="LEFT"/>
  <property name="length" value="12inches"/>
 </fisting_properties>
(...)


Et voici un bout du schema XML associé:
CODE

<xs:element name="global_commands" minOccurs="0">
<xs:complexType>
 <xs:all>
  <xs:element name="command" minOccurs="0">
   <xs:complexType>
    <xs:attribute name="name" type="command"/>
    <xs:attribute name="voice_value" type="xs:string"/>
    <xs:attribute name="dtc_value" type="xs:integer"/>
   </xs:complexType>
  </xs:element>
 </xs:all>
</xs:complexType>
</xs:element>
<xs:element name="fisting_properties" minOccurs="0"/>


Là où ça fonfonne c'est que je ne trouve pas comment dans mon schéma XML imposer qu'il y ait au minimum zéro commandes et au maximum 4.
Je pensais faire ainsi
CODE
<xs:element name="command" maxOccurs="4" minOccurs="0">
mais ça me jette une erreur soit disant que ça n'est pas conforme à son Simple Type Definition.
Une idée?
Gfx
Ca vient pas de ça : <xs:attribute name="name" type="command"/> ? Essaye avec un type string des fois que... smile.gif
PoP
Bah le type="command" il vient de là:
CODE

<xs:simpleType name="command">
<xs:union>
 <xs:simpleType>
  <xs:restriction base="xs:string">
   <xs:enumeration value="ga"/>
   <xs:enumeration value="bu"/>
   <xs:enumeration value="zo"/>
   <xs:enumeration value="meuh"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType>
  <xs:restriction base="xs:token">
   <xs:enumeration value=""/>
  </xs:restriction>
 </xs:simpleType>
</xs:union>
</xs:simpleType>
Gfx
Oui mais justement tu as un simpleType appelé command et un élément appelé command. Essaye de changer un des noms.
PoP
J'ai changé le simpleType appelé command en commandType et ça ne change rien.
Trankill
l'erreur se trouve au niveau de ga bu zo meuh

run.gif
PoP
LOUL
PoP
Avec le schema suivant:

CODE

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<!-- Définition du type de command-->
<xs:simpleType name="commandType">
 <xs:restriction base="xs:string">
  <xs:enumeration value="ga"/>
  <xs:enumeration value="bu"/>
  <xs:enumeration value="zo"/>
  <xs:enumeration value="meuh"/>
 </xs:restriction>
</xs:simpleType>

<!-- Définition du type command-->
<xs:element name="command">
 <xs:complexType>
  <xs:attribute name="name" type="commandType" use="required"/>
  <xs:attribute name="voice_value" type="xs:string" use="optional"/>
  <xs:attribute name="dtc_value" type="xs:integer" use="optional"/>
 </xs:complexType>
</xs:element>

<!-- Définition du type global_commands-->
<xs:element name="global_commands">
 <xs:complexType>
  <xs:sequence>
   <xs:element ref="command" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:complexType>
 <xs:unique name="name">
  <xs:selector xpath="./command"/>
  <xs:field xpath="@name"/>
 </xs:unique>
</xs:element>

<!-- Définition du type body-->
<xs:element name="body">
 <xs:complexType>
  <xs:all>
   (...)
   <xs:element ref="global_commands"/>
   (...)
  </xs:all>
 </xs:complexType>
</xs:element>

<!-- Définition du type head-->
<xs:element name="head">
 <xs:complexType>
  <xs:all>
   <xs:element ref="body"/>
  </xs:all>
 </xs:complexType>
</xs:element>

</xs:schema>


ça marche! :-)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2024 Invision Power Services, Inc.