连接相同种类、相同CSS类的连续HTML标记

连接相同种类、相同CSS类的连续HTML标记,html,xslt,lxml,Html,Xslt,Lxml,我正在尝试处理几个自动生成的HTML文件,我需要加入同一类的连续span元素。这个类或多或少是先验的 编辑#1: 示例输入#1: 持不同政见者的意见 Č 伊尼 Č 阿尔伯克基品托酒店 Ū 里斯 以下样式表: XSLT1.0 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encodin

我正在尝试处理几个自动生成的HTML文件,我需要加入同一类的连续
span
元素。这个类或多或少是先验的

编辑#1:

示例输入#1:

持不同政见者的意见 Č 伊尼 Č 阿尔伯克基品托酒店 Ū 里斯


以下样式表:

XSLT1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="p">
    <xsl:copy>
        <xsl:copy-of select="@*"/>
        <span class="{span[1]/@class}">
            <xsl:apply-templates/>
        </span>
    </xsl:copy>
</xsl:template>

<xsl:template match="br">
    <xsl:text> </xsl:text>
</xsl:template>

</xsl:stylesheet>

请以代码而不是图片的形式发布您的输入,并添加预期的输出(也作为代码)在您的示例中,所有span元素都具有相同的类,因此这不是很有帮助。@michael.hor257k您是对的,请参见上面的编辑。而且,准确的类名对我来说并不重要。
span
元素具有相同的类号也是问题定义的一部分,类名并不重要。重要的是知道可能的情况是什么。如果一个可以包含多个类的,那么您的示例应该说明这一点。另外,您提到了连续跨度:是否存在同一类的跨度不连续的情况?如果是,让我们也看一个例子。@michael.hor257k我至少见过一个例子,其中
span
标记不是连续的,而是每次它们属于同一类。请看我编辑的帖子中的另一个例子谢谢你的回答,它很有效。您是对的,当然HTML必须首先转换为XHTL。但是,我可以问您如何编写样式表,以便转换保留HTML正文的其余部分吗?这是不是太笼统了?是否需要
p
元素的XPath?我不好,我应该澄清一下,我在这里展示的是一个摘录
<?xml version="1.0" encoding="UTF-8"?>
<p class="sC8420256">
  <span class="s32A37344">OPINION EN PARTIE DISSIDENTE COMMUNE AUX JUGES VUČINIČ, PINTO DE ALBUQUERQUE ET KŪRIS</span>
</p>
<?xml version="1.0" encoding="UTF-8"?>
<p class="sC8420256">
  <span class="s32A37344">OPINION CONCORDANTE DE M. LE JUGE COSTA, À LAQUELLE SE RALLIE M. LE JUGE SPIELMANN</span>
</p>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

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

<xsl:template match="p">
    <xsl:copy>
        <xsl:copy-of select="@*"/>
        <span class="{span[1]/@class}">
            <xsl:apply-templates/>
        </span>
    </xsl:copy>
</xsl:template>

<xsl:template match="span">
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="br">
    <xsl:text> </xsl:text>
</xsl:template>

</xsl:stylesheet>