1

我正在尝试将有关每个单元格的所有信息放在一个表格中的一行中。我需要弄清楚如何打印表格中每一列的标题。

td, table {
  border: 2px black solid;
}
<table>
  <tr>
    <td>a1</td>
    <td>a2</td>
    <td>a3</td>
    <td>a4</td>
  </tr>
  <tr>
    <td>b1</td>
    <td>b2</td>
    <td>b3</td>
    <td>b4</td>
  </tr>
  <tr>
    <td>c1</td>
    <td>c2</td>
    <td>c3</td>
    <td>c4</td>
  </tr>
  <tr>
    <td>d1</td>
    <td>d2</td>
    <td>d3</td>
    <td>d4</td>
  </tr>
</table>

Table 1
+----+----+----+----+
| a1 | a2 | a3 | a4 |
+----+----+----+----+
| b1 | b2 | b3 | b4 |
+----+----+----+----+
| c1 | c2 | c3 | c4 |
+----+----+----+----+
| d1 | d2 | d3 | d4 |
+----+----+----+----+

Table 2
+----+----+----+----+
| e1 | e2 | e3 | e4 |
+----+----+----+----+
| f1 | f2 | f3 | f4 |
+----+----+----+----+
| g1 | g2 | g3 | g4 |
+----+----+----+----+
| h1 | h2 | h3 | h4 |
+----+----+----+----+

And Other Tables ...

我想用列顶部的单元格打印单元格(即tr [1])。

输出不应该有第一个 raw ..

第一个输出应该是:

单元格 b1 具有标题 a1

..

单元格 g2 具有标题 e2

等等 ..

我正在使用 xidel:

xidel $site -e "//tr[position()>1]/td/concat('The cell ', ., $codeX)"

的值$codeX应该是多少?

谢谢,

4

3 回答 3

2

Xidel 支持 XQuery 3.0,因此对于构建任务,我建议例如

let $rows := //tr,
    $header-cells := $rows[1]/td
for $data-row in $rows[position() gt 1]
for $cell at $pos in $data-row/td
return $cell!('cell ' || . || ' has header ' || $header-cells[$pos])

不确定这是否从命令行运行良好,但可以完成工作。

于 2017-08-10T15:43:08.890 回答
1

您只能使用 xpath 来获取它:

//table//tr[1]/td[count(//table//td[text()='${cellValue}']/preceding-sibling::*) + number(boolean(//table//td[text()='${cellValue}']/preceding-sibling::*))]

注意:指定包含现有值的单元格(例如'b3')会从标题('a3')中给出正确的单元格。如果您尝试搜索单元格的无效值,则会收到正确的空值,因为标题中的单元格不存在。

于 2018-12-07T20:56:33.167 回答
0

要获取表头文本,只需获取第一个 tr 数据//tr[1]/td//tr[1]/th标签是否th用于标题(这是预期的)

要按列文本获取标题,请在该表上尝试此 XPath:https ://www.w3schools.com/css/tryit.asp?filename=trycss_table_border

//th[count(//tr/td[text()='Griffin'])]

逻辑是:通过使用函数找到td具有特定文本的位置。并通过这个位置找到//tr/td[text()='Griffin']count()th

于 2017-08-10T08:13:09.100 回答