如何根据其先前的标签类值来删除标签?

输入:

<html>
<body>
<div>
<p id="quarter-line-below1"><span class="dropcap-image-qc ><img alt="2014" src="243864_20.png" /></span><span class="dropcap-qc">2014 </span>has had some strange and negative commentary about publishing with HTML5. The comments appear to be focused on HTML for trade fiction books and the requirements of publishing genres beyond simple narratives seems to be ignored.</p>
</div>
</body>
</html>


我必须删除所有包含dropcap-qc的标签,即<span class="dropcap-qc">2014 </span>

这个做完了。

XSL代码:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="no"/>
    <xsl:preserve-space elements="*"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>


<xsl:template match="//*[@class='dropcap-qc']"></xsl:template>

</xsl:stylesheet>


我通过Python代码在XSL之上创建。我得到所有删除的标记类名称,然后创建XSL。

我的获得类名的Python代码:https://stackoverflow.com/questions/30482435/how-to-get-count-of-every-column-value-of-table

我不太了解XSL。

我的问题是,我想删除所有dropcap-qc标记,但这应该是dropcap-image-qc标记的下一个标记。

谁能帮助我获得正确的xpath?

最佳答案

谁能帮助我获得正确的xpath?


在xpath is a bit cumbersome中完美匹配CSS类。假设您没有除dropcap-image-rw类之外的任何包含dropcap-image-qc-x的CSS类(例如f.e dropcap-image-rw),以下更简单的xpath应该可以删除元素:

//*[@class='dropcap-qc' and preceding-sibling::*[1][contains(@class, 'dropcap-image-qc')]]


在xpath上方选择所有具有类dropcap-qc的元素,这些元素直接位于具有类dropcap-image-qc的元素之后。

有关xpath的更多说明,请参见:


preceding-sibling::*[1]:获取当前上下文元素的直接在前的兄弟元素。那将是在同一级别上紧接当前元素的元素。
[contains(@class, 'dropcap-image-qc')]:验证当前元素-xpath的前一位返回的元素-是否具有包含"dropcap-image-qc"的类属性


我也不熟悉XSL,所以我不能在这方面提出任何建议

08-26 12:15