【发布时间】:2010-10-27 06:12:56
【问题描述】:
我有一个 XHTML 文档,我想选择其中唯一具有 class="index" 的表。
如果我理解正确,后代轴将选择所有从当前节点直接和间接下降的节点,所以这就是我所得到的。
//descendant::table[@class="index"]
使用 xmlstarlet 进行测试时,它似乎无法正常工作。是我的工具坏了,还是 XPath 表达式错误?
【问题讨论】:
-
如果您发布示例输入,我们可以确定该工具是否损坏。 (例如,您可能需要使用命名空间前缀。)一个快速说明,//descendant:: 是多余的。在这种情况下,使用 /descendant::table(只有一个斜杠)或简单地使用 //table。 “//”是“/descendant-or-self::node()/”的简写
-
metacritic.com/film/highscores.shtml 就是这样一个例子,但它必须通过 Tidy 和其他一些调整才能准备好 XSLT。
-
调整是否包括添加 XHTML 命名空间声明?在 XPath 中,如果要按名称选择使用命名空间的节点,则必须声明命名空间(并在表达式中使用前缀)。
标签: xml xslt xpath screen-scraping