Xml XQuery错误XPST0003语法错误

Xml XQuery错误XPST0003语法错误,xml,xquery,exist-db,exide,Xml,Xquery,Exist Db,Exide,我想查询一个网站并生成HTML。我不熟悉XQuery。 我正在使用eXist db中的eXide。我试着用氧气,但氧气一直有问题。 此外,我不明白为什么这段代码在eXide中不起作用: xquery version "3.0"; import module namespace http = "http://exist-db.org/xquery/httpclient"; import module namespace util = "http://exist-db.org/xquery/ut

我想查询一个网站并生成HTML。我不熟悉XQuery。 我正在使用eXist db中的eXide。我试着用氧气,但氧气一直有问题。 此外,我不明白为什么这段代码在eXide中不起作用:

xquery version "3.0";
import module namespace http =  "http://exist-db.org/xquery/httpclient";
import module namespace util =  "http://exist-db.org/xquery/util";

declare option exist:serialize "method=xhtml  media-type=text/html";

let $spreadsheet-url := 'https://docs.google.com/spreadsheets/d/1rNHWMonN4RSnvxMYpkqeGHG_bBz-WpxCI-2_Wc/gviz/ tq?tqx=out:json'



let $spreadsheet-response := http:get(xs:anyURI($spreadsheet-url), true(),  <Headers/>)

let $body :=  util:base64-decode($spreadsheet-response/httpclient:body/text())

let $x :=  parse-json(substring-before(substring-after($body,'('),');'))

let $odk-server:="http//192.168.0.104"

let $amp:="&amp;"

let $gmap-api-key:="AIzaSyCYC9h9pMGGvREo................"

return
    <html>
        <head>
            <title>Results</title>
        </head>
        <body>
            <table>
                <tr>
                    <th>Mapa</th>
                    <th>Detalhes</th>
                </tr>
                {
                    for $data in $x?table?rows?*
                        let $latitude := $data?c(11)?v
                        let $longitude := $data?c(12)?v
                        let $map-url := concat("https://maps.googleapis.com/api/staticmap?center=",$latitude,",", $longitude, $amp, "zoom=18", $amp, "size=400x400", $amp, "markers=color:blue|", $latitude,",",$longitude, $amp,"key=",$gmap-api-key)

                        let $name:= $data?c(8)?v
                        let $age:=$data=?c(9)?v
                        let $date:=$data?c(10)?f
                        let $image:= replace($data?c(15)?v,"http://aggregate.defaultdomain", $odk-server)
                        return
                            <tr>
                                <td><img src='{$map-url}' alt="map"/></td>
                                <td>
                                    <img src='{$image}' height="200" width="200" alt="imagem"/>
                                <p>{$name}</p><p>{$age}</p><p>{$date}</p>
                                </td>
                                <td>
                                </td>
                            </tr>

                }

            </table>

        </body>
    </html>
它在第34行中给了我一个错误,说它是预期的和发现的*


下一行末尾有一个输入错误,即$ampkey=中变量和字符串之间缺少逗号

其他一切似乎在语法上都是正确的

如果eXide不支持语法$array?*以获取数组的所有条目,则可以尝试从

for $data in $x?table?rows?*
[...]


在这里显示的部件之前是否有更多代码?XQuery脚本不能以return开头。@LeoWörteler是的,但它只有diretores和maps API代码,其版本为eXist?是的,如果我删除for行,它就工作了,与此有关吗?如果问题出在?*上,你可以尝试重写我编辑的答案。它工作了,但是现在它给了我另一个错误:err:XQST0033在加载模块http:prefix'http'绑定到时发现错误,希望您能帮助我错误代码XQST0033:prolog包含同一名称空间前缀的多个声明,这是不允许的。您是否将前缀http绑定到两者http://exist-db.org/xquery/httpclient 和http://expath.org/ns/http-client? 应该只需要第二个。
for $data in $x?table?rows?*
[...]
let $rows := $x?table?rows
for $i in 1 to array:size($rows)
let $data := $rows($i)
[...]