可以在xquery中使用字符串变量作为标记吗

可以在xquery中使用字符串变量作为标记吗,xquery,webharvest,Xquery,Webharvest,我可以在xquery中使用如下内容吗?基本上我想使用字符串变量作为标记。我正在使用WebHarvest提取数据。感谢您的帮助或指点 declare variable $doc as node() external; declare variable $tag as xs:string; let $tag := $doc//div[@class=details]//tr[1]/td[1] return <$tag>{$doc//div[@class=details]//tr[

我可以在xquery中使用如下内容吗?基本上我想使用字符串变量作为标记。我正在使用WebHarvest提取数据。感谢您的帮助或指点

declare variable $doc as node() external;
declare variable $tag as xs:string;
let $tag := $doc//div[@class=details]//tr[1]/td[1]
return 
    <$tag>{$doc//div[@class=details]//tr[1]/td[2]</$tag>
将变量$doc声明为node()外部;
将变量$tag声明为xs:string;
让$tag:=$doc//div[@class=details]//tr[1]/td[1]
返回
{$doc//div[@class=details]//tr[1]/td[2]

是,这在元素{}构造中是可能的:

return element {$tag} {$doc//div[@class=details]//tr[1]/td[2]}

是的,这在元素{}构造中是可能的:

return element {$tag} {$doc//div[@class=details]//tr[1]/td[2]}

使用元素构造函数
元素{$tag}{$content}

您的查询还有两个问题:

  • 不需要将
    $tag
    声明为变量,您还是在隐藏它
  • 结束标记前面缺少结束卷曲括号
这段代码应该适用于除MSSQL之外的所有情况,MSSQL不支持元素构造函数的标记名字段中的变量名:

declare variable $doc as node() external;

let $tag := $doc//div[@class=details]//tr[1]/td[1]
return 
    element { $tag } { $doc//div[@class=details]//tr[1]/td[2] }

使用元素构造函数
元素{$tag}{$content}

您的查询还有两个问题:

  • 不需要将
    $tag
    声明为变量,您还是在隐藏它
  • 结束标记前面缺少结束卷曲括号
这段代码应该适用于除MSSQL之外的所有情况,MSSQL不支持元素构造函数的标记名字段中的变量名:

declare variable $doc as node() external;

let $tag := $doc//div[@class=details]//tr[1]/td[1]
return 
    element { $tag } { $doc//div[@class=details]//tr[1]/td[2] }