我必须调整一组复杂的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),但它没有用完。
答案 0 :(得分:0)
不,XSLT本身不会创建<p>
个元素。如果在样式表或任何导入/包含的样式表中找不到<p>
元素,则可以从源文档中复制它们。
很难从你展示的代码中看出来。您应尝试使用尽可能小的输入文件重现该问题,并将XSLT转换简化为最小规则集。