2013-12-13 7 views
0
<authors> { 
for $a in fn:distinct-values(doc("data.xml")/books/book/author/text()) 
return <name> {$a} </name> 
{ 
    for $b in doc("data.xml")/books/book[author/text() = $a] 
    return <book> {$b/title/text()}</book> 
} 
} 
</authors> 

Это мой код, когда я запустил этот код, есть ошибка синтаксиса:XQUERY ошибка синтаксиса

4,1: static error [err:XPST0003]: invalid expression: syntax error, unexpected expression (missing comma "," between expressions?) 

Что не так с этим кодом?

ответ

4

Из вашего запроса не совсем ясно, в каком формате вы хотите, чтобы результат возвращался, но ближайший я могу придумать, который будет синтаксически правильным, - это то, что фигурные скобки используются только для вывода материала внутри XML-синтаксис):

<authors> { 
for $a in fn:distinct-values(doc("data.xml")/books/book/author/text()) 
return (<name> {$a} </name>, 
    for $b in doc("data.xml")/books/book[author/text() = $a] 
    return <book> {$b/title/text()}</book>) 
} 
</authors> 

более 'логическое' структура вернуть бы это, хотя:

<authors> { 
for $a in fn:distinct-values(doc("data.xml")/books/book/author/text()) 
return <author> 
      <name> {$a} </name> 
      { for $b in doc("data.xml")/books/book[author/text() = $a] 
       return <book> {$b/title/text()}</book> 
      } 
     </author> 
} 
</authors> 
Смежные вопросы