You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XSLT从ASP生成的复杂HTML页面中筛选提取所需内容?

实现说明

结论

该需求完全可以通过XSLT实现,你提供的源HTML是标准XHTML格式,可直接被XSLT解析处理。

核心实现逻辑

  • 首先在XSLT中声明与源文件对应的XHTML命名空间,避免节点匹配失效
  • 以身份转换模板为基础,默认保留所有需要的节点与属性
  • 过滤规则直接屏蔽不需要的内容:class为nav的导航节点、class为about的介绍节点、ASP生成的隐藏节点、菜单、页面头部/页脚等无关内容
  • 锚定<p class="page-title">Library</p>为内容起点,提取该节点及之后所有符合要求的兄弟节点(包含所有脚注内容)
  • 如需批量合并多文件,可通过XSLT的document()函数批量加载所有待处理HTML,依次处理后拼接输出为单个完整HTML文件

示例XSLT代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xhtml="http://www.w3.org/1999/xhtml" 
    exclude-result-prefixes="xhtml">

    <!-- 输出配置:生成标准HTML -->
    <xsl:output method="html" indent="yes" encoding="UTF-8"/>

    <!-- 身份转换模板:默认复制所有节点和属性 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 匹配内容起点,处理后续所有符合要求的内容 -->
    <xsl:template match="xhtml:p[@class='page-title' and normalize-space(text())='Library']">
        <!-- 复制当前标题节点 -->
        <xsl:copy-of select="."/>
        <!-- 处理后续兄弟节点,过滤导航和about内容 -->
        <xsl:apply-templates select="following-sibling::node()[
            not(self::xhtml:div[@class='nav']) 
            and not(self::xhtml:p[@class='about'])
        ]"/>
    </xsl:template>

    <!-- 根模板:构建输出HTML结构 -->
    <xsl:template match="/">
        <html>
            <head>
                <title>合并书籍内容</title>
            </head>
            <body>
                <!-- 单文件处理逻辑,多文件可在此处循环调用document()加载所有待处理文件 -->
                <xsl:apply-templates select="//xhtml:p[@class='page-title' and normalize-space(text())='Library']"/>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

多文件合并扩展

如果需要合并多个ASP生成的HTML文件,只需要修改根模板逻辑,将所有待处理文件路径存入列表,循环调用document(文件路径)加载并执行筛选逻辑,即可自动将所有文件的有效内容拼接为单个HTML文件。

内容的提问来源于stack exchange,提问作者Karsten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:54:03