XSD : type de données multiples ?

XSD : type de données multiples ? - XML/XSL - Programmation

Marsh Posté le 11-08-2005 à 16:20:45    

Bonjour à tous,
 
Je vais essayer d'être le plus clair possible :  
 
J'ai un fichier XML (extrait ci-dessous)
...  
<data>
  <row id="-1">
   <col1>Y-4</col1>
   <col2>Y-3</col2>
   <col3>Y-2</col3>
   <col4>Y-1</col4>
   <col5>YTD</col5>
   <col6>M1</col6>
   <col7>M2</col7>
   <col8>M3</col8>
   <col9>M4</col9>
   <col10>M5</col10>
   <col11>M6</col11>
   <col12>M7</col12>
   <col13>M8</col13>
   <col14>M9</col14>
   <col15>M10</col15>
   <col16>M11</col16>
   <col17>M12</col17>
  </row>
  <row id="0">
   <col1>8.9</col1>
   <col2>7.99</col2>
   <col3>10.0</col3>
   <col4>9.4</col4>
   <col5>5.8</col5>
   <col6/>
   <col7/>
   <col8/>
   <col9/>
   <col10/>
   <col11/>
   <col12/>
   <col13/>
   <col14/>
   <col15/>
   <col16/>
   <col17/>
  </row>
  <row id="1">
   <col1/>
   <col2/>
   <col3/>
   <col4/>
   <col5/>
   <col6>16.7</col6>
   <col7>0</col7>
   <col8>0</col8>
   <col9/>
   <col10/>
   <col11/>
   <col12/>
   <col13/>
   <col14/>
   <col15/>
   <col16/>
   <col17/>
  </row>
...
 
dont la première row id=-1 contient des "libellés" (donc xsd : string)
 
MAIS les row suivantes contiennent des données (xsd : double). Le problème est que les noeuds (col1 à col12) sont des éléments identiques et je cherche s'il existe un moyen de définir deux types (string et double) sur un même élément (exemple col1) MAIS qui serait accompagné d'un attribut différents selon que cela concerne les titres ou les données.  
 
Exemple :  
  <row id="-1">
   <col1 type="titre">Y-4</col1>
   <col2>Y-3</col2>
   <col3>Y-2</col3>
   <col4>Y-1</col4>
   <col5>YTD</col5>
   <col6>M1</col6>
   <col7>M2</col7>
   <col8>M3</col8>
   <col9>M4</col9>
   <col10>M5</col10>
   <col11>M6</col11>
   <col12>M7</col12>
   <col13>M8</col13>
   <col14>M9</col14>
   <col15>M10</col15>
   <col16>M11</col16>
   <col17>M12</col17>
  </row>
  <row id="0">
   <col1 type="data">8.9</col1>
   <col2>7.99</col2>
   <col3>10.0</col3>
   <col4>9.4</col4>
   <col5>5.8</col5>
   <col6/>
   <col7/>
   <col8/>
   <col9/>
   <col10/>
   <col11/>
   <col12/>
   <col13/>
   <col14/>
   <col15/>
   <col16/>
   <col17/>
  </row>
  <row id="1">
   <col1/>
   <col2/>
   <col3/>
   <col4/>
   <col5/>
   <col6>16.7</col6>
   <col7>0</col7>
   <col8>0</col8>
   <col9/>
   <col10/>
   <col11/>
   <col12/>
   <col13/>
   <col14/>
   <col15/>
   <col16/>
   <col17/>
  </row>
 
De facon a avoir un truc du genre dans mon xsd :  
 
<xsd:element minOccurs="0" nillable="true" type="xsd:double"name="col1" attribut="data" form="unqualified"/>
ET
<xsd:element minOccurs="0" nillable="true" type="xsd:string"name="col1" attribut="titre" form="unqualified"/>
 
 
Vous me direz que je dois changer la structure de mon XML (effectivement il suffit que je fasse un truc du style colTitre1 et colData1 (ainsi de suite)) mais pour une raison bien précise j'essaye d'éviter cela (idem pour l'utilisation de ns différent car j'essaye vraiment de conservé un élément unique (exemple : col1 pour les titres et les datas).
 
Merci d'avance.

Reply

Marsh Posté le 11-08-2005 à 16:20:45   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed