XSLT转换添加了空<p> </p>标签

时间:2012-06-22 09:21:19

标签: xml xslt

我必须调整一组复杂的XSLT文件,我有问题,它是添加空段落标记,我不知道为什么。我相信它与for-each有关,但我不知道这些标签的来源,因为转换中没有任何p-Tags。

当for-each中的某些内容为空时,xsl可能会自行添加吗?它始终直接在for-each之后,并且直接在for-each结束之前(有效地围绕生成的输出)。

如果标签为空,我怎么能在for-each里面检查?

感谢您的帮助。

文件主要是这种结构:

// Base File
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="library.xsl" />
<xsl:output method="html" encoding="utf-8" indent="yes"/>

// Some keys are defined here ...

<xsl:template name="base">                  
    <xsl:call-template name="someTemplate" />
    // More templates follow ...
</xsl:template>

</xsl:stylesheet>

library.xsl现在有这样的模板“someTemplate”:

<xsl:template name="someTemplate">
     <xsl:for-each select="[very complicated XPath here]">
        // Some HTML generation, but absolutely withoug p-tags!!!!
     </xsl:for-each>
</xsl:template>

我已经阅读了线程XSLT: How to exclude empty elements from my result?,并尝试应用命名模式(因为我的文件正在使用for-each),但它没有用完。

1 个答案:

答案 0 :(得分:0)

不,XSLT本身不会创建<p>个元素。如果在样式表或任何导入/包含的样式表中找不到<p>元素,则可以从源文档中复制它们。

很难从你展示的代码中看出来。您应尝试使用尽可能小的输入文件重现该问题,并将XSLT转换简化为最小规则集。