-1

我必须调整一组复杂的 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:如何从我的结果中排除空元素?并且还尝试应用命名模式(因为我的文件正在使用 for-each),但它没有成功。

4

1 回答 1

0

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

从您显示的代码中很难分辨。您应该尝试使用尽可能小的输入文件来重现该问题,并将 XSLT 转换减少到最少的规则集。

于 2012-06-22T09:38:57.540 回答