我正在尝试运行以下XQuery代码 -
declare variable $doc="E:\Arvind\Workspace\XML\test.xml"
let $page_title:= $doc//title[contains(.,'Error 404')]
let $assignee_block := $doc//div[@class="patent_bibdata" and contains(.,'Original Assignee')]
for $assignee_link in $assignee_block/a
for $assignee_link_url in $assignee_link/@href
where contains($assignee_link_url,'inassignee')
return
if($page_title) then
'404'
else if ($assignee_block) then
return data($assignee_link)
else return 'Missing'
但是我收到了这个错误 -
XQuery syntax error in #...) else return 'Missing'#:
Unexpected token "<eof>" in path expression
我在这里做错了什么?如何在最终的其他地方显示静态文本'Missing'?
答案 0 :(得分:0)
在if
表达式中,无需指定return
关键字。接下来,变量声明需要:=
而不是=
:
declare variable $doc := "E:\Arvind\Workspace\XML\test.xml";
let $page_title := $doc//title[contains(.,'Error 404')]
let $assignee_block := $doc//div[@class="patent_bibdata" and contains(.,'Original Assignee')]
for $assignee_link in $assignee_block/a
for $assignee_link_url in $assignee_link/@href
where contains($assignee_link_url,'inassignee')
return
if($page_title) then '404'
else if ($assignee_block) then data($assignee_link)
else 'Missing'
在开发过程中,使用直接为您提供语法错误反馈的编辑器(如BaseX GUI或oXygen)可能会有所帮助。
答案 1 :(得分:0)
我在这里做错了什么?
非常明显:
$doc
被声明为字符串 = "E:\Arvind\Workspace\XML\test.xml"
在下一行:
let $page_title:= $doc//title[contains(.,'Error 404')]
无法在字符串上应用XPath伪运算符//
。
要解决此问题,请更改:
declare variable $doc="E:\Arvind\Workspace\XML\test.xml"
以强>:
declare variable $doc=doc("E:\Arvind\Workspace\XML\test.xml")
此外,由于doc()
接受 URI ,因此文件路径必须如下所示:
declare variable $doc=doc("file:///E:/Arvind/Workspace/XML/test.xml")