Hello, 

XQuery is a lovely language and together with BaseX it is very lovely. 

But now, for a project that need Python, I find difficulties
understanding the general workflow communicating between BaseX and
Python. 

My basic situation boils down to 1) execute a query on BaseX that
returns a list of data 2) analyse every item in the in Python 3) push
the analysis result back in to BaseX. 

I have done updates like this solely in XQuery but this time I need the
analysis part done in Python. 

Since I seem to only get a list of strings out of a query executed by
the client, is this usecase even possible? 

Below is attached my sample running code 

Best regards,
Kristian K 

```Python
from BaseXClient import BaseXClient

# open a session
session = BaseXClient.Session('localhost', 1984, 'admin', 'admin')

# execute a query that returns a list of entry elements
query = session.query("""
let $list := 
  <list>
    <entry>
      <a>1</a>
      <b>2</b>
    </entry>
    <entry>
      <a>1</a>
      <b>2</b>
      <c>3</c>
    </entry>
  </list>

let $items :=
    for $entry in $list/entry[not(exists(./c))]
      return $entry

return $items
"""
)

# process each item of the query
for typecode, item in query.iter():
  print(type(item))
  print(item)

session.close()
``` 

This returns simply:
<class 'str'> # the type of returned item is of class 'str'
<entry>        # this is the content of the plain text object
  <a>1</a>
  <b>2</b>
</entry>

Reply via email to