如何根据以前的标签类值删除标签?

时间:2015-05-28 12:08:14

标签: python xml xslt xpath

如何根据以前的标签类值删除标签?

输入

<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 吗?

2 个答案:

答案 0 :(得分:2)

  

任何人都可以帮我找到正确的xpath吗?

在xpath is a bit cumbersome中完美匹配CSS类 。假设您没有任何包含dropcap-image-rw的CSS类(如fe dropcap-image-qc-x)而不是类dropcap-image-rw,那么以下更简单的xpath应该可以删除元素:

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

在包含dropcap-qc的元素之后,xpath选择所有具有直接的类dropcap-image-qc的元素。

根据要求提供有关xpath的更多说明:

  • preceding-sibling::*[1]:获取直接在当前上下文元素的兄弟元素之前。这将是当前元素在同一级别之前的元素。

  • [contains(@class, 'dropcap-image-qc')]:验证当前元素 - xpath的前一位返回的元素是否具有包含"dropcap-image-qc"的类属性

我也不熟悉XSL,所以我不能就那部分提出任何建议

答案 1 :(得分:1)

  

任何人都可以帮我找到正确的xpath吗?

Chrome扩展程序Selector Gadget使得获取XPath非常容易。只需单击一个元素(或一系列元素),就可以生成XPath或CSS选择器。