Ошибка в поисковом запросе - PullRequest
0 голосов
/ 13 мая 2011

Я использую следующую структуру XML-документа:

<feed>
  <entry>
     <title>Title 1</title>
  </entry>
  <entry>
     <title>Entry by Sony</title>
  </entry>
</feed>

Я перебираю все документы в базе данных, чье имя документа начинается с «feed», например: feed_doc1, feed_doc2 и т. Д. Я ищу документыкоторые содержат заданное ключевое слово и пытаются вернуть название документа.Я использую BaseX XML Database и использую следующий xquery:

for $doc_name in db:list()
 where fn:starts-with($doc_name, 'feed')
    return
      for $node in doc($doc_name)/feed/entry[.//text() contains text 'Sony']]
        return $doc_name

Короче говоря, мой запрос должен возвращать имена документов всех тех документов, которые содержат ключевое слово «Sony».

Я вижу следующую ошибку:

java.io.IOException: org.basex.query.item.FTxt не может быть приведен к org.basex.query.item.QNm

Я пытался гуглить об этой ошибке, но не смог найти достаточно справочной информации.Может кто-нибудь помочь?

Спасибо, Sony

1 Ответ

0 голосов
/ 20 февраля 2012

org.basex.query.item.FTxt => является фрагментом текстового узла и org.basex.query.item.QNm => является квалифицированным именем или QName () вам, скорее всего, придется преобразовать QName в строку

однако

Ftxt (или Полный текст) => будет этим выражением .// text () содержит текст 'Sony'

двойная косая черта "позволяет шагам работать с любым потомком узла", что может быть неточным, и функции Xquery 1.1 не нужны, я бы сделал это

doc($doc_name)/entry/title[contains(text(),'Sony')]
...