我有一套段落:
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p/>
<p>Paragraph 3</p>
<p>Paragraph 4</p>
<p/>
<p>Paragraph 5</p>
<p/>
<p/>
<p/>
我想要的是删除标签集末尾的空段落,但我想保留其他空标签。
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p/>
<p>Paragraph 3</p>
<p>Paragraph 4</p>
<p/>
<p>Paragraph 5</p>
我找到了this one等答案,解释了如何删除所有空标记(或任何类型的标记,如果有的话),但我不太清楚如何删除最后一组空像这样的列表中的标签。
此时,文档应仅包含<p>
个元素。我可以将它们放在任何其他标记中,我使用<html><body>
作为父标记。
答案 0 :(得分:1)
检查此代码:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>
</xsl:stylesheet>
答案 1 :(得分:1)
假设您只有p
个元素作为兄弟姐妹,那么您可以将<xsl:template match="p[not(node()) and not(following-sibling::p[node()])]"/>
与身份转换模板一起使用:
http://xsltransform.net/ehVYZMW/1显示带有
的完整样式表<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="p[not(node()) and not(following-sibling::p[node()])]"/>
</xsl:transform>