使用XSL导入HTML表

时间:2011-01-05 17:57:58

标签: html xslt xpath

我构建了一个XSL文件,该文件解析XML格式的日志,并生成一个包含日志信息的HTML页面。在这个相同的XSL文件中,我试图使用XSL来提取包含我想要显示的表的外部HTML文件。就目前而言,我可以显示包含该表的整个页面,但无法隔离该表。如何才能做到这一点?目前,我可以使用以下代码拉入整个页面:

<xsl:copy-of select="document($tablePageUrl)" />

但是,我不明白如何遍历HTML正文并提取表的副本。 HTML文档如何格式化的示例(文档是正确的XML,但不是正确的HTML):

<html>
<head>
</head>
<body>
<table>
    Table Contents
</table>
</body>
</html>

4 个答案:

答案 0 :(得分:2)

听起来您想使用XPath来选择文档中的特定元素。

尝试类似:

<xsl:copy-of select="document($tablePageUrl)/html/body/table" />

答案 1 :(得分:0)

来自评论:

  

我曾尝试使用XPath但正在使用   语法不正确

来自http://www.w3.org/TR/xpath/#node-sets

  

///运营商组成了一个   表达和相对位置   路径。如果表达式是错误的   不评估节点集。该   /运算符在。{   与在{中使用/的方式相同   位置路径

特别是这种语法:

document($tablePageUrl)/html/body/table

制作完成后:

PathExpr    ::=   FilterExpr '/' RelativeLocationPath 

FilterExpr  ::=   PrimaryExpr 

PrimaryExpr ::=   FunctionCall  

答案 2 :(得分:0)

检查HTML是否在命名空间中。 (查找一个告密者xmlns =“....”。)您的示例不在命名空间中,但根据经验,如果人们没有意识到命名空间很重要,他们通常会在发布样本时删除命名空间声明。如果元素位于命名空间中,则XPath表达式需要使用带前缀的名称来选择它们。

答案 3 :(得分:-1)

<xsl:variable name="source-html" select="document('url')" />

<xsl:value-of select="$source-html//table" />