# XQilla Simple API Documentation

# simple-context-item.cpp

This example parses a document and sets it as the context item. It then executes an XQuery expression that navigates relative to the context item.

    #include <iostream>
    #include <xqilla/xqilla-simple.hpp>
    #include <xqilla/runtime/Sequence.hpp>

    int main(int argc, char *argv[]) {
      // Initialise Xerces-C and XQilla by creating the factory object
      XQilla xqilla;

      // Parse an XQuery expression
      // (AutoDelete deletes the object at the end of the scope)
      AutoDelete<XQQuery> query(xqilla.parse(X("foo/bar/@baz")));

      // Create a context object
      AutoDelete<DynamicContext> context(query->createDynamicContext());

      // Parse a document, and set it as the context item
      Sequence seq = context->resolveDocument(X("foo.xml"));
      if(!seq.isEmpty() && seq.first()->isNode()) {
        context->setContextItem(seq.first());
        context->setContextPosition(1);
        context->setContextSize(1);
      }

      // Execute the query, using the context
      Result result = query->execute(context);

      // Iterate over the results, printing them
      Item::Ptr item;
      while(item = result->next(context)) {
        std::cout << UTF8(item->asString(context)) << std::endl;
      }

      return 0;
    }