XSL:有一种简单的方法可以防止寡妇吗? (第2部分)

时间:2013-11-20 23:25:48

标签: xslt symphony-cms

使用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/>

1 个答案:

答案 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,您将获得寡妇修复模板处理的所有后代文本节点。