在Excel中打开文件时,使用XSL创建的空html列太宽

时间:2015-01-15 16:15:13

标签: html css excel xslt

我正在创建一个报告,通过使用XSL将XML文件转换为HTML文件。在某些情况下,我有一个始终为空的列。我的问题是,无论我设置这个列有多窄,它总是太宽(通常,当有一些文本时它是一个或两个字母,在这种情况下,列将同样宽容纳最大的弦,比它空的时候窄3-4倍。当我没有数据时,有没有办法让这个专栏非常狭窄? 这是创建HTML文件的XSL代码的一部分(将空值放在&#34下面的代码;用& nbsp&#34替换空元素;)。对于width属性,我尝试了不同的值,无论我输入什么值,当该列为空时,列的宽度相同(在Excel中打开时太宽): "                                                                FONT-WEIGHT:大胆                     

        <xsl:choose>
        **<!-- replace empty element with &nbsp; -->
        **<xsl:when test="string-length()= 0">
                        <xsl:attribute name="width">20px</xsl:attribute>
                        <xsl:text disable-output-escaping="yes">&amp;</xsl:text>
                        <xsl:text>nbsp;</xsl:text>**
           </xsl:when>**

       <xsl:when test="contains(name(.), 'Location')">
           <xsl:attribute name="align">left</xsl:attribute>
           <xsl:attribute name="colspan">2</xsl:attribute>
                   <xsl:apply-templates/>
           </xsl:when>

    <xsl:otherwise>
        <xsl:attribute name="align">left</xsl:attribute>
        <xsl:apply-templates/>
    </xsl:otherwise>
    </xsl:choose>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>

谢谢。

1 个答案:

答案 0 :(得分:0)

除非您对这些元素使用xsl:strip-space,否则string-length()也会计算空格。

尝试将测试更改为:

test="string-length(normalize-space())=0"

您也可以将其更改为:

test="not(boolean(normalize-space()))"

我认为更容易理解。

您还可以使用小数(或十六进制)引用作为非中断空格(&#160;);这将消除2 xsl:textdisable-output-escaping的需要。

您还可以使用零宽度空间:&#8203;

以下是我将其展示的示例:

<xsl:when test="not(boolean(normalize-space()))">
    <xsl:text>&#8203;</xsl:text>
</xsl:when>