XQuery с использованием предикатов: разница между return и for - PullRequest
0 голосов
/ 25 мая 2018

Я думал, что эти два выражения xquery эквивалентны:

for $x
  in doc("hamlet.xml")//LINE[../SPEAKER = "HAMLET"]
  return $x[../preceding-sibling::SPEECH[1]/SPEAKER = "MARCELLUS"]

for $x
  in doc("hamlet.xml")//LINE[../SPEAKER = "HAMLET"][../preceding-sibling::SPEECH[1]/SPEAKER = "MARCELLUS"]
  return $x

Разница заключается в предикате, который сначала используется в возвращении, а после - в for.Почему выходные данные не совпадают?

(https://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml)

EDIT :: Я использую BASEX 9.0.1.

1 Ответ

0 голосов
/ 25 мая 2018

Они выглядят одинаково для меня.

Для первого запроса Саксон дает

<LINE>I am very glad to see you. Good even, sir.</LINE>
<LINE>But what, in faith, make you from Wittenberg?</LINE>
<LINE>Did you not speak to it?</LINE>
<LINE>Arm'd, say you?</LINE>
<LINE>From top to toe?</LINE>
<LINE>Then saw you not his face?</LINE>
<LINE>Hold off your hands.</LINE>
<LINE>How say you, then; would heart of man once think it?</LINE>
<LINE>But you'll be secret?</LINE>
<LINE>There's ne'er a villain dwelling in all Denmark</LINE>
<LINE>But he's an arrant knave.</LINE>
<LINE>Nay, but swear't.</LINE>
<LINE>Upon my sword.</LINE>
<LINE>Indeed, upon my sword, indeed.</LINE>

Для второго запроса Саксон дает:

<LINE>I am very glad to see you. Good even, sir.</LINE>
<LINE>But what, in faith, make you from Wittenberg?</LINE>
<LINE>Did you not speak to it?</LINE>
<LINE>Arm'd, say you?</LINE>
<LINE>From top to toe?</LINE>
<LINE>Then saw you not his face?</LINE>
<LINE>Hold off your hands.</LINE>
<LINE>How say you, then; would heart of man once think it?</LINE>
<LINE>But you'll be secret?</LINE>
<LINE>There's ne'er a villain dwelling in all Denmark</LINE>
<LINE>But he's an arrant knave.</LINE>
<LINE>Nay, but swear't.</LINE>
<LINE>Upon my sword.</LINE>
<LINE>Indeed, upon my sword, indeed.</LINE>

Какие различиявы видите, и какую реализацию XQuery вы используете?

...