目前,我有以下规则:
<xsl:template match="p">
<xsl:apply-templates/>
</xsl:template>
此规则的目的是替换元素&#34; p&#34;通过新的一行。
但是,如果有几个&#34; p&#34;跟随另一个(例如<p><p><p><p>
)
它们应该只转换为一个新行而不是多个新行。在XSLT中是否有任何规范的解决方案?
编辑: 举个例子:
<p> </p>
<p> </p>
<p> </p>
<p> </p>
应该换成一个换行符。
答案 0 :(得分:0)
使用轴打印第一个&#39; p&#39;:
<xsl:template match="p">
<xsl:if test="count(preceding-sibling::p) = 0">
<p/>
</xsl:if>
</xsl:template>
答案 1 :(得分:0)
试试这个:
<xsl:template match="p">
<xsl:if test="not(preceding-sibling::*[1][self::p])">
<xsl:for-each-group select="., following-sibling::*" group-adjacent="boolean(self::p)">
<xsl:if test="position() eq 1">
</xsl:if>
</xsl:for-each-group>
</xsl:if>
</xsl:template>