【问题标题】:transpose/swap x,y axes in html table在 html 表中转置/交换 x,y 轴
【发布时间】:2011-05-23 13:03:56
【问题描述】:

我有一个需要旋转/轴交换的 html 表。它可以离线完成。有谁知道我可以使用的工具吗?

【问题讨论】:

  • 输入样本是什么?没有@colspan 和@rowspan 答案很简单,否则算法会很复杂。也许出于优化目的,可以建立一个临时结果,仅计算基数(细粒度遍历通过占用的单元格),然后输出基数反转。
  • 好问题,+1。请参阅我的答案以获得完整而简短的解决方案。
  • @Dimitre:假设表格有规则的结构。
  • @Alejandro:是的,我认为这就是@richard 想要的。

标签: html xml xslt transform


【解决方案1】:

这种转变

<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>

应用于此 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>

产生想要的正确结果

<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>

注意:假设表格具有常规结构。

【讨论】:

  • 两个变量 vNumRows 和 vNumCols 已定义 - 但从未使用过。
  • @michael.hor257k:感谢您注意到这一点。必须是对先前版本的不完整编辑的结果。将进行调查和编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多