xml/cxmllibrary/src/dom/src/document.c
branchRCL_3
changeset 21 604ca70b6235
parent 20 889504eac4fb
--- a/xml/cxmllibrary/src/dom/src/document.c	Tue Aug 31 17:02:56 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,951 +0,0 @@
-/*
-* Copyright (c) 2000 - 2001 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-
-#include "cxml_internal.h"
-#include <xml/cxml/nw_dom_node.h>
-#include <xml/cxml/nw_dom_document.h>
-#include <xml/cxml/nw_dom_element.h>
-#include <xml/cxml/nw_tinytree.h>
-#include <xml/cxml/nw_encoder_wbxmlwriter.h>
-#include <xml/cxml/nw_xmlp_xmlp2wbxml.h>
-#include <xml/cxml/nw_tinydom_utils.h>
-
-/*#include "nw_parser.h"*/
-
-/************************
-* DOCUMENT - NODE Methods
-*************************/
-
-EXPORT_C void
-NW_DOM_DocumentNode_Delete(NW_DOM_DocumentNode_t* docNode){
-  NW_WBXML_Parser_t *wbxmlParser;
-  NW_TinyDom_Tree_t *tinyDomTree;
-  NW_WBXML_Document_t *document;
-  NW_TinyTree_t *tinyTree;
-
-if (docNode == NULL) {
-    return;
-  }
-
-  tinyTree = NW_TinyTree_Node_findTree(docNode);
-  
-  if(tinyTree != NULL){
-    document = NW_TinyDom_getDocHeader(tinyTree);
-    tinyDomTree = NW_TinyDom_getTree(tinyTree);
-    wbxmlParser = tinyDomTree->parser;
-    if(wbxmlParser != NULL){
-      NW_WBXML_Parser_delete(wbxmlParser);
-    }
-    if(tinyDomTree != NULL){
-      NW_TinyDom_Tree_destruct(tinyDomTree);
-    }
-    if(document != NULL){
-      NW_WBXML_Document_destruct(document);
-    }
-  }
-}
-  /* ???? Does the writer need any cleanup ? */
-
-
-static void
-NW_TinyDom_Handle_Initialize(NW_TinyDom_Handle_t *h, 
-                             NW_Uint32 default_public_id,
-                             NW_Bool extTNotStringTable)
-{  
-  NW_ASSERT(h != NULL);
-
-  (void) NW_Mem_memset(h, 0, sizeof(*h));
-
-  NW_WBXML_Parser_newInPlace (&(h->wbxmlParser));
-  h->wbxmlParser.ext_t_not_table_index =(NW_Uint8)((extTNotStringTable == NW_FALSE)?
-                                          CXML_FALSE : CXML_TRUE);
-  NW_WBXML_Document_construct(&(h->document), default_public_id);
-  NW_TinyDom_Tree_construct (&(h->tinyDOMTree), 
-                             &(h->wbxmlParser), 
-                             &(h->document), 
-                             &(h->writer));
-  NW_TinyDom_Parser_construct (&(h->tinyParser), &(h->tinyDOMTree));
-}
-
-
-/* ************************************************************************/
-
-/*
- * Create and populate a dom tree by parsing a buffer, returning the
- * document node.
- */
-
-EXPORT_C
-NW_DOM_DocumentNode_t * 
-NW_DOM_DocumentNode_BuildWBXMLTree(NW_TinyDom_Handle_t *h, 
-                                   NW_Byte *buffer,
-                                   NW_Int32 length,
-                                   NW_Bool freeBuff,
-                                   NW_Bool extTNotStringTable)
-{
-  NW_Status_t status;
-
-  NW_ASSERT(h != NULL);
-
-  NW_TinyDom_Handle_Initialize(h, 0, extTNotStringTable);
-
-  status = NW_TinyDom_Parser_buildTree (&(h->tinyParser), 
-                                        (char *)buffer, 
-                                        (NW_Uint32)length,
-                                        freeBuff);
-  if (status == NW_STAT_SUCCESS) {
-    return  h->tinyDOMTree.root_node;
-  }
-  return NULL;
-}
-
-/*
- * This function is same at that of NW_DOM_DocumentNode_BuildWBXMLTree(..)
- * but returns the error code.
- */
-
-static
-NW_DOM_DocumentNode_t * 
-CXML_DOM_DocumentNode_BuildWBXMLTree(NW_TinyDom_Handle_t *h, 
-                                   NW_Byte *buffer,
-                                   NW_Int32 length,
-                                   NW_Bool freeBuff,
-                                   NW_Bool extTNotStringTable,
-                                   NW_Status_t* errorStatus)
-{
-  NW_Status_t status;
-
-  NW_ASSERT(h != NULL);
-
-  NW_TinyDom_Handle_Initialize(h, 0, extTNotStringTable);
-
-  status = NW_TinyDom_Parser_buildTree (&(h->tinyParser), 
-                                        (char *)buffer, 
-                                        (NW_Uint32)length,
-                                        freeBuff);
-  if (status == NW_STAT_SUCCESS) 
-  {
-    *errorStatus = status;
-    return  h->tinyDOMTree.root_node;
-  }
-  *errorStatus = status;
-  return NULL;
-}
-
-
-/* Function to copy the string table extension values from the 
- * WBXML encoder to WBXML parser
- */
-
-static NW_Status_t
-NW_DOM_Write_WBXML_StrTbl(NW_TinyDom_Handle_t *p, void* WBXMLEncStrTbl)
-{
-     NW_Status_t status = NW_STAT_SUCCESS;
-     NW_Status_t s = NW_STAT_WBXML_ITERATE_DONE;
-     NW_Uint32 stringTableByteCount = 0;
-     NW_Encoder_StringTableIterator_t strTableIterator;
-     NW_Uint8* pLiteralBuf;
-     NW_String_t pLiteralStr;
-     NW_Uint32 docTableIndex;
-     NW_Encoder_StringTable_t* strTable = NULL;
-     NW_WBXML_Document_t* doc = &(p->document);
-         
-     strTable = (NW_Encoder_StringTable_t*) WBXMLEncStrTbl;
-
-     stringTableByteCount = NW_Encoder_StringTable_getTotalBytes(strTable);
-     
-     
-     if(stringTableByteCount > 0)
-     {
-        /*The following function always return success so why bother to check? */
-
-        NW_Encoder_StringTable_StringTableIterateInit(WBXMLEncStrTbl,&strTableIterator);
-
-
-        s =  NW_Encoder_StringTable_StringTableIterateNext
-                    (&strTableIterator,&stringTableByteCount,&pLiteralBuf);
-
-        while(s == NW_STAT_WBXML_ITERATE_MORE)
-        {
-
-         pLiteralStr.length = stringTableByteCount;
-         pLiteralStr.storage = pLiteralBuf;
-
-         status =  NW_WBXML_Document_putTableString(doc,&pLiteralStr,&docTableIndex) ;
-
-         if(status != NW_STAT_SUCCESS)
-         {
-          break;
-         }
-
-           s =  NW_Encoder_StringTable_StringTableIterateNext
-                    (&strTableIterator,&stringTableByteCount,&pLiteralBuf) ;
-
-        }/*end while */
-
-     }/*end if(stringTableByteCount > 0)*/
-
-     //Delete the tree
-
-     NW_Encoder_StringTable_delete(WBXMLEncStrTbl);
-     WBXMLEncStrTbl = NULL;
- return status;
-}/*end NW_DOM_Write_WBXML_StrTbl()*/
-
-static
-NW_DOM_DocumentNode_t*
-NW_DOM_DocumentNode_BuildXMLTree(NW_TinyDom_Handle_t *h, 
-                                 NW_Byte *buffer,
-                                 NW_Int32 length,
-                                 NW_Uint32 publicID,
-                                 NW_Bool extTNotStringTable)
-{
-
-  NW_Buffer_t inBuff;
-  NW_Buffer_t *outBuff = NULL;
-  NW_Uint32 encoding;
-  NW_Endianness_t endianness;
-  NW_DOM_DocumentNode_t* docNode;
-  NW_Status_t status;
-  NW_Uint32 line;
-  void* WBXMLEncStrTbl;
-
-  inBuff.length = length;
-  inBuff.data = buffer;
-
-  status = NW_XML_ComputeEncoding(length, 
-                                  buffer,
-                                  &encoding, 
-                                  &endianness);
-  if(status != NW_STAT_SUCCESS){
-    return NULL;
-  }
-
-/*
- * If applications want to use HTML Parser they can call the exported
- * NW_HTMLP_HtmlToWbxml() and then call NW_DOM_DocumentNode_BuildWBXMLTree()
- */
-  status = NW_XML_XmlToWbxml(&inBuff, encoding, &outBuff, &line, publicID,&WBXMLEncStrTbl); 
-
- 
-
-  if(status != NW_STAT_SUCCESS){
-    if(outBuff != NULL){
-      NW_Mem_Free(outBuff);
-    }
-
-    return NULL;
-  }
-  docNode = NW_DOM_DocumentNode_BuildWBXMLTree(h, 
-                                              outBuff->data,
-                                              outBuff->length,
-                                              NW_TRUE,
-                                              extTNotStringTable);
-
-  /* Write extension string table related information to the WBXML encoder. */
-  
-  if( docNode && WBXMLEncStrTbl)
-    {
-     status = NW_DOM_Write_WBXML_StrTbl(h,WBXMLEncStrTbl);
-     if(status != NW_STAT_SUCCESS)
-     {
-       if(outBuff != NULL)
-       {
-         NW_Mem_Free(outBuff);
-       }
-     }
-    }/* end if(WBXMLEncStrTbl)*/
- 
-  NW_Mem_Free(outBuff);
-  return docNode;
-}
-
-static
-NW_DOM_DocumentNode_t*
-CXML_DOM_DocumentNode_BuildXMLTree(NW_TinyDom_Handle_t *h, 
-                                 NW_Byte *buffer,
-                                 NW_Int32 length,
-                                 NW_Uint32 publicID,
-                                 NW_Bool extTNotStringTable,
-                                 NW_Status_t* errorStatus)
-{
-
-  NW_Buffer_t inBuff;
-  NW_Buffer_t *outBuff = NULL;
-  NW_Uint32 encoding;
-  NW_Endianness_t endianness;
-  NW_DOM_DocumentNode_t* docNode;
-  NW_Status_t status;
-  NW_Uint32 line;
-  void* WBXMLEncStrTbl;
-
-  inBuff.length = length;
-  inBuff.data = buffer;
-
-  status = NW_XML_ComputeEncoding(length, 
-                                  buffer,
-                                  &encoding, 
-                                  &endianness);
-  if(status != NW_STAT_SUCCESS)
-  {
-    *errorStatus = status;
-    return NULL;
-  }
-
-/*
- * If applications want to use HTML Parser they can call the exported
- * NW_HTMLP_HtmlToWbxml() and then call NW_DOM_DocumentNode_BuildWBXMLTree()
- */
-  status = NW_XML_XmlToWbxml(&inBuff, encoding, &outBuff, &line, publicID,&WBXMLEncStrTbl); 
-
- 
-
-  if(status != NW_STAT_SUCCESS){
-    if(outBuff != NULL){
-      NW_Mem_Free(outBuff);
-    }
-    *errorStatus = status;
-    return NULL;
-  }
-
-  docNode = CXML_DOM_DocumentNode_BuildWBXMLTree(h, 
-                                              outBuff->data,
-                                              outBuff->length,
-                                              NW_TRUE,
-                                              extTNotStringTable,
-                                              errorStatus);
-
-  /* Write extension string table related information to the WBXML encoder. */
-  
-  if( docNode && WBXMLEncStrTbl)
-    {
-     status = NW_DOM_Write_WBXML_StrTbl(h,WBXMLEncStrTbl);
-     if(status != NW_STAT_SUCCESS)
-     {
-       if(outBuff != NULL)
-       {
-         NW_Mem_Free(outBuff);
-       }
-       *errorStatus = status;
-     }
-    }/* end if(WBXMLEncStrTbl)*/
- 
-  NW_Mem_Free(outBuff);
-  return docNode;
-}/*CXML_DOM_DocumentNode_BuildXMLTree() */
-
-EXPORT_C NW_DOM_DocumentNode_t*
-NW_DOM_DocumentNode_BuildTree(NW_TinyDom_Handle_t *h, 
-                                   NW_Byte *buffer,
-                                   NW_Int32 length,
-                                   NW_Bool encoded,
-                                   NW_Uint32 publicID,																	 
-                                   NW_Bool extTNotStringTable)
-{
-  if(encoded == NW_TRUE){
-    return  NW_DOM_DocumentNode_BuildWBXMLTree(h, 
-                                               buffer,
-                                               length,
-                                               NW_FALSE,
-                                               extTNotStringTable);
-  }
-
-  return NW_DOM_DocumentNode_BuildXMLTree(h,buffer, length, publicID, extTNotStringTable);
-}
-
-
-
-
-/*
- * Returns publicId of the document (WBXML Specific)
- * otherwise 0
- */
-
-EXPORT_C NW_Uint32 
-NW_DOM_DocumentNode_getPublicIdAsNumber(NW_DOM_DocumentNode_t *doc)
-{
-  NW_WBXML_Document_t *header;
-  NW_TinyTree_t *tiny_tree;
-  
-  NW_ASSERT(doc != NULL);
-
-  if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE){
-    return 0;
-  }
- 
-  tiny_tree = NW_TinyTree_Node_findTree(doc);
-  header = NW_TinyDom_getDocHeader(tiny_tree);
-  NW_ASSERT(header != NULL);
-
-  return header->publicid;
-}
-
-/*
- * Gets the publicid as string
- * Returns
- *    NW_STAT_DOM_NODE_TYPE_ERR
- *    NW_STAT_SUCCESS
- * MODIFIED - docType
- */
-
-EXPORT_C NW_Status_t
-NW_DOM_DocumentNode_getPublicId(NW_DOM_DocumentNode_t *doc, 
-                                NW_String_t *docType)
-{
-  NW_WBXML_Document_t *header;
-  NW_TinyTree_t *tiny_tree;
-
-  NW_ASSERT(doc != NULL);
-  NW_ASSERT(docType != NULL);
-
-  if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE)
-    return NW_STAT_DOM_NODE_TYPE_ERR;
-
-  tiny_tree = NW_TinyTree_Node_findTree(doc);
-  header = NW_TinyDom_getDocHeader(tiny_tree);
-
-  NW_ASSERT(header != NULL);
-  NW_String_shallowCopy(docType, header->doc_type);
-
-  return NW_STAT_SUCCESS;
-}
-
-/*
- * Returns the version of the document, 
- * 0 in case of invalid operation (e.g. NULL doc)
- */
-
-EXPORT_C NW_Uint8 
-NW_DOM_DocumentNode_getVersion(NW_DOM_DocumentNode_t *doc)
-{
-  NW_WBXML_Document_t *header;
-  NW_TinyTree_t *tiny_tree;
-
-  NW_ASSERT(doc != NULL); 
-
-  if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE){
-    return 0;
-  }
-
-  tiny_tree = NW_TinyTree_Node_findTree(doc);
-  header = NW_TinyDom_getDocHeader(tiny_tree);
-  NW_ASSERT(header != NULL);
-  
-  return header->version;
-  
-}
-
-/*
- * Returns the supported encoding of the document
- * or 0 for invalid document
- */
-
-EXPORT_C NW_Uint32 
-NW_DOM_DocumentNode_getCharacterEncoding(NW_DOM_DocumentNode_t *doc)
-{
-  NW_WBXML_Document_t *header;
-  NW_TinyTree_t *tiny_tree;
-
-  NW_ASSERT(doc != NULL); 
-
-  if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE)
-    return 0;
-
-  tiny_tree = NW_TinyTree_Node_findTree(doc);
-  header = NW_TinyDom_getDocHeader(tiny_tree);
-  NW_ASSERT(header != NULL);
-
-  return header->charset;
-}
-
-/*
- * Returns child node that is the root of this document
- */
-
-EXPORT_C NW_DOM_ElementNode_t * 
-NW_DOM_DocumentNode_getDocumentElement(NW_DOM_DocumentNode_t *doc)
-{
-  NW_DOM_Node_t *docChild;
-  NW_Uint16 type;
-  
-  NW_ASSERT(doc != NULL); 
-
-  if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE){
-    return NULL;
-  }
-
-  /*
-   * Get the first child of the document node
-   * (can be a PI node)
-   */
-
-  docChild = NW_DOM_Node_getFirstChild(doc);
-
-  type = NW_DOM_Node_getNodeType(docChild);    
-  if (type == 0){
-    return NULL;
-  }
-
-  while (type != NW_DOM_ELEMENT_NODE){
-    docChild = NW_DOM_Node_getNextSibling(docChild);
-    type = NW_DOM_Node_getNodeType(docChild);
-  }
-
-  return docChild;
-}
-
-/*
- * Gets the dictionary
- */
-
-EXPORT_C NW_WBXML_Dictionary_t *
-NW_DOM_DocumentNode_getDictionary(NW_DOM_DocumentNode_t *doc)
-{
-  NW_Uint32 publicid = 0;
-  NW_Uint32 encoding;
-  NW_WBXML_Dictionary_t *dictionary = NULL;
-  NW_Status_t status;
-
-  NW_ASSERT(doc != NULL);
-
-  encoding = NW_DOM_DocumentNode_getCharacterEncoding(doc);
-  publicid = NW_DOM_DocumentNode_getPublicIdAsNumber(doc);
-
-  if (publicid != 0){
-    dictionary = NW_WBXML_Dictionary_getByPublicId(publicid);
-  }
-  else{
-    NW_String_t docType;
-
-    status = NW_DOM_DocumentNode_getPublicId(doc, &docType);
-    if (status != NW_STAT_SUCCESS){
-      return NULL;
-    }
-    dictionary = NW_WBXML_Dictionary_getByDocType(&docType, encoding);
-  }
-  return dictionary;
-}
-
-
-
-NW_Status_t
-NW_DOM_DocumentNode_getElementIteratorByTagName(NW_DOM_DocumentNode_t *doc, 
-                                                NW_String_t* name,
-                                                NW_DOM_NodeIterator_t *handle)
-{
-  NW_WBXML_Dictionary_t *dict = NULL;
-  NW_String_UCS2Buff_t *buff = NULL;
-  NW_Uint32 encoding;
-  NW_Int16 token;
-
-  NW_ASSERT(doc != NULL);
-  NW_ASSERT(name != NULL);
-  NW_ASSERT(handle != NULL);
-
-  encoding = NW_DOM_DocumentNode_getCharacterEncoding(doc);
-  dict = NW_DOM_DocumentNode_getDictionary(doc);
-  buff = NW_String_stringToUCS2Buff(name, encoding);
-  if((buff == NULL) || (dict == NULL)){
-    NW_Mem_Free(buff);
-    return NW_STAT_FAILURE;
-  }
-  token = NW_WBXML_Dictionary_getTagToken(dict, buff, NW_TRUE);
-  NW_Mem_Free(buff);
-  if (token < 0) {
-    return NW_STAT_FAILURE;
-  }
-  else { 
-  return NW_DOM_DocumentNode_getElementIteratorByTagToken(doc, 
-                                                          (NW_Uint16)token, 
-                                                          handle);
-}
-}
-
-NW_Status_t
-NW_DOM_DocumentNode_getElementIteratorByTagToken(NW_DOM_DocumentNode_t *doc, 
-                                                 NW_Uint16 token,
-                                                 NW_DOM_NodeIterator_t *handle)
-{
-  
-  NW_DOM_ElementNode_t *elem;
-
-  NW_ASSERT(doc != NULL);
-  NW_ASSERT(handle != NULL);
-
-  if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE)
-    return NW_STAT_DOM_NODE_TYPE_ERR;
-
-  elem = NW_DOM_DocumentNode_getDocumentElement(doc);
-  NW_ASSERT(elem != NULL);
-
-  return NW_DOM_NodeIterator_initialize(handle, elem, token); 
-}
-
-
-
-
-
-/*
- * Returns a pointer to the created Element Node
- */
-EXPORT_C NW_DOM_ElementNode_t *
-NW_DOM_DocumentNode_createElementNode(
-  NW_DOM_DocumentNode_t *doc, NW_String_t *name)
-{
-  NW_Uint32 encoding = NW_DOM_DocumentNode_getCharacterEncoding(doc);
-  NW_String_UCS2Buff_t *ucs2Buff = NULL;
- NW_Uint8 *uint8Buf = NULL;
- NW_Int32 fqToken = 0;
-  NW_WBXML_Dictionary_t *dictionary = NW_DOM_DocumentNode_getDictionary(doc);
-  NW_TinyTree_t* tinyTree;
-  NW_TinyDom_Tree_t *tree;
-  
-  if ((doc == NULL) || (name == NULL) || (dictionary == NULL))
-  {
-    return NULL;
-  }
-
-  ucs2Buff = NW_String_stringToUCS2Buff(name, encoding);
-  if (ucs2Buff == NULL){
-    return NULL;
-  }
-  uint8Buf = (NW_Uint8 *) CXML_Str_CvtToAscii((NW_Ucs2*) ucs2Buff);
-  NW_Mem_Free(ucs2Buff);
-  if(uint8Buf == NULL){
-    return NULL;
-  }
-  tinyTree = NW_TinyTree_Node_findTree(doc);
-  tree = NW_TinyDom_getTree(tinyTree);
-
-  fqToken = (NW_Int32) NW_WBXML_Dictionary_getTagToken(dictionary, ucs2Buff, NW_TRUE);
-  NW_Mem_Free(uint8Buf);
-  if (fqToken == -1){
-    return NW_TinyDom_createElementByName(tree, name);
-  }
-  
-  return NW_TinyDom_createElementByToken(tree, (NW_Uint16)fqToken);  
-}
-
-/*
- * Returns a pointer to the created Element Node
- */
-EXPORT_C NW_DOM_ElementNode_t * 
-NW_DOM_DocumentNode_createElementNodeByToken(
-  NW_DOM_DocumentNode_t *doc, NW_Uint16 token)
-{
-  NW_TinyTree_t* tinyTree;
-  NW_TinyDom_Tree_t *tree;
-  NW_WBXML_Dictionary_t *dictionary;
-  
-  dictionary = NW_DOM_DocumentNode_getDictionary(doc);
-  if ((doc == NULL) || (dictionary == NULL) || (token == 0))
-  {
-    return NULL;
-  }
-
-  tinyTree = NW_TinyTree_Node_findTree(doc);
-  tree = NW_TinyDom_getTree(tinyTree);
-
-  return NW_TinyDom_createElementByToken(tree, (NW_Uint16)token);  
-}
-
-
-/*
- * Returns a pointer to the created Text Node
- */
-EXPORT_C NW_DOM_TextNode_t * 
-NW_DOM_DocumentNode_createTextNodeWithTextItem(
-  NW_DOM_DocumentNode_t *doc, NW_DOM_TextItem_t *data)
-{
-  NW_TinyTree_t* tinyTree;
-  NW_TinyDom_Tree_t *tree;
-
-  if ((doc == NULL) || (data == NULL))
-    return NULL;
-
-  tinyTree = NW_TinyTree_Node_findTree(doc);
-  tree = NW_TinyDom_getTree(tinyTree);
-
-  return NW_TinyDom_createTextNode(tree, data);
-}
-
-/*
- * Returns a pointer to the created Text Node
- */
-EXPORT_C NW_DOM_TextNode_t * 
-NW_DOM_DocumentNode_createTextNode(
-  NW_DOM_DocumentNode_t *doc, NW_String_t *data)
-{
-  NW_TinyTree_t* tinyTree;
-  NW_TinyDom_Tree_t *tree;
-  NW_DOM_TextItem_t item;
-
-  if (NW_DOM_TextItem_initFromString(&item, data) != NW_STAT_SUCCESS)
-    return NULL;
-
-  if ((doc == NULL) || (data == NULL))
-    return NULL;
-
-  tinyTree = NW_TinyTree_Node_findTree(doc);
-  tree = NW_TinyDom_getTree(tinyTree);
-
-  return NW_TinyDom_createTextNode(tree, &item);
-}
-
-/*
- * Returns a pointer to the created Comment Node
- */
-NW_DOM_CommentNode_t * 
-NW_DOM_DocumentNode_createCommentNode(
-  NW_DOM_DocumentNode_t *doc, NW_String_t *data)
-{
-  NW_DOM_TextNode_t *t = 
-    NW_DOM_DocumentNode_createTextNode(doc, data);
-  if (t == NULL)
-    return NULL;
-  NW_TinyTree_Node_setUserFlags(t, T_DOM_NODE_COMMENT);
-  t->flags |= T_DOM_NODE_XML;
-  return (NW_DOM_CommentNode_t *)t;
-}
-
-
-/*
- * Returns a pointer to the created CDataSection Node
- */
-NW_DOM_CDATASectionNode_t * 
-NW_DOM_DocumentNode_createCDATASectionNode(
-  NW_DOM_DocumentNode_t *doc, NW_String_t *data)
-{
-  NW_DOM_TextNode_t *t = 
-    NW_DOM_DocumentNode_createTextNode(doc, data);
-  if (t == NULL)
-    return NULL;
-  NW_TinyTree_Node_setUserFlags(t, T_DOM_NODE_CDATASECTION);
-  t->flags |= T_DOM_NODE_XML;
-  return (NW_DOM_CommentNode_t *)t;
-}
-
-
-/*
- * Returns a pointer to the created ProcessingInstructionNode Node
- */
-NW_DOM_ProcessingInstructionNode_t * 
-NW_DOM_DocumentNode_createProcessingInstructionNodeByAttrVal(NW_DOM_DocumentNode_t* pDoc,
-                                                             NW_String_t* pTargetString,
-                                                             NW_DOM_AttrVal_t* pData)
-{
-  NW_TinyTree_Node_t* pPiNode;
-  NW_TinyTree_Node_t* pAttrNode;
-  NW_TinyTree_t* pTinyTree;
-  NW_TinyDom_Tree_t* pTree;
-  NW_WBXML_Dictionary_t* pDictionary;
-  NW_Uint32 encoding;
-  NW_Int32 fqToken;
-
-  if ((pDoc == NULL) || (pTargetString == NULL) || (pData == NULL)) {
-    return NULL;
-  }
-  pTinyTree = NW_TinyTree_Node_findTree(pDoc);
-  pTree = NW_TinyDom_getTree(pTinyTree);
-
-  pDictionary = NW_DOM_DocumentNode_getDictionary(pDoc);
-  if (pDictionary == NULL) {
-    return NULL;
-  }
-  encoding = NW_DOM_DocumentNode_getCharacterEncoding(pDoc);
-  fqToken = NW_WBXML_Dictionary_getAttributeToken(pDictionary,
-                                                  pTargetString,
-                                                  encoding,
-                                                  NW_TRUE /* name */);
-  if (fqToken == -1)
-  {
-    pPiNode = NW_TinyTree_createNode(&(pTree->tree), 0);
-    if (pPiNode == NULL) {
-      return NULL;
-    }
-    NW_TinyTree_Node_setUserFlags(pPiNode, T_DOM_NODE_PI);
-
-    pAttrNode = NW_TinyDom_createAttributeByName(pTree,
-                                                 pTargetString,
-                                                 pData);
-    if (pAttrNode == NULL) {
-      (void)NW_TinyTree_deleteNode(pPiNode);
-      return NULL;
-    }
-    (void)NW_TinyTree_attachChild(pPiNode, pAttrNode);
-    return pPiNode;
-  }
-  return NW_DOM_DocumentNode_createProcessingInstructionNodeByToken(pDoc,
-                                                                    (NW_Uint16)fqToken,
-                                                                    pData);
-}
-
-/*
- * Returns a pointer to the created ProcessingInstructionNode Node
- */
-
-NW_DOM_ProcessingInstructionNode_t * 
-NW_DOM_DocumentNode_createProcessingInstructionNodeByToken(
-  NW_DOM_DocumentNode_t *pDoc, NW_Uint16 token, NW_DOM_AttrVal_t *pData)
-{
-  NW_TinyTree_Node_t* pPiNode;
-  NW_TinyTree_Node_t* pAttrNode;
-  NW_TinyTree_t* pTinyTree;
-  NW_TinyDom_Tree_t* pTree;
-
-  if ((pDoc == NULL) || (token == 0) || (pData == NULL))
-    return NULL;
-
-  pTinyTree = NW_TinyTree_Node_findTree(pDoc);
-  pTree = NW_TinyDom_getTree(pTinyTree);
-  pPiNode = NW_TinyTree_createNode(&(pTree->tree), 0);
-  if (pPiNode == NULL) {
-    return NULL;
-  }
-  NW_TinyTree_Node_setUserFlags(pPiNode, T_DOM_NODE_PI);
-
-  pAttrNode = NW_TinyDom_createAttributeByToken(pTree,
-                                                (NW_Uint8)token,
-                                                pData);
-  if (pAttrNode == NULL) {
-    (void)NW_TinyTree_deleteNode(pPiNode);
-    return NULL;
-  }
-  (void)NW_TinyTree_attachChild(pPiNode, pAttrNode);
-  return pPiNode;
-}
-
-/*
- * Returns a pointer to the created ProcessingInstructionNode Node
- */
-NW_DOM_ProcessingInstructionNode_t * 
-NW_DOM_DocumentNode_createProcessingInstructionNode(
-  NW_DOM_DocumentNode_t *doc, NW_String_t *target, NW_String_t *data)
-{
-  NW_DOM_AttrVal_t val;
-
-  if ((doc == NULL) || (target == 0) || (data == NULL))
-    return NULL;
-
-  NW_DOM_AttrVal_initFromString(&val, data);
-  return NW_DOM_DocumentNode_createProcessingInstructionNodeByAttrVal(doc, target, &val);  
-}
-
-/*
- * Returns a pointer to the created Document Node
- * - NOT SUPPRTED - ask Steve 
-NW_DOM_DocumentNode_t * 
-NW_DOM_DocumentNode_createDocument(
-    NW_Uint8 version, NW_String_t *publicid, NW_Uint32 encoding)
-{
-  NW_WBXML_Parser_t *WBXMLParser;
-  NW_TinyDom_Parser_t *tinyParser; 
-  NW_TinyDom_Tree_t *domTree;
-  NW_WBXML_Writer_t *writer;
-  NW_Status_t status;
-
-  WBXMLParser = NW_Mem_Malloc(sizeof(NW_WBXML_Parser_t));
-  tinyParser = NW_Mem_Malloc(sizeof(NW_TinyDom_Parser_t));
-  domTree = NW_Mem_Malloc(sizeof(NW_TinyDom_Tree_t));
-  writer = NW_Mem_Malloc(sizeof(NW_WBXML_Writer_t));
-
-  NW_WBXML_Parser_reset(WBXMLParser);
-  domTree->doc->version = version;
-  domTree->doc->doc_type = publicid;
-  domTree->doc->charset = encoding;
-  NW_TinyDom_Tree_construct(domTree, WBXMLParser, domTree->doc, writer);
-  NW_TinyDom_Parser_construct(tinyParser, domTree);
-  status = NW_TinyDom_Tree_create(domTree, tinyParser, domTree->doc, 
-    WBXMLParser, writer, 2);
-  if (status != NW_STAT_SUCCESS)
-    return NULL;
-  return NW_TinyDom_writeDocHeader(domTree, version, publicid, encoding);
-}*/
-
-/*
- * Create an empty dom tree, returning the document node.
- */
-
-EXPORT_C NW_DOM_DocumentNode_t * 
-NW_DOM_DocumentNode_createDocumentWithNumberPublicId(NW_TinyDom_Handle_t *h,
-                                                     NW_Uint8 version,
-                                                     NW_Uint32 publicid, 
-                                                     NW_Uint32 encoding,
-                                                     NW_Bool extTNotStringTable,
-                                                     NW_Bool enableStringTable)
-{
-  NW_Status_t status = NW_STAT_SUCCESS;
-  NW_TinyDom_Handle_Initialize(h, publicid, extTNotStringTable);
-
-  h->document.charset = encoding;
-  h->document.publicid = publicid;
-  h->document.version = version;
-
-  	 
-  	 status = NW_TinyDom_Tree_create(&h->tinyDOMTree, &h->tinyParser, 
-                                  &h->document, &h->wbxmlParser,
-                                  &h->writer, 4, enableStringTable);
-     
-  
-
-  if(status == NW_STAT_SUCCESS)
-  {
-  	return h->tinyDOMTree.root_node;
-  }
-  else
-  {
-  	
-  	return NULL;
-  }
-}
-
-
-/*
- * One of the API for Building the DOM tree.
- */
-
-EXPORT_C NW_DOM_DocumentNode_t* 
-CXML_DOM_DocumentNode_BuildTree(NW_TinyDom_Handle_t* h, 
-                              NW_Byte* buffer,
-                              NW_Int32 length,
-                              NW_Bool encoded,
-                              NW_Uint32 publicID,
-                              NW_Bool extTNotStringTable,
-                              NW_Status_t* errorStatus)
-{
- *errorStatus = NW_STAT_SUCCESS;
- if(encoded == NW_TRUE)
- {
-    return  CXML_DOM_DocumentNode_BuildWBXMLTree(h, 
-                                                 buffer,
-                                                 length,
-                                                 NW_FALSE,
-                                                 extTNotStringTable,
-                                                 errorStatus);
-  }
-
-  return CXML_DOM_DocumentNode_BuildXMLTree(h,
-                                            buffer, 
-                                            length, 
-                                            publicID, 
-                                            extTNotStringTable,
-                                            errorStatus);
- 
-
-}/*end CXML_DOM_DocumentNode_BuildTree()*/
-