Bonjour,

Je suis en train d'écrire un XSL qui permet la conversion des fichiers XML issus d'Excell vers un fichier XML compréhensible par Indesign.
La feuille fonctionne très bien à un détail près.

Soit un tableau Excell réparti comme suit :
[B]


Dans son XML, Excel ne retient que les cellules "remplies" et leur adjoint un index si la cellule est décalée.

Ex XML Excel:
<Cell><Data ss:Type="String">A</Data></Cell>
<Cell ss:Index="3" ><Data ss:Type="String">B</Data></Cell>

OR, dans Indesign, les tableaux exprimés en XML requièrent les cellules vides.

Ex XML Indesign:
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517">A</Cellule>
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517"/>
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517">B</Cellule>
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517"/>

Il me faut donc "remplir les blancs". Mais là j'avoue que je me noie :-S
Je n'arrive tout simplement pas à gérer la disposition des cellules et à placer des cellules vides
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517"/>
là où j'en ai besoin

Ici on voit qu'en l'état, les cellules sont décalées dans Indesign, car il manque les cellules vides.



Mon idée serait de proceder comme suit. Je connais le maximum de cellules possibles par row. Je peux identifier al présence de l'index ou pas.
Je pensais à des boucles pour filer la création des cellules et donc d'avoir un index de contrôle sur ma génération de cellules vides mais là je patauge.

<xsl:for-each select="ss:Row">
<xsl:for-each select="ss:Cell">

<xsl:choose>
<xsl:when test="not(@ss:Index)">
<!-- Si pas d'index, on enquille les cellules-->
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517"><xsl:value-of select="*"/></Cellule>
</xsl:when>
<xsl:when test="@ss:Index=3">
<!-- si index, je dois identifier combien de cellules vides je dois placer-->
</xsl:when>
</xsl:choose>
</xsl:for-each>


EN CLAIR :

passer de
<Cell><Data ss:Type="String">A</Data></Cell>
<Cell ss:Index="3" ><Data ss:Type="String">B</Data></Cell>
a
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517">A</Cellule>
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517"/>
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517">B</Cellule>
<Cellule aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="174.091863517"/>

Sachant qu'on ne peut pas avoir plus de tant de cellules par row et que ce chiffre est identifiable à la source
ss:ExpandedColumnCount="4"


En espérant avoir été clair

Merci d'avance pour vos éventuels précieux conseils,

Une âme désespérée

Loic