Xml xquery新手-如何在嵌套的if-else中显示一些文本

Xml xquery新手-如何在嵌套的if-else中显示一些文本,xml,xquery,Xml,Xquery,我正在尝试运行以下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

我正在尝试运行以下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
我做错了什么?如何在最终else中显示静态文本“Missing”?

在if表达式中,无需指定返回关键字。接下来,变量声明需要:=而不是=:

在开发过程中,使用直接向您提供语法错误反馈的编辑器(如BaseXGUI或oXygen)可能会有所帮助

我做错了什么

很明显:

$doc声明为字符串=E:\Arvind\Workspace\XML\test.XML

在下一行:

XPath伪运算符//不能应用于字符串

要更正此问题,请更改:

致:

此外,由于doc接受URI,因此必须按如下方式显示文件路径:

declare variable $doc=doc("file:///E:/Arvind/Workspace/XML/test.xml")

除了doc函数需要一个URI,而不是Windows文件名,所以它应该是docfile:///E:/Arvind/Workspace/XML/test.xml.@MichaelKay,是的,我注意到了这一点,但我认为OP的特定XQuery实现可能会接受文件路径。将答案修改为现在也包含您的观察结果。
let $page_title:= $doc//title[contains(.,'Error 404')] 
declare variable $doc="E:\Arvind\Workspace\XML\test.xml"
declare variable $doc=doc("E:\Arvind\Workspace\XML\test.xml")
declare variable $doc=doc("file:///E:/Arvind/Workspace/XML/test.xml")