此 xquery 脚本中的语法错误是什么? [英] What is the syntax error in this xquery script?

查看:34
本文介绍了此 xquery 脚本中的语法错误是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 XQuery 的初学者,正在尝试做一些简单的练习来学习它.但是我试图组合的这个最新查询拒绝运行,给我一个语法错误.

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.

这是我的 XQuery:

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>

这是我的 XML 文件 mydoc.xml 的一个子集:

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>

我想要它做的是打印出一个简单的 HTML 文档,其中包含这些城市名称的几个列表,由它们开头的字母(A 到 F)分隔.

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:

查询:<>,第 9 行,第 6 列:[XPST0003] 语法错误,意外的'{'",需要'}'"

我不知道为什么这么说.我已经检查并检查过,但我的花括号似乎都正确匹配.任何人都可以看到问题是什么?谢谢.

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.

推荐答案

这是一个常见的错误.

您需要在

    节点之间放置 , .

    You need to place a , between the <H1> and <OL> nodes.

    单个节点是一个 XQuery 表达式(就像直接元素构造函数中的多个节点一样).返回表达式必须是表达式.在这种情况下,您要返回两个节点.每个节点都是一个项目,因此为了返回它们,您需要按顺序连接两个节点.

    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.

    查询将如下所示:

    <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>,
         <OL>
         {
           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>
    

    这篇关于此 xquery 脚本中的语法错误是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆