Clients

From BaseX Documentation
Revision as of 03:53, 5 December 2014 by CG (talk | contribs)
Jump to navigation Jump to search

This page is part of the Developer Section. It describes how to communicate with BaseX with other programming languages.

Please note that we have switched from cram-md5 to digest authentication in Template:Mark. If a language binding does not work anymore, it will need to be slightly updated. Please have a look at our Server Protocol for more information on the exchanged bytes. Your contributions are welcome!

You can use the following light-weight language bindings to connect to a running BaseX server instance, execute database commands, perform queries, or listen to events.

Most clients provide two modes:

  • Standard Mode: connecting to a server, sending commands
  • Query Mode: defining queries, binding variables, iterative evaluation

Currently, we offer bindings for the following programming languages:

Object oriented
Java: The default implementation
C#, VB, Scala
Scala: contributed by Manuel Bernhardt
ActionScript: contributed by Manfred Knobloch
Scripting
Perl
PHP: updated by James Ball
Python 3.x, 2.7.3: contributed by Hiroaki Itoh
Python < 2.7: improved by Arjen van Elteren
Rebol: contributed by Sabu Francis
Ruby
Functional
Haskell: contributed by Leo Wörteler
Lisp: contributed by Andy Chambers
Others
node.js: contributed by Andy Bunce
node.js: contributed by Hans Hübner (deviating from client API)
Golang: contributed by Christian Baune
Qt: contributed by Hendrik Strobelt
C

Many of the interfaces contain the following files:

  • BaseXClient contains the code for creating a session, sending and executing commands and receiving results. An inner Query class facilitates the binding of external variables and iterative query evaluation.
  • Example demonstrates how to send database commands.
  • QueryExample shows you how to evaluate queries in an iterative manner.
  • QueryBindExample shows you how to bind a variable to your query and evaluates the query in an iterative manner.
  • CreateExample shows how new databases can be created by using streams.
  • AddExample shows how documents can be added to a database by using streams.
  • EventExample demonstrates how to watch and unwatch Events.

Changelog

Version 8.0
  • Updated: CRAM-MD5 replaced with digest authentication