как удалить тег, имеющий значение - PullRequest
0 голосов
/ 28 января 2019

Входные данные:

<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 голосов
/ 29 января 2019

Во-первых, элемент, содержащий неразрывный пробел, не является пустым.И неразрывный пробел не «конвертируется в пробел» в выводе, если только вы не указали таблице стилей преобразовать его.

Теперь, чтобы удалить элемент <p>&#160;</p>, вы можете добавить пустой шаблонсоответствующий ему:

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

Если вы хотите, вы можете создать более общий шаблон, который удаляет все пустые и только пробельные элементы p:

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