/* dom.h
* $Id: dom.h,v 1.13 2002/03/13 13:57:08 phish Exp $
* Author: Christian Glahn (2001)
*
* This header file provides some definitions for wrapper functions.
* These functions hide most of libxml2 code, and should make the
* code in the XS file more readable .
*
* The Functions are sorted in four parts:
* part 0 ..... general wrapper functions which do not belong
* to any of the other parts and not specified in DOM.
* part A ..... wrapper functions for general nodeaccess
* part B ..... document wrapper
* part C ..... element wrapper
*
* I did not implement any Text, CDATASection or comment wrapper functions,
* since it is pretty straightforeward to access these nodes.
*/
#ifndef __LIBXML_DOM_H__
#define __LIBXML_DOM_H__
#include <libxml/tree.h>
#include <libxml/xpath.h>
/**
* part 0:
*
* unsortet.
**/
xmlDocPtr
domCreateDocument( xmlChar* version,
xmlChar *encoding );
xmlNodePtr
domReadWellBalancedString( xmlDocPtr doc, xmlChar* string );
xmlChar*
domEncodeString( const char *encoding, const char *string );
char*
domDecodeString( const char *encoding, const xmlChar *string);
/**
* part A:
*
* class Node
**/
/* A.1 DOM specified section */
xmlChar *
domName( xmlNodePtr node );
void
domSetName( xmlNodePtr node, xmlChar* name );
xmlNodePtr
domAppendChild( xmlNodePtr self,
xmlNodePtr newChild );
xmlNodePtr
domReplaceChild( xmlNodePtr self,
xmlNodePtr newChlid,
xmlNodePtr oldChild );
xmlNodePtr
domRemoveChild( xmlNodePtr self,
xmlNodePtr Child );
xmlNodePtr
domInsertBefore( xmlNodePtr self,
xmlNodePtr newChild,
xmlNodePtr refChild );
xmlNodePtr
domInsertAfter( xmlNodePtr self,
xmlNodePtr newChild,
xmlNodePtr refChild );
/* A.3 extra functionality not specified in DOM L1/2*/
xmlChar*
domGetNodeValue( xmlNodePtr self );
void
domSetNodeValue( xmlNodePtr self, xmlChar* value );
void
domSetParentNode( xmlNodePtr self,
xmlNodePtr newParent );
xmlNodePtr
domUnbindNode( xmlNodePtr self );
const char*
domNodeTypeName( xmlNodePtr self );
xmlNodePtr
domReplaceNode( xmlNodePtr old, xmlNodePtr new );
xmlNodePtr
domIsNotParentOf( xmlNodePtr testNode, xmlNodePtr refNode );
/**
* part B:
*
* class Document
**/
xmlNodePtr
domCreateCDATASection( xmlDocPtr self, xmlChar *content );
/* extra document functions */
xmlNodePtr
domDocumentElement( xmlDocPtr document );
xmlNodePtr
domSetDocumentElement( xmlDocPtr document,
xmlNodePtr newRoot);
xmlNodePtr
domImportNode( xmlDocPtr document, xmlNodePtr node, int move );
/**
* part C:
*
* class Element
**/
xmlNodeSetPtr
domGetElementsByTagName( xmlNodePtr self, xmlChar* name );
xmlNodeSetPtr
domGetElementsByTagNameNS( xmlNodePtr self, xmlChar* nsURI, xmlChar* name );
xmlNodePtr
domSetOwnerDocument( xmlNodePtr self, xmlDocPtr doc );
xmlNsPtr
domNewNs ( xmlNodePtr elem , xmlChar *prefix, xmlChar *href );
xmlAttrPtr
domHasNsProp(xmlNodePtr node, const xmlChar *name, const xmlChar *namespace);
xmlAttrPtr
domSetAttributeNode( xmlNodePtr node , xmlAttrPtr attr );
#endif