这个 xquery 脚本中的语法错误是什么?
我是 XQuery 的初学者,尝试做一些简单的练习来学习它。但是我试图组合在一起的这个最新查询拒绝运行,给我一个语法错误。
这是我的 XQuery:
<HTML>
<HEAD><TITLE>Alphabetical Cities Lists</TITLE></HEAD>
<BODY>
{
for $indcode in (65 to 70)
let $indlet := codepoints-to-string($indcode)
return
<H1> {$indlet} LIST </H1>
{
for $cit in doc("mydoc.xml")/CITIES/ENTITY
where starts-with($cit/NAME,$indlet)
order by $cit/NAME
return <LI>{$cit/NAME}</LI>
}
</OL>
}
</BODY>
</HTML>
这是我的 XML 文件 mydoc.xml 的子集:
<CITIES>
<ENTITY>
<NAME>Hastings</NAME>
<CITYCOD>230</CITYCOD>
<CNTYCOD>01</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Tilden</NAME>
<CITYCOD>487</CITYCOD>
<CNTYCOD>02</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Alliance</NAME>
<CITYCOD>008</CITYCOD>
<CNTYCOD>07</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Hemingford</NAME>
<CITYCOD>236</CITYCOD>
<CNTYCOD>07</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Ainsworth</NAME>
<CITYCOD>003</CITYCOD>
<CNTYCOD>09</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Kearney</NAME>
<CITYCOD>269</CITYCOD>
<CNTYCOD>10</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Oakland</NAME>
<CITYCOD>358</CITYCOD>
<CNTYCOD>11</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Eagle</NAME>
<CITYCOD>159</CITYCOD>
<CNTYCOD>13</CNTYCOD>
</ENTITY>
</CITIES>
我想要它做的是打印出一个简单的 HTML 文档,其中包含这些城市名称的多个列表,按它们开头的字母进行划分(A 到F)。
但是当我尝试在 此网站 上运行它时,它给了我这个错误:
查询:<>,第 9 行,第 6 列:[XPST0003] 语法错误,意外的“'{'”,期待“'}'”
我不知道为什么这么说。我检查了又检查,但我的大括号似乎都正确匹配。谁能看出问题是什么吗?谢谢。
I'm a beginner to XQuery, trying to do some simple exercises to learn it. But this latest query I'm trying to put together refuses to run, giving me a syntax error.
This is my XQuery:
<HTML>
<HEAD><TITLE>Alphabetical Cities Lists</TITLE></HEAD>
<BODY>
{
for $indcode in (65 to 70)
let $indlet := codepoints-to-string($indcode)
return
<H1> {$indlet} LIST </H1>
{
for $cit in doc("mydoc.xml")/CITIES/ENTITY
where starts-with($cit/NAME,$indlet)
order by $cit/NAME
return <LI>{$cit/NAME}</LI>
}
</OL>
}
</BODY>
</HTML>
And this is a subset of my XML file mydoc.xml:
<CITIES>
<ENTITY>
<NAME>Hastings</NAME>
<CITYCOD>230</CITYCOD>
<CNTYCOD>01</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Tilden</NAME>
<CITYCOD>487</CITYCOD>
<CNTYCOD>02</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Alliance</NAME>
<CITYCOD>008</CITYCOD>
<CNTYCOD>07</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Hemingford</NAME>
<CITYCOD>236</CITYCOD>
<CNTYCOD>07</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Ainsworth</NAME>
<CITYCOD>003</CITYCOD>
<CNTYCOD>09</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Kearney</NAME>
<CITYCOD>269</CITYCOD>
<CNTYCOD>10</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Oakland</NAME>
<CITYCOD>358</CITYCOD>
<CNTYCOD>11</CNTYCOD>
</ENTITY>
<ENTITY>
<NAME>Eagle</NAME>
<CITYCOD>159</CITYCOD>
<CNTYCOD>13</CNTYCOD>
</ENTITY>
</CITIES>
What I want it to do is print out a simple HTML document with several lists of these city names, broken out by the letter they start with (A to F).
But when I try running this out on this site, it gives me this error:
Query: <>, line 9, column 6: [XPST0003] syntax error, unexpected "'{'", expecting "'}'"
I have no idea why it says that. I've checked and checked, but my curly braces all seem properly matched. Can anyone see what the problem is? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个常见的错误。
您需要在
和
节点之间放置一个 , 。
单个节点是一个 XQuery 表达式(直接元素构造函数内的多个节点也是如此)。返回表达式必须是一个表达式。在这种情况下,您想要返回两个节点。每个节点都是一个单独的项目,因此为了返回它们,您需要按顺序连接两个节点。
查询如下所示:
This is a common mistake.
You need to place a , between the
<H1>
and<OL>
nodes.A single node is an XQuery expression (as are multiple nodes inside a direct element constructor). The return expression must be an expression. In this case you want to return two nodes. Each node is a single item and so in order to return them both you need to concatenate the two nodes in a sequence.
The query would look like this:
您忘记了
;在第 9 行的 { 之前。
所以应该是:
You forgot a <OL> before the { on line 9.
So it should be: