表在XSLT中无法正确呈现

时间:2014-12-23 21:27:09

标签: xml xslt xslt-2.0

我有一个通过XSLT呈现的表。问题是如果没有@station变量的数据,我需要一个带有边框的空单元格,因为它存在于td的CSS中,但是如果没有数据则它不会渲染边框。如果td中有数据,它会渲染边框。有人可以告诉我,如果我需要有边框而不管td中的数据是什么我需要做什么。

<xsl:template match="version">
  <tr>

     <td nowrap="true" style="border-top:1px solid black;border-right:1px solid black;border-bottom:1px solid black">
       <content><xsl:value-of select="@station"/></content>
     </td>

  </tr>    
</xsl:template>

由于

1 个答案:

答案 0 :(得分:0)

您可以添加&nbsp;以防万一该站为空或不存在:

<xsl:template match="version">
  <tr>
    <td nowrap="true" style="border-top:1px solid black;
        border-right:1px solid black;border-bottom:1px solid black">
      <content>
         <xsl:value-of disable-output-escaping="yes" 
          select="if( @station and not(@station ='')) then @station 
                  else '&amp;nbsp;'"/>     
      </content>
    </td>
  </tr>    
</xsl:template>

由于可能有更好的解决方案,您可以在此处查看各种建议:using a html entity in xslt (e.g. &nbsp;)
一种不同的方法是使用CSS解决这个问题:如果你要添加

 empty-cells: show;

要显示边框td的样式 如果要显示所有空单元格的边框,将样式设置为周围表格甚至可能更容易。您可以查看此处给出的各种建议:CSS to make an empty cell's border appear?但必须考虑浏览器的兼容性。

供参考:https://developer.mozilla.org/en/docs/Web/CSS/empty-cells