如何处理xquery中的空节点?

How to deal with empty node in xquery?

我想打印这样的 TSV 输出。但是当 $x/span 没有找到任何东西时,只会打印两列。当 $x/span 什么也找不到时,如何在第二列中插入一个空字段?谢谢

for $x in //td/b/a[@title]/parent::b/parent::td
return join(
    (
        $x/b/a/@title
        , $x/span
        , $x/p
    )
    , x:cps(9)
)

您可以使用 if/else 语句来控制缺少 span 标签时的操作。

if (empty($x/span)) then  
    (: do what you need here :)
else  
    $x/span

一个常见的成语是

($x/span, "default")[1]

但是如果 $x/span 可以 select 多个项目,这可能不适合你。

XPath:

//td[b/a[@title]]/join(
  (
    b/a/@title,
    (span,"")[1],
    p
  ),
  x:cps(9)
)

XQuery:

for $x in //td[b/a[@title]] return
$x/join(
  (
    b/a/@title,
    (span,"")[1],
    p
  ),
  "	"
)