使用XSL: Is there an easy way to prevent widows?中的解决方案在DOM中生成奇数标记。
有没有办法让它不插入名称的元素?目前如果我跑
<xsl:apply-templates select="solution-headline" mode="widow-fix" />
会插入
<solution-headline>Lorem ipsum<solution-headline/>
我希望它插入
<xsl:text>Lorem ipsum<xsl:text/>
答案 0 :(得分:2)
如果您只想要文本,那么最简单的方法是将寡妇修复模板仅应用于solution-headline
元素的文本节点子元素而不是元素本身:
<xsl:apply-templates select="solution-headline/text()" mode="widow-fix" />
如果始终希望寡妇修复只为您提供文本而不包含周围元素,则删除现有模板
<xsl:template match="* | @*" mode="widow-fix">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="widow-fix"/>
</xsl:copy>
</xsl:template>
现在,当您将寡妇修复模板应用于solution-headline
时,它将使用基本上只执行<xsl:apply-templates mode="widow-fix" />
的{{3}}(即使用相同模式处理所有子节点)没有 copy
,您将获得寡妇修复模板处理的所有后代文本节点。