XSL到HTML:当内部为空时,如何保留结束div标记?

XSL到HTML:当内部为空时,如何保留结束div标记?,html,xslt,Html,Xslt,我对XSL转换有问题。我有一个divtag,它有时包含一些数据,有时是空的。每当它为空且没有子项时,我会得到这种格式: <div class="test" style="display:none" /> 但我需要用这种格式: <div class="test" style="display:none"></div> XSL模板: <div class="test" style="display:none"> <xsl:ch

我对XSL转换有问题。我有一个divtag,它有时包含一些数据,有时是空的。每当它为空且没有子项时,我会得到这种格式:

<div class="test" style="display:none" />

但我需要用这种格式:

<div class="test" style="display:none"></div>

XSL模板:

<div class="test" style="display:none">
    <xsl:choose>
        <xsl:when test="BookType='SciFi'">
            <table class="test" style="display:none">
                <tr>
                    <xsl:for-each select="Books/BookName">
                        <td>
                            <span>
                                <xsl:value-of select="BookName"/>
                            </span>
                        </td>
                    </xsl:for-each>
                </tr>
            </table>
        </xsl:when>
    </xsl:choose>
</div>


如何实现这一点?

您正在将HTML编写为输出,因此应该使用HTML输出方法

<xsl:output method="html"/>


您可以添加
,这样您就可以在开始div标记之前或之后使用?您的输出方法是否设置为
html
?除了Michael对设置
的注释之外,请确保这会导致空的
div
序列化,因为
结果元素不在名称空间中,或者,如果您已经创建了XHTML,那么您可以将其与XSLT 2或3处理器一起使用。@ᴇᴛᴀʟ向元素添加空文本节点应该没有效果,当然也不应该影响元素序列化的方式。如果是这样,那就是一个bug。我已经做了这个,但是div仍然像是您使用的是DOM序列化程序,而不是XSLT序列化程序。你没有给我们多少信息。