J'ai une table html qui nécessite un échange rotatif/axe. Cela peut être fait hors ligne. Quelqu'un sait-il un outil que je peux utiliser pour le faire?transpose/permute x, y axes dans la table html
3
A
Répondre
8
Cette transformation:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="table">
<xsl:for-each select="tr[1]/td">
<xsl:variable name="vRowPos" select="position()"/>
<tr>
<xsl:for-each select="/table/tr">
<xsl:variable name="vColPos" select="position()"/>
<xsl:copy-of select="/table/tr[$vColPos]/td[$vRowPos]"/>
</xsl:for-each>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
lorsqu'il est appliqué sur ce document XML:
<table>
<tr>
<td>A11</td>
<td>A12</td>
<td>A13</td>
<td>A14</td>
<td>A15</td>
</tr>
<tr>
<td>A21</td>
<td>A22</td>
<td>A23</td>
<td>A24</td>
<td>A25</td>
</tr>
<tr>
<td>A31</td>
<td>A32</td>
<td>A33</td>
<td>A34</td>
<td>A35</td>
</tr>
</table>
produit les résultats recherchés, corriger:
<table>
<tr>
<td>A11</td>
<td>A21</td>
<td>A31</td>
</tr>
<tr>
<td>A12</td>
<td>A22</td>
<td>A32</td>
</tr>
<tr>
<td>A13</td>
<td>A23</td>
<td>A33</td>
</tr>
<tr>
<td>A14</td>
<td>A24</td>
<td>A34</td>
</tr>
<tr>
<td>A15</td>
<td>A25</td>
<td>A35</td>
</tr>
</table>
Remarque:: L'hypothèse est que la table a la structure régulière.
+0
Les deux variables, vNumRows et vNumCols, sont définies - mais jamais utilisées. –
+0
@ michael.hor257k: Merci d'avoir remarqué cela. Doit être le résultat d'une modification incomplète d'une version précédente. Va enquêter et modifier. –
Quel est l'échantillon d'entrée? Sans @colspan et @rowspan, la réponse est simple, sinon l'algorithme sera complexe. Peut-être à des fins d'optimisation, on pourrait construire un résultat temporel avec rien de plus que de la cardinalité calculée (traversée à grains fins passant des cellules ocuppées), puis une inversion de cardinatlté de sortie. –
Bonne question, +1. Voir ma réponse pour une solution complète et courte. –
@Dimitre: Avec l'hypothèse que la table a une structure régulière. –