如何删除具有价值的标签

时间:2019-01-28 20:56:26

标签: xml xslt tags space

输入为:

<p>&#160;</p>

输出为:

<p></p>

我想删除输出文件中的空标签,因为&#160;是nbsp,并且在输出中它已转换为空格,但是我不希望该标签带有空格。

输入为:

<div>
    <title>Operational Commands</title>
    <p>show ip nat filtershow ip nat interfaceshow ip nat interface-statistics</p>
<div>
    <title>Release Information</title>
    <p>Command introduced in Viptela Software Release 18.3.​</p>
</div>
<div>
    <title>Additional Information</title>
    <p>See the Configuring Transport-Side NAT article for your software release.</p>
    <p> </p>
</div>

我的xslt代码是:

<xsl:variable name='list' select='//div'/>

<xsl:template match='/'>

        <xsl:for-each select='$list'>
            <xsl:element name='section'>
                <xsl:apply-templates select='*[not(name(.)="div")]'/>

            </xsl:element>
        </xsl:for-each>

</xsl:template>

输出为:

 <section>
        <title>Operational Commands</title>
        <p>show ip nat filtershow ip nat interfaceshow ip nat interface-statistics</p>
    </section><section>
        <title>Release Information</title>
        <p>Command introduced in Viptela Software Release 18.3.​</p>
    </section><section>
        <title>Additional Information</title>
        <p>See the Configuring Transport-Side NAT article for your software release.</p>
        <p> </p>
    </section>

在上一节<p>中,标签有空格,这被视为空标签,然后我需要删除此空标签。我该如何删除呢?

1 个答案:

答案 0 :(得分:1)

首先,包含不间断空格的元素不为空。除非您已指示样式表对其进行转换,否则不间断空格不会在输出中“将其转换为空间”。

现在,要删除<p>&#160;</p>元素,您可以添加一个与之匹配的空模板:

<xsl:template match="p[.='&#160;']"/>

如果需要,可以制作一个更通用的模板,该模板删除所有空白和仅包含空白的p元素:

<xsl:template match="p[not(normalize-space(translate(., '&#160;', ' ')))]"/>