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

如何用XPath 3.1获取HTML5浏览器解析后的colspan属性值?

用XPath 3.1实现符合HTML5规范的colspan取值

要让XPath获取的<td>元素colspan值和HTML5浏览器解析结果完全一致,得严格照着HTML5的属性解析规则来写表达式。下面是具体实现和说明:

最终XPath表达式

for $td in //td
return
  let $last_colspan := $td/@colspan[last()]
  let $clean_val := normalize-space($last_colspan)
  return
    if (empty($clean_val) or not(matches($clean_val, '^\d+$'))) then
      1
    else
      max((xs:integer($clean_val), 1))

逻辑对应HTML5解析规则

每一步都贴合浏览器的处理逻辑:

  • 处理重复属性:$td/@colspan[last()]取最后一个colspan属性——浏览器碰到重复属性时,只会保留最后一个,前置的重复属性会被忽略。
  • 清理空白字符:normalize-space($last_colspan)去掉属性值前后的空格;如果元素没有colspan属性,这一步会得到空字符串。
  • 校验合法格式:matches($clean_val, '^\d+$')检查是否为纯十进制数字串——像你遇到的"2e1",因为包含非数字字符e,会被判定为无效格式。
  • 兜底有效值:
    • 若属性不存在、值为空或格式无效,直接返回默认值1;
    • 就算是纯数字但数值小于1(比如"0"),也强制返回1,因为HTML5规定colspan必须≥1。

场景测试示例

针对不同情况的取值结果:

  • 无colspan属性的<td>:返回1
  • <td colspan=" 4 ">:返回4`
  • <td colspan="2e1">:返回1`(符合浏览器解析逻辑)
  • <td colspan="0">:返回1`
  • <td colspan="3" colspan="5">:返回5`(取最后一个属性值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:10:15