我构建了一个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>
答案 0 :(得分:2)
答案 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" />