从HTML删除空的段落元素

问题描述 投票:0回答:1

我有一个HTML模板(如下所示),并且正在通过用户制作的SQL Server函数将其传递,以用空的varchar替换标签(例如$ ChargeAmount_Changed $)。该函数接受两个参数。

该功能的目的是通过其他功能(此处未显示)删除所有未被数据替换的标签。但是,您可能会猜到,发生这种情况时,生成的HTML将具有较大的空白区域。

如何删除未替换标签的段落元素?

-- Start of function
DECLARE @Tags TABLE  (
        fldTagID INT IDENTITY (1, 1)
    ,   fldTag VARCHAR(50) NOT NULL
    )
    INSERT INTO @Tags
    SELECT      fldTag 
    FROM        TagTable WITH (NOLOCK)
    WHERE       fldEmailFlag = @EmailFlag --  @EmailFlag = Param1

    SELECT @RowID = COUNT(fldTag) FROM @Tags

    WHILE @RowID <> 0
    BEGIN   
        SELECT  @Tag = fldTag 
        FROM    @Tags
        WHERE   fldTagID = @RowID

        SET @Html = REPLACE(@Html, @Tag, '') -- @Html = Param2
        SET @RowID = @RowID - 1
    END

    RETURN @Html

-- End of function

-- Start of template
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title> </title>
    <style type="text/css">
        .cs2654AE3A {
            text-align: left;
            text-indent: 0pt;
            margin: 0pt 0pt 0pt 0pt
        }

        .cs37BA8FCA {
            color: #000000;
            background-color: transparent;
            font-family: Verdana;
            font-size: 9pt;
            font-weight: normal;
            font-style: normal;
        }
    </style>
</head>

<body>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">A contract item fee has been ??fldAction?? on Contract No.
            ??fldContractNo?? , for customer ??fldCustomerCode?? .</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">The fee ??fldAction?? is ??fldFeeType??</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">Located on ??fldItemType?? : ??fldItemCode??</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$ChargeAmount_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$ChargeAmount_Crtitical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$StartDate_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$StartDate_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$EndDate_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$EndDate_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$EscalationAmount_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$EscalationAmount_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$AccountCode_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$AccountCode_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$COSAccountCode_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$COSAccountCode_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$InvoiceDesc_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$InvoiceDescription_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$BillingPeriod_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$BillingPeriod_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$BillingCycle_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$BillingCycle_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$FinanceParty_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$FinanceParty_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$FinanceAmount_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$FinanceAmount_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$BillingCustomerCode_Changed$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">$BillingCustomerCode_Critical$</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">This change was made by : ??fldEmpFullName??</span></p>
    <p class="cs2654AE3A"><span class="cs37BA8FCA">&nbsp;</span></p>
</body>

</html>
-- End of template
html sql-server
1个回答
0
投票

我认为这不是针对开发数据库的。

我的猜测是,搜索未删除的标签,然后向后搜索

<p

保存此patindex,向前搜索

</p>

,现在您可以删除所有patindex之间的内容。 (不要忘了在这里计算搜索字符串)

另一种方法可能是:如果您必须处理此类任务,则可以使用JavaScript / jQuery在前端轻松完成。

$('p').each(function( index ) {if($(this).html() === '') { this.remove()}})

这将删除所有空白的段落。

© www.soinside.com 2019 - 2024. All rights reserved.