Запрос не показывает мне страницы книг или названия - PullRequest
0 голосов
/ 27 марта 2020

Я уже некоторое время пытаюсь сделать запрос, но не могу. Приведенные вами примеры очень просты. Название, первый автор и страницы заимствованных книг. это упражнение. Это то, что я пытался, но я ничего не получил обратно.

Это мой запрос

  let $b := //biblioteca
    for $c in $b/prestamos/entrada/titulo
    for $d in $b/libros/libro[/titulo=$c]
    return $c and $d/paginas and $d/autor

Это файл XML:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!-- Fichero: libros.xml -->
<biblioteca>
 <libros>
  <libro publicacion="2003" edicion="2">
    <titulo>Learning XML</titulo>
    <autor>
      <apellido>Ray</apellido>
      <nombre>Erik T.</nombre>
    </autor>
    <editorial>O'Reilly</editorial>
    <paginas>416</paginas>
  </libro>
  <libro publicacion="2003" edicion="2">
    <titulo>XML Imprescindible</titulo>
    <autor>
      <apellido>Harold</apellido>
      <nombre>Elliot Rusty</nombre>
    </autor>
    <autor>
    <apellido>Means</apellido>
      <nombre>W. Scott</nombre>
    </autor>
    <editorial>O'Reilly</editorial>
    <paginas>832</paginas>
  </libro>
  <libro publicacion="2002">
    <titulo>XML Schema</titulo>
    <autor>
      <apellido>van der Vlist</apellido>
      <nombre>Eric</nombre>
    </autor>
    <editorial>O'Reilly</editorial>
    <paginas>400</paginas>
  </libro>
  <libro publicacion="2002">
    <titulo>XPath Essentials</titulo>
    <autor>
      <apellido>Watt</apellido>
      <nombre>Adrew</nombre>
    </autor>
    <editorial>Wiley</editorial>
    <paginas>516</paginas>
  </libro>
  <libro publicacion="2005">
    <titulo> Beginning XSLT 2.0: Form Novice to Professional</titulo>
    <autor>
      <apellido>Tennison</apellido>
      <nombre>Jeni</nombre>
    </autor>
    <editorial>Apress</editorial>
    <paginas>797</paginas>
  </libro>
  <libro publicacion="2007">
    <titulo> XQuery</titulo>
    <autor>
      <apellido>Walmsley</apellido>
      <nombre>Priscilla</nombre>
    </autor>
    <editorial>O'Reilly</editorial>
    <paginas>491</paginas>
  </libro>
 </libros>

<!-- Tabla prestamos -->
 <prestamos>
  <entrada>
    <titulo>XML Imprescindible</titulo>
    <prestamo>
      <inicio>2011-05-02</inicio>
      <lector>
        <nombre>Pepito</nombre>
        <apellidos>Grillo</apellidos>
        <direccion>Rue Percebe, 13</direccion>
        <telefono>972987654</telefono>
      </lector>
    </prestamo>
  </entrada>
  <entrada>
    <titulo>XML Imprescindible</titulo>
    <prestamo>
      <inicio>2011-02-12</inicio>
      <devolucion>2011-02-16</devolucion>
      <lector>
        <nombre>Jose</nombre>
        <apellidos>Gutiérrez González</apellidos>
        <direccion>Rue Percebe, 13</direccion>
        <telefono>919485432</telefono>
      </lector>
    </prestamo>
  </entrada>
  <entrada>
    <titulo>XPath Essentials</titulo>
    <prestamo>
      <inicio>2011-02-23</inicio>
      <devolucion>2011-03-10</devolucion>
      <lector>
        <nombre>Pepito</nombre>
        <apellidos>Grillo</apellidos>
        <direccion>Rue Percebe, 13</direccion>
        <telefono>972987654</telefono>
      </lector>
    </prestamo>
  </entrada>
 </prestamos>
</biblioteca>

Я работаю в java с БД, и мне нужно создать скрипт с этим запросом, но примеры, которые я привел от учителя, очень просты c, и я не могу найти ошибку, которую я сделал при выполнении запроса. Я надеюсь, что вы можете помочь мне

1 Ответ

1 голос
/ 27 марта 2020

Внутри предиката вы, вероятно, хотите $b/libros/libro[titulo=$c], а не $b/libros/libro[/titulo=$c], поскольку /titulo выбирает элемент titulo root, в то время как titulo выбирает titulo дочерний элемент libro элемента, предикат которого используется на.

Оператор and является логическим оператором, поэтому я сомневаюсь, что вы хотите использовать его в предложении return. Вы не показали, какой результат вам нужен, оператор запятой ($c, $d/paginas, $d/autor) с большей вероятностью вернет значимый результат.

...