API Documentation

Database Client

class snakesist.ExistClient(host: str = 'localhost', port: int = 8080, user: str = 'admin', password: str = '', prefix: str = 'exist', parser: lxml.etree.XMLParser = <lxml.etree.XMLParser object>)

Bases: object

An eXist-db client object representing a database instance. The client can be used for CRUD operations. Resources can be queried using an XPath expression. Queried resources are identified by the absolute resource ID and, if the resource is part of a document, the node ID.

Parameters
  • host – hostname

  • port – port used to connect to the configured eXist instance

  • user – username

  • password – password

  • prefix – configured path prefix for the eXist instance

  • parser – an lxml etree.XMLParser instance to parse query results

property base_url

The base URL pointing to the eXist instance.

create_resource(document_path: str, node: str)

Write a new document node to the database.

Parameters
  • document_path – Path to collection where document will be stored, relative to the configured root collection

  • node – XML string

delete_document(document_path: str) → None

Remove a document from a database.

Parameters

document_path – The path pointing to the document (relative to the REST endpoint, e. g. ‘/db/foo/bar’)

delete_node(abs_resource_id: str, node_id: str = '') → None

Remove a node from the database.

Parameters
  • abs_resource_id – The absolute resource ID pointing to the document.

  • node_id – The node ID locating a node inside a document (optional).

query(query_expression: str) → delb.Document

Make a database query using XQuery

Parameters

query_expression – XQuery expression

Returns

The query result as a delb.Document object.

retrieve_resource(abs_resource_id: str, node_id: str = '') → snakesist.exist_client.Resource

Retrieve a single resource by its internal database IDs.

Parameters
  • abs_resource_id – The absolute resource ID pointing to the document.

  • node_id – The node ID locating a node inside a document (optional).

Returns

The queried node as a Resource object.

retrieve_resources(xpath: str) → List[snakesist.exist_client.Resource]

Retrieve a set of resources from the database using an XPath expression.

Parameters

xpath – XPath expression (whatever version your eXist instance supports via its RESTful API)

Returns

The query results as a list of Resource objects.

property root_collection

The configured root collection for database queries.

property root_collection_url

The URL pointing to the configured root collection.

update_document(data: str, document_path: str) → None

Replace a document root node with an updated version.

Parameters
  • data – A well-formed XML string containing the node to replace the old one with.

  • document_path – The path pointing to the document (relative to the REST endpoint, e. g. ‘/db/foo/bar’)

update_node(data: str, abs_resource_id: str, node_id: str) → None

Replace a sub-document node with an updated version.

Parameters
  • data – A well-formed XML string containing the node to replace the old one with.

  • abs_resource_id – The absolute resource ID pointing to the document containing the node.

  • node_id – The node ID locating the node inside the containing document.

Resources

class snakesist.DocumentResource(exist_client: snakesist.exist_client.ExistClient, query_result: Optional[snakesist.exist_client.QueryResultItem] = None)

Bases: snakesist.exist_client.Resource

A representation of an eXist document node

property abs_resource_id

The absolute resource ID pointing to a document in the database.

delete()

Remove the node from the database.

property document_path

The resource path pointing to the document.

property node_id

The node ID locating the node relative to the containing document.

update_pull()

Retrieve the current node state from the database and update the object.

update_push()

Write the resource object to the database.

class snakesist.NodeResource(exist_client: snakesist.exist_client.ExistClient, query_result: Optional[snakesist.exist_client.QueryResultItem] = None)

Bases: snakesist.exist_client.Resource

A representation of an eXist node at the sub-document level

property abs_resource_id

The absolute resource ID pointing to a document in the database.

delete()

Remove the node from the database.

property document_path

The resource path pointing to the document.

property node_id

The node ID locating the node relative to the containing document.

update_pull()

Retrieve the current node state from the database and update the object.

update_push()

Write the resource object to the database.