xml/libxml2libs/test/xmlengtester/xmlengtester_target/src/xmlengtesterblocksdom.cpp
changeset 0 e35f40988205
child 17 ed3155dbd163
child 32 889504eac4fb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/libxml2libs/test/xmlengtester/xmlengtester_target/src/xmlengtesterblocksdom.cpp	Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,2569 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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 FILES
+#include "TestContentHandler.h"
+#include "xmlengtester.h"
+
+#include <e32svr.h>
+#include <domain/osextensions/StifParser.h>
+#include <domain/osextensions/Stiftestinterface.h>
+
+#include <Xml\Parser.h>
+#include <Xml\ParserFeature.h>
+#include <XmlEngNodeFilter.h>
+
+#include <libc\string.h>
+#include <charconv.h>
+#include <UTF.H>
+
+#include "xmlengtesterdef.h"
+#include "TestUserData.h"
+using namespace Xml;
+
+
+class MXmlEngTestNodeFilter : public MXmlEngNodeFilter
+{
+    public: 
+    
+        TXmlEngNodeFilterResult AcceptNode(TXmlEngNode aNode)
+            {
+            _LIT8(KNodeName1,"name");
+            _LIT8(KNodeName2,"phone");
+            _LIT8(KNodeName3,"title");
+            
+            
+            TPtrC8 node1=aNode.AsElement().Name();
+            
+          if (!aNode.AsElement().Name().Compare(KNodeName2))
+                {
+                return EReject;
+                }
+            
+            else if (!aNode.AsElement().Name().Compare(KNodeName1))
+                {
+                return ESkip;
+                }
+            
+            else if (!aNode.AsElement().Name().Compare(KNodeName3))
+                {
+                return ESkipContents;
+                }
+            else
+            return EAccept;
+            }
+   
+};
+
+
+
+/************************************** DOM ****************************************/
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::ParseFileDOML
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::ParseFileDomL( CStifItemParser& aItem )
+{
+
+	_LIT(KSourceFileErrorName,"No source file name.");
+    _LIT(KEndParsing,"Parsing end.");
+    
+	TPtrC SrcFile;
+	TPtrC tmp;
+	TBool map = TRUE;
+    if ( aItem.GetNextString(SrcFile) != KErrNone )
+        {
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KSourceFileErrorName);
+     	iLog->Log((TDesC)KSourceFileErrorName);
+        return KErrGeneral;
+        }
+        
+    if ( aItem.GetNextString(tmp) == KErrNone )
+        {
+        map = FALSE;
+        }
+	TFileName srcFileName;
+	srcFileName.Copy(SrcFile);
+
+	TInt err;
+	TRAP(err, iDoc = parser.ParseFileL(srcFileName));
+	
+	if(map && err == KXmlEngErrParsing)
+		{
+		iLastError = parser.GetLastParsingError();	
+		}
+	else
+		{
+		iLastError = err;		
+		}
+	TestModuleIf().Printf( infoNum++,KTEST_NAME,KEndParsing);
+	iLog->Log((TDesC)KEndParsing);
+
+    return KErrNone;    
+    }   
+    
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::SaveXMLtoFileDomL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::SaveXmlToFileDomL( CStifItemParser& aItem )
+{
+
+    _LIT(KOutputFileErrorName,"No output file name.");
+    _LIT(KOutputFileError,"Output file error. Error code: %d");
+    _LIT(KRootError,"Document has no root element. Error code: %d");
+    _LIT(KSaveEnd,"File saved.");
+    
+    
+    
+    TPtrC OutputFile;
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+	
+	TXmlEngElement root = iDoc.DocumentElement();
+	if(root.NotNull())
+		{
+		iDoc.SaveL(OutputFile);
+		}
+	else
+		{
+		TestModuleIf().Printf( infoNum++, KTEST_NAME,KRootError,iLastError);
+		iLog->Log(KRootError, iLastError);	
+	
+		RFs fs;
+		User::LeaveIfError(fs.Connect());
+		CleanupClosePushL(fs);
+
+		RFile outputFile;
+		TFileName outFileName;
+		outFileName.Copy(OutputFile);
+	
+		// Open output file
+		TInt err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+    	// If output file is correct
+		if (err == KErrNone)
+	    	{
+			outFileName.Format(KRootError,iLastError);
+				
+			HBufC8* buf = NULL;
+			buf = HBufC8::NewLC(outFileName.Length());
+			buf->Des().Copy(outFileName);
+			
+			outputFile.Write(buf->Des());
+			outputFile.Close();
+			
+			CleanupStack::PopAndDestroy(buf);
+			}
+		else
+			{	
+			TestModuleIf().Printf( infoNum++,KTEST_NAME, KOutputFileError, err);
+			iLog->Log(KOutputFileError, err);
+			}
+			
+		CleanupStack::PopAndDestroy(&fs);
+		}
+		
+	TestModuleIf().Printf( infoNum++,KTEST_NAME,KSaveEnd);
+	iLog->Log((TDesC)KSaveEnd);
+
+    return KErrNone;   
+    }
+    
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::SaveXMLtoBufferUTF16L
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::SaveXmlToBufferUTF16L( CStifItemParser& aItem )
+{
+    _LIT(KOutputFileErrorName,"No output file name.");
+    _LIT(KOutputFileError,"Output file error. Error code: %d");
+    _LIT(KRootError,"Document has no root element. Error code: %d");
+    _LIT(KSaveEnd,"File saved.");
+    
+    _LIT8(enc,"UTF-16");
+    
+    TPtrC OutputFile;
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+	
+	TPtrC flag;
+	TBool useFlag = EFalse;
+	if ( aItem.GetNextString(flag) == KErrNone )
+    	{
+        useFlag = ETrue;
+    	}
+	
+	RBuf8 buf;
+	
+	TXmlEngElement root = iDoc.DocumentElement();
+	if(root.NotNull())
+		{
+		if(useFlag)
+		    {
+		    TXmlEngSerializationOptions opt(TXmlEngSerializationOptions::KOptionEncoding | TXmlEngSerializationOptions::KOptionStandalone,enc);
+		    iDoc.SaveL(buf,iDoc,opt);
+		    CleanupClosePushL( buf );
+		    }
+		else
+		    {
+		    TXmlEngSerializationOptions opt(0,enc);
+		    iDoc.SaveL(buf,iDoc,opt);
+		    CleanupClosePushL( buf );
+		    }
+		}
+	else
+		{
+		TestModuleIf().Printf( infoNum++, KTEST_NAME,KRootError,iLastError);
+	  	iLog->Log(KRootError,iLastError);
+		
+		TBuf<256> buffer;
+		buffer.Format(KRootError,iLastError);
+		TBuf8<256> buffer8;
+		buffer8.Copy(buffer);
+		
+		buf.CreateL(buffer8);
+		CleanupClosePushL(buf);
+		}
+		
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+
+	RFile outputFile;
+	TFileName outFileName;
+	outFileName.Copy(OutputFile);
+	
+	// Open output file
+	TInt err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+	// If output file is correct
+	if (err == KErrNone)
+	   	{
+		outputFile.Write(buf);
+		outputFile.Close();
+		}
+	else
+		{	
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KOutputFileError, err);
+		iLog->Log(KOutputFileError, err);
+		}
+			
+	CleanupStack::PopAndDestroy(&fs);
+	CleanupStack::PopAndDestroy(&buf);
+		
+	TestModuleIf().Printf( infoNum++,KTEST_NAME,KSaveEnd);
+	iLog->Log((TDesC)KSaveEnd);
+
+    return KErrNone;   
+    }
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::TestNodeFilterL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::TestNodeFilterL( CStifItemParser& aItem )
+{
+    _LIT(KOutputFileErrorName,"No output file name.");
+    _LIT(KOutputFileError,"Output file error. Error code: %d");
+//    _LIT(KRootError,"Document has no root element. Error code: %d");
+    _LIT(KSaveEnd,"File saved.");
+        
+    TPtrC InputFile;
+    if ( aItem.GetNextString(InputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+
+    TPtrC OutputFile;
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+        TFileName srcFileName;
+        srcFileName.Copy( InputFile);
+        
+        RBuf8 buf;
+        RXmlEngDocument doc;
+        doc=parser.ParseFileL( srcFileName );
+	
+	MXmlEngTestNodeFilter* nodefilter = new (ELeave) MXmlEngTestNodeFilter();
+	CleanupStack::PushL(nodefilter);
+	TXmlEngSerializationOptions options(0);
+	
+	TXmlEngElement root = doc.DocumentElement();
+	if(root.NotNull())
+		    {
+		  
+		    options.SetNodeFilter(nodefilter);
+		    
+		    doc.SaveL(buf,doc,options);
+		    CleanupClosePushL( buf );
+		    }
+		
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+
+	RFile outputFile;
+	TFileName outFileName;
+	outFileName.Copy(OutputFile);
+	
+	// Open output file
+	TInt err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+	// If output file is correct
+	if (err == KErrNone)
+	   	{
+		outputFile.Write(buf);
+		outputFile.Close();
+		}
+	else
+		{	
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KOutputFileError, err);
+		iLog->Log(KOutputFileError, err);
+		}
+			
+	CleanupStack::PopAndDestroy(&fs);
+	CleanupStack::PopAndDestroy(&buf);
+	doc.Close();	
+	CleanupStack::PopAndDestroy(); //nodefilter
+	TestModuleIf().Printf( infoNum++,KTEST_NAME,KSaveEnd);
+	iLog->Log((TDesC)KSaveEnd);
+
+    return KErrNone;   
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CreateDocumentL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CreateDocumentL( CStifItemParser& /*aItem*/ )
+	{
+	_LIT8(name,"doc");
+	_LIT8(uri,"http://test.com");
+	_LIT8(arg1,"1.1");
+	_LIT8(arg2,"http://test2.org");
+	
+	iDoc.OpenL(DOM_impl);
+	iDoc.CreateDocumentElementL(name);
+	iDoc.DocumentElement().SetDefaultNamespaceL(uri);
+	iDoc.SetStandalone(TRUE);
+	iDoc.SetXmlVersionL(arg1);
+	iDoc.SetDocumentUriL(arg2);
+    return KErrNone;    
+    }  
+    
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckDocumentParametersL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckDocumentParametersL( CStifItemParser& /*aItem*/ )
+	{
+	_LIT(KStandaloneError,"Standalone checking error.");
+    _LIT(KEncodingError,"Encoding checking error");
+    _LIT(KVersionError,"Version checking error");
+    _LIT(KUriError,"Uri checking error");
+    
+	_LIT8(arg,"1.0");
+	_LIT8(arg2,"UTF-8");
+	_LIT8(KDesNull,"");
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(iDoc.NodeType() == TXmlEngNode::EDocument))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}	
+	
+	if(!(iDoc.IsStandalone() == TRUE))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KStandaloneError);
+		iLog->Log((TDesC)KStandaloneError);
+		return KErrGeneral;
+		}
+	
+	if(iDoc.XmlVersion().Compare(arg))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KVersionError);
+		iLog->Log((TDesC)KVersionError);
+		return KErrGeneral;
+		}
+	if(iDoc.XmlEncoding().Compare(arg2))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KEncodingError);
+		iLog->Log((TDesC)KEncodingError);
+		return KErrGeneral;
+		}
+	
+	//if(iDoc.DocumentUri().Compare(NULL) )
+	if(iDoc.DocumentUri().Compare(KDesNull ))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KUriError);
+		iLog->Log((TDesC)KUriError);
+		return KErrGeneral;
+		}
+	
+	return KErrNone;    
+    }  
+    
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckNotNullElementL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckNotNullElementL( CStifItemParser& /*aItem*/ )
+	{
+	_LIT8(name,"test");
+	
+	TXmlEngElement elem;
+	
+	_LIT(KNullError,"Is node null checking error.");
+	
+	if(!elem.IsNull())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNullError);
+		iLog->Log((TDesC) KNullError);
+		return KErrGeneral;
+		}
+	
+	iDoc.OpenL(DOM_impl);
+	elem = iDoc.CreateElementL(name);
+	
+	_LIT(KNotNullError,"Is node not null checking error.");
+	
+	if(!elem.NotNull())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNotNullError);
+		iLog->Log((TDesC) KNotNullError);
+		return KErrGeneral;
+		}
+	
+	iDoc.Close();
+    return KErrNone;
+    }
+    
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CreateDocumentElementL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CreateDocumentElementL( CStifItemParser& /*aItem*/ )
+	{
+	_LIT8(name, "doc");
+	_LIT8(uri, "http://test.com");
+//	_LIT8(arg, "");
+	_LIT8(ver, "1.0");
+	
+	iDoc.OpenL(DOM_impl);
+	TXmlEngElement root = iDoc.CreateElementL(name);
+	root.SetDefaultNamespaceL(uri);
+	iDoc.SetStandalone(TRUE);
+	iDoc.SetXmlVersionL(ver);
+	iDoc.SetDocumentElement(root);
+	
+	_LIT(KNamespaceError,"Namespace checking error.");
+	
+	if(iDoc.DocumentElement().DefaultNamespaceL().Uri().Compare(uri))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNamespaceError);
+		iLog->Log((TDesC)KNamespaceError);
+		return KErrGeneral;
+		}
+	
+    return KErrNone;
+    }
+    
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CreateDocumentFromNodeL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CreateDocumentFromNodeL( CStifItemParser& /*aItem*/ )
+	{
+	_LIT8(name,"doc");
+	_LIT8(tekst,"test content");
+	_LIT8(value,"ATTR_value");
+	_LIT8(cdata,"test < test2 & \r\n> ;");
+	
+	iDoc.OpenL(DOM_impl);
+	
+	TXmlEngTextNode teNode = iDoc.CreateTextNodeL(tekst); 
+	TXmlEngElement elem = iDoc.CreateElementL(name); 
+	elem.AppendChildL(teNode);
+	
+	TXmlEngCDATASection cdNode = iDoc.CreateCDATASectionL(cdata);
+	elem.AppendChildL(cdNode);
+	
+	TXmlEngAttr atNode = iDoc.CreateAttributeL(name,value);
+	elem.AppendChildL(atNode);
+	
+	iDoc.SetDocumentElement(elem);
+		
+	RXmlEngDocument doc;// = DOM_impl.CreateDocumentFromNodeL(elem);
+	doc.OpenL(DOM_impl,elem);
+	iDoc.Close();
+	iDoc = doc.CloneDocumentL();
+	doc.Close();
+	
+	TXmlEngProcessingInstruction pcNode = iDoc.CreateProcessingInstructionL(name,value);
+	iDoc.AppendChildL(pcNode);
+	
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CloneDocumentL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CloneDocumentL( CStifItemParser& /*aItem*/ )
+	{
+	_LIT8(name,"testdoc");
+	
+	RXmlEngDocument doc = iDoc.CloneDocumentL();
+	iDoc.Close();
+	//doc.DocumentElement().SetNameL(name);
+	doc.DocumentElement().AddNewElementL(name);
+	iDoc = doc.CloneDocumentL();
+	doc.Close();
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckSiblingFunctionsL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckSiblingFunctionsL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement();
+	tmp.FirstChild().SetAsLastSibling();
+	
+	tmp.LastChild().PreviousSibling().SetAsFirstSibling();
+	
+	tmp.LastChild().PreviousSibling().MoveBeforeSibling(tmp.FirstChild().NextSibling());
+	
+	tmp.FirstChild().NextSibling().NextSibling().MoveAfterSibling(tmp.LastChild().PreviousSibling());
+	
+	return KErrNone;    
+	}
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckInnerXmlL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckInnerXmlL( CStifItemParser& aItem )
+	{
+    _LIT(KOutputFileErrorName,"No output file name");
+	
+	TPtrC OutputFile;
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    	
+    RBuf8 str;
+    iDoc.DocumentElement().InnerXmlL(str);
+    
+    RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+
+	RFile outputFile;
+	TFileName outFileName;
+	outFileName.Copy(OutputFile);
+	
+	// Open output file
+	TInt err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    	
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    
+    outFileName.Copy(OutputFile);
+	err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+    	iDoc.DocumentElement().FirstChild().NextSibling().InnerXmlL(str);
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    	
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    
+    outFileName.Copy(OutputFile);
+	err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+    	iDoc.DocumentElement().FirstChild().NextSibling().NextSibling().FirstChild().InnerXmlL(str);
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    
+    outFileName.Copy(OutputFile);
+	err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+    	iDoc.DocumentElement().FirstChild().NextSibling().NextSibling().LastChild().InnerXmlL(str);
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    
+    str.Close();
+    CleanupStack::PopAndDestroy();
+    	
+	return KErrNone;     
+	}
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckOuterXmlL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckOuterXmlL( CStifItemParser& aItem )
+	{
+	_LIT(KOutputFileErrorName,"No output file name");
+	
+	TPtrC OutputFile;
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    	
+    RBuf8 str;
+    iDoc.DocumentElement().OuterXmlL(str);
+    
+    RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+
+	RFile outputFile;
+	TFileName outFileName;
+	outFileName.Copy(OutputFile);
+	
+	// Open output file
+	TInt err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    	
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    
+    outFileName.Copy(OutputFile);
+	err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+    	iDoc.DocumentElement().FirstChild().NextSibling().OuterXmlL(str);
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    	
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    
+    outFileName.Copy(OutputFile);
+	err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+    	iDoc.DocumentElement().FirstChild().NextSibling().NextSibling().FirstChild().OuterXmlL(str);
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    if ( aItem.GetNextString(OutputFile) != KErrNone )
+    	{
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KOutputFileErrorName);
+     	iLog->Log((TDesC)KOutputFileErrorName);
+        return KErrGeneral;
+    	}
+    
+    outFileName.Copy(OutputFile);
+	err = outputFile.Replace(fs,outFileName,EFileShareAny|EFileWrite);
+	
+   	// If output file is correct
+	if (err == KErrNone)
+    	{
+    	iDoc.DocumentElement().FirstChild().NextSibling().NextSibling().LastChild().OuterXmlL(str);
+		outputFile.Write(str);
+		outputFile.Close();
+    	}
+    
+    str.Close();
+    CleanupStack::PopAndDestroy();
+    	
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckNodeParametersL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckNodeParametersL( CStifItemParser& /*aItem*/)
+	{
+	
+	TXmlEngNode tmp = iDoc.DocumentElement();
+	
+	_LIT8(str,"doc");
+	_LIT(KNameError,"Name checking error.");
+	if(tmp.Name().Compare(str))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNameError);
+		iLog->Log((TDesC)KNameError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KChildError,"Has child nodes checking error.");
+	if(!(tmp.HasChildNodes()))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KChildError);
+		iLog->Log((TDesC)KChildError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KAttrError,"Has attributes checking error.");
+	if(!(tmp.HasAttributes()))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttrError);
+		iLog->Log((TDesC)KAttrError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(uri,"http://test.pl");
+	_LIT(KNamespaceError,"Namespace uri checking error.");
+	if(tmp.NamespaceUri().Compare(uri))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNamespaceError);
+		iLog->Log((TDesC)KNamespaceError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KPrefError,"Namespace prefix checking error.");
+	if(tmp.Prefix().Compare(KNullDesC8))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KPrefError);
+		iLog->Log((TDesC)KPrefError);
+		return KErrGeneral;
+		}
+		
+	tmp = iDoc.DocumentElement().FirstChild().NextSibling();
+	
+	_LIT8(str2,"test2");
+	if(tmp.Name().Compare(str2))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNameError);
+		iLog->Log((TDesC)KNameError);
+		return KErrGeneral;
+		}
+		
+	if(tmp.HasChildNodes())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KChildError);
+		iLog->Log((TDesC)KChildError);
+		return KErrGeneral;
+		}
+		
+	if(tmp.HasAttributes())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttrError);
+		iLog->Log((TDesC)KAttrError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(uri2,"http://test.com");
+	if(tmp.NamespaceUri().Compare(uri2))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNamespaceError);
+		iLog->Log((TDesC)KNamespaceError);
+		return KErrGeneral;
+		}
+		
+	_LIT8(pref,"testns");
+	if(tmp.Prefix().Compare(pref))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KPrefError);
+		iLog->Log((TDesC)KPrefError);
+		return KErrGeneral;
+		}
+	
+	return KErrNone;    
+	}
+	
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::ParentNodesL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::ParentNodesL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngNode tmp = iDoc.DocumentElement();
+	
+	_LIT(KDocError,"Document element checking error.");
+	if(!(tmp.OwnerDocument().IsSameNode(iDoc)))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDocError);
+		iLog->Log((TDesC)KDocError);
+		return KErrGeneral;
+		}
+	
+	tmp = tmp.FirstChild().NextSibling();
+	
+	_LIT(KParError,"Parent element checking error.");
+	if(!(tmp.ParentNode().IsSameNode(iDoc.DocumentElement())))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KParError);
+		iLog->Log((TDesC)KParError);
+		return KErrGeneral;
+		}
+	
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::NameModificationL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+//TInt CLibxml2Tester::NameModificationL( CStifItemParser& /*aItem*/ )
+/*	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+
+	_LIT8(name,"testX");
+	_LIT8(uri,"c:\testX");
+	_LIT8(pref,"testXns");
+		
+	tmp.RenameNodeL(name,uri,pref);
+	
+	tmp = iDoc.DocumentElement().LastChild().PreviousSibling().AsElement();
+	
+	RXmlEngNodeList<TXmlEngAttr> attrList;
+	tmp.GetAttributes(attrList);
+	
+	TXmlEngAttr attr = attrList.Next();
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(attr.NodeType() == TXmlEngNode::EAttribute))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(prevValue,"1");
+
+	_LIT(KAttrError,"Attribute value checking error.");
+	if(attr.Value().Compare(prevValue))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttrError);
+		iLog->Log((TDesC)KAttrError);
+		return KErrGeneral;
+		}
+
+	//_LIT8(attName,"testAttr");
+	_LIT8(attValue,"testAttrValue");
+	//attr.SetNameL(attName);
+	attr.SetValueL(attValue);
+
+    attrList.Close();
+
+	return KErrNone;
+	}
+*/
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckNamespacesL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckNamespacesL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngNode tmp = iDoc.DocumentElement();
+	TXmlEngNamespace nam = tmp.NamespaceDeclaration();
+	
+	_LIT8(arg,"http://test.pl");
+	_LIT(KUriError,"Namespace uri checking error.");
+	if(nam.Uri().Compare(arg))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KUriError);
+		iLog->Log((TDesC)KUriError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KPrefError,"Namespace prefix checking error.");
+	if(nam.Prefix().Compare(KNullDesC8))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KPrefError);
+		iLog->Log((TDesC)KPrefError);
+		return KErrGeneral;
+		}	
+		
+	_LIT(KDefError,"Is default checking error.");
+	if(!nam.IsDefault())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDefError);
+		iLog->Log((TDesC)KDefError);
+		return KErrGeneral;
+		}	
+		
+	_LIT(KDecError,"Is declared checking error.");
+	if(nam.IsUndefined())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDecError);
+		iLog->Log((TDesC)KDecError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(nam.NodeType() == TXmlEngNode::ENamespaceDeclaration))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckProcessingInstructionL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckProcessingInstructionL( CStifItemParser& /*aItem*/ )
+	{
+	_LIT8(target,"testtarget");
+	_LIT8(data,"data test data");
+	
+	TXmlEngNode tmp = iDoc.DocumentElement();
+	TBool i = tmp.HasChildNodes();
+
+	tmp = tmp.FirstChild();
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(tmp.NodeType() == TXmlEngNode::EProcessingInstruction))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+	
+	_LIT(KTargetError,"Target checking error.");
+	if(tmp.AsProcessingInstruction().Target().Compare(target))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTargetError);
+		iLog->Log((TDesC)KTargetError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KDataError,"Data checking error.");
+	if(tmp.AsProcessingInstruction().Data().Compare(data))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDataError);
+		iLog->Log((TDesC)KDataError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(arg, "new data");
+	tmp.AsProcessingInstruction().SetDataL(arg);
+	
+	return KErrNone;    
+	}
+	
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckCommentsL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckCommentsL( CStifItemParser& /*aItem*/ )
+	{
+	
+	TText * text = (TText*) L" new comment 1 ";
+	TPtrC ptr(text);
+	
+	_LIT8(com1, " new comment 1 ");
+	_LIT8(com2, "added comment 2 ");
+	
+	TXmlEngNode tmp = iDoc.FirstChild();
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(tmp.NodeType() == TXmlEngNode::EComment))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(com3, " comment 1 ");
+	
+	_LIT(KContentError,"Content checking error.");
+	if(tmp.AsComment().Contents().Compare(com3))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KContentError);
+		iLog->Log((TDesC)KContentError);
+		return KErrGeneral;
+		}
+	
+	tmp.AsComment().SetContentsL(com1);
+	
+	
+	_LIT(KLengthError,"Length checking error.");
+	if(!(tmp.AsComment().Length() == ptr.Length()))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KLengthError);
+		iLog->Log((TDesC)KLengthError);
+		return KErrGeneral;
+		}
+	
+	TXmlEngComment com = iDoc.DocumentElement().LastChild().AsComment();
+	
+	if(!(com.NodeType() == TXmlEngNode::EComment))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+		
+	_LIT8(com4, " comment 2 ");
+	if(com.AsComment().Contents().Compare(com4))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KContentError);
+		iLog->Log((TDesC)KContentError);
+		return KErrGeneral;
+		}
+	
+	com.AppendContentsL(com2);
+	
+//	_LIT8(com5, " created comment 3 ");
+	TXmlEngComment comm;
+	comm = iDoc.CreateCommentL();
+	iDoc.AppendChildL(comm);
+	
+	return KErrNone;    
+	}
+	
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckCDATAL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckCDATAL( CStifItemParser& /*aItem*/)
+	{
+	TXmlEngCDATASection tmp;
+	tmp = iDoc.DocumentElement().FirstChild().NextSibling().AsCDATASection();
+	
+	_LIT8(data, " < & test cdata > --> ");
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(tmp.NodeType() == TXmlEngNode::ECDATASection))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+	
+	_LIT(KContentError,"Content checking error.");
+	if(tmp.Contents().Compare(data))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KContentError);
+		iLog->Log((TDesC)KContentError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(com2, "added comment 2 ");	
+	tmp.AppendContentsL(com2);
+	
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckTextNodeL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckTextNodeL( CStifItemParser& /*aItem*/)
+	{
+	TXmlEngNode tmp;
+	tmp = iDoc.DocumentElement().FirstChild();
+	
+	_LIT8(data, "\nline content");
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(tmp.NodeType() == TXmlEngNode::EText))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KWhiteError,"Is whitespace checking error.");
+	if(!(tmp.AsText().IsElementContentWhitespace()))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KWhiteError);
+		iLog->Log((TDesC)KWhiteError);
+		return KErrGeneral;
+		}
+	
+	tmp = iDoc.DocumentElement().LastChild();
+	TXmlEngTextNode text = tmp.AsText();
+	
+	_LIT(KContentError,"Content checking error.");
+	TPtrC8 st = text.Contents();
+	if(text.Contents().Compare(data))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KContentError);
+		iLog->Log((TDesC)KContentError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KLengthError,"Length checking error.");
+	if(!(text.Length() == data().Length()))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KLengthError);
+		iLog->Log((TDesC)KLengthError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(com2, " added comment 2 ");	
+	text.AppendContentsL(com2);
+	
+	return KErrNone;    
+	}
+
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CloneDocumentL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+//TInt CLibxml2Tester::CheckDocumentFragmentL( CStifItemParser& /*aItem*/ )
+/*	{
+	TXmlEngNode tmp;
+	tmp = iDoc.DocumentElement().FirstChild();
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(tmp.AsDocumentFragment().NodeType() == TXmlEngNode::EDocumentFragment))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+	
+	TXmlEngDocumentFragment docF;
+	docF = iDoc.CreateDocumentFragmentL();
+	if(!(docF.NodeType() == TXmlEngNode::EDocumentFragment))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+	
+	return KErrNone;
+	}
+*/	
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::NodeNamespacePocessingL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::NodeNamespacePocessingL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngNode tmp = iDoc.DocumentElement().FirstChild();
+	
+	_LIT8(uri, "http://test.com");
+	_LIT8(uriD, "http://test.pl");
+	_LIT8(pref, "testns");
+	_LIT(KUriError,"Namespace finding for prefix error.");
+	if(tmp.LookupNamespaceUriL(pref).Compare(uri))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KUriError);
+		iLog->Log((TDesC)KUriError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KPrefError,"Prefix finding for uri error.");
+	if(tmp.LookupPrefixL(uri).Compare(pref))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KPrefError);
+		iLog->Log((TDesC)KPrefError);
+		return KErrGeneral;
+		}		
+	
+	_LIT(KDefError,"Is default checking error.");
+	if(tmp.IsDefaultNamespaceL(uri))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDefError);
+		iLog->Log((TDesC)KDefError);
+		return KErrGeneral;
+		}
+
+	if(!tmp.IsDefaultNamespaceL(uriD))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDefError);
+		iLog->Log((TDesC)KDefError);
+		return KErrGeneral;
+		}
+	return KErrNone;	
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::ElementNamespacePocessingL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::ElementNamespacePocessingL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+	
+	_LIT8(uri, "http://test.com");
+	_LIT8(uriD, "http://test.pl");
+	_LIT8(pref, "testns");
+	_LIT(KUriError,"Namespace finding for prefix error.");
+	if(tmp.LookupNamespaceUriL(pref).Compare(uri))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KUriError);
+		iLog->Log((TDesC)KUriError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KPrefError,"Prefix finding for uri error.");
+	if(tmp.LookupPrefixL(uri).Compare(pref))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KPrefError);
+		iLog->Log((TDesC)KPrefError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KDefError,"Default namespace checking error.");
+	if(tmp.DefaultNamespaceL().Uri().Compare(uriD))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDefError);
+		iLog->Log((TDesC)KDefError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(xmlU,"http://www.w3.org/XML/1998/namespace");
+	_LIT8(xmlP,"xml");
+	_LIT(KXMLError,"XML namespace checking error.");
+	if(!(!tmp.TheXMLNamespaceL().Uri().Compare(xmlU) && !tmp.TheXMLNamespaceL().Prefix().Compare(xmlP)))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KXMLError);
+		iLog->Log((TDesC)KXMLError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KDeclError,"Has namespace declaration function checking error.");
+	if(!iDoc.DocumentElement().AsElement().HasNsDeclarationForPrefixL(pref))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDeclError);
+		iLog->Log((TDesC)KDeclError);
+		return KErrGeneral;
+		}
+		
+	_LIT8(str,"wrong");	
+	_LIT8(str2,"http://wrong.com");	
+	if(tmp.HasNsDeclarationForPrefixL(str))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KDeclError);
+		iLog->Log((TDesC)KDeclError);
+		return KErrGeneral;
+		}
+		
+	tmp.FindOrCreateNsDeclL(str2,str);
+	tmp.FindOrCreateNsDeclL(uri);
+	_LIT8(str3,"newns");	
+	_LIT8(str4,"http://newns.com");
+	tmp = tmp.NextSibling().AsElement();	
+	tmp.AddNamespaceDeclarationL (str4,str3);
+	tmp.SetNoDefaultNamespaceL();
+		
+	return KErrNone;	
+	}
+
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckEntityRefL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckEntityRefL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngNode tmp = iDoc.DocumentElement().FirstChild();
+	
+	_LIT(KSimTextError,"Is simple text checking error.");
+	if(!tmp.IsSimpleTextContents())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KSimTextError);
+		iLog->Log((TDesC)KSimTextError);
+		return KErrGeneral;
+		}
+	
+	tmp = iDoc.DocumentElement().LastChild();
+	if(tmp.IsSimpleTextContents())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KSimTextError);
+		iLog->Log((TDesC)KSimTextError);
+		return KErrGeneral;
+		}
+		
+	TXmlEngEntityReference ref;
+	ref = tmp.FirstChild().AsEntityReference();
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(ref.NodeType() == TXmlEngNode::EEntityReference))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+		
+	_LIT8(str, "1.1 test");
+	RBuf8 str2;
+	tmp.WholeTextContentsCopyL(str2);
+	
+	_LIT(KContentError,"Content checking error.");
+  	if(str2.Compare(str))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KContentError);
+		iLog->Log((TDesC)KContentError);
+		return KErrGeneral;
+		}	
+	
+	str2.Close();
+	
+	tmp = tmp.PreviousSibling();
+	_LIT8(str3, "test 1.1 test");
+	RBuf8 str4;
+	tmp.WholeTextContentsCopyL(str4);
+	
+	if(str4.Compare(str3))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KContentError);
+		iLog->Log((TDesC)KContentError);
+		return KErrGeneral;
+		}	
+		
+	str4.Close();
+	
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::NodeTreeModificationL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::NodeTreeModificationL( CStifItemParser& /*aItem*/)
+	{
+	TXmlEngNode tmp = iDoc.DocumentElement();
+	
+	TXmlEngNode tmp2 = tmp.FirstChild().CopyL();
+	tmp.AppendChildL(tmp2);
+	
+	tmp.FirstChild().NextSibling().CopyToL(tmp.LastChild());
+	
+	tmp.LastChild().PreviousSibling().ReplaceWith(tmp.FirstChild().NextSibling());
+	
+	tmp.FirstChild().MoveTo(tmp.FirstChild().NextSibling());	
+		
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::NodeTreeDeletingL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::NodeTreeDeletingL( CStifItemParser& /*aItem*/)
+	{
+	TXmlEngNode tmp = iDoc.DocumentElement();
+	
+	TXmlEngNode tmp2 = tmp.FirstChild().Unlink();
+	
+	tmp2 = tmp.LastChild().SubstituteForL(tmp2);
+	
+	tmp2.Remove();
+	
+	tmp.FirstChild().Remove();
+		
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckNodeListL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckNodeListL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngNode tmp;
+	tmp = iDoc.DocumentElement();
+	
+	RXmlEngNodeList<TXmlEngElement> nodeList;
+	tmp.AsElement().GetChildElements(nodeList);
+	
+	_LIT(KChildError,"Child count checking error.");
+  	if(nodeList.Count() != 4)
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KChildError);
+		iLog->Log((TDesC)KChildError);
+		return KErrGeneral;
+		}
+	
+	_LIT(KHasNextError,"Has next checking error.");
+  	if (!nodeList.HasNext())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KHasNextError);
+		iLog->Log((TDesC)KHasNextError);
+		return KErrGeneral;
+		}
+	
+	TXmlEngElement tmpE;
+	tmpE = nodeList.Next();	
+	
+/*	_LIT8(name,"elem1");
+	_LIT(KNameError,"Has next checking error.");
+  	if (tmpE.TagName().Compare(name))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNameError);
+		iLog->Log((TDesC)KNameError);
+		return KErrGeneral;
+		}
+*/	
+	nodeList.Next();
+	nodeList.Next();
+	tmpE = nodeList.Next();
+	
+/*	_LIT8(name1,"elem4");
+  	if (tmpE.TagName().Compare(name1))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNameError);
+		iLog->Log((TDesC)KNameError);
+		return KErrGeneral;
+		}
+*/	
+	nodeList.Next();
+	
+	if (nodeList.HasNext())
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KHasNextError);
+		iLog->Log((TDesC)KHasNextError);
+		return KErrGeneral;
+		}
+	
+	nodeList.Close();
+	
+	return KErrNone;
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckAttributesL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckAttributesL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+	
+	RXmlEngNodeList<TXmlEngAttr> attrList;
+	tmp.GetAttributes(attrList);
+	
+	TXmlEngAttr tmpA;
+	tmpA = attrList.Next();
+	
+	_LIT(KTypeError,"Node type checking error.");
+	if(!(tmpA.NodeType() == TXmlEngNode::EAttribute))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KTypeError);
+		iLog->Log((TDesC)KTypeError);
+		return KErrGeneral;
+		}
+		
+	tmpA = tmpA.CopyL();
+	tmp.NextSibling().AppendChildL(tmpA);
+	
+	tmpA = attrList.Next();
+	tmpA.Remove();
+	
+	tmpA = attrList.Next();
+	
+	_LIT(KParError,"Parent element checking error.");
+	if(!(tmpA.OwnerElement().IsSameNode(tmp)))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KParError);
+		iLog->Log((TDesC)KParError);
+		return KErrGeneral;
+		}
+	
+	_LIT8(str,"attr3");
+	_LIT8(str1,"test");
+	_LIT8(str2,"test&test1;test");
+	_LIT(KNameError,"Attribute name checking error.");
+	if(tmpA.Name().Compare(str))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KNameError);
+		iLog->Log((TDesC)KNameError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KAttrError,"Attribute value checking error.");
+	if(tmpA.Value().Compare(str1))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttrError);
+		iLog->Log((TDesC)KAttrError);
+		return KErrGeneral;
+		}
+		
+	tmpA.SetEscapedValueL(str2);
+	
+	tmpA = attrList.Next();
+	_LIT8(str3,"1.1tekst");
+	RBuf8 tmpS;
+	tmpA.WholeValueCopyL(tmpS);
+	_LIT(KAttr2Error,"Attribute value with entity checking error.");
+	if(tmpS.Compare(str3))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttr2Error);
+		iLog->Log((TDesC)KAttr2Error);
+		return KErrGeneral;
+		}
+	tmpS.Close();
+	attrList.Close();
+	
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckElementAttributesL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckElementAttributesL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+	
+	_LIT8(str,"attr2");
+	_LIT8(str2,"wrong");
+	
+	_LIT(KHasAttError,"Has attribute checking error.");
+	if(!(tmp.HasAttributeL(str,KNullDesC8)))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KHasAttError);
+		iLog->Log((TDesC)KHasAttError);
+		return KErrGeneral;
+		}
+		
+	if(tmp.HasAttributeL(str,str2))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KHasAttError);
+		iLog->Log((TDesC)KHasAttError);
+		return KErrGeneral;
+		}
+	
+	if(tmp.HasAttributeL(str2,KNullDesC8))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KHasAttError);
+		iLog->Log((TDesC)KHasAttError);
+		return KErrGeneral;
+		}
+		
+	_LIT8(str3,"tewt");		
+	_LIT(KAttError,"Attribute node function checking error.");
+	if(tmp.AttributeNodeL(str,KNullDesC8).Value().Compare(str3))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttError);
+		iLog->Log((TDesC)KAttError);
+		return KErrGeneral;
+		}
+		
+	_LIT(KAttVError,"Attribute value function checking error.");
+	if(tmp.AttributeValueL(str,KNullDesC8).Compare(str3))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttVError);
+		iLog->Log((TDesC)KAttVError);
+		return KErrGeneral;
+		}
+		
+	if(tmp.AttributeValueL(str2,KNullDesC8).Compare(KNullDesC8))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KAttVError);
+		iLog->Log((TDesC)KAttVError);
+		return KErrGeneral;
+		}
+			
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckModifAttributesL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckModifAttributesL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+	
+	_LIT8(str,"attr2");
+	_LIT8(str2,"wrong");
+		
+	_LIT8(str4,"attr3");
+	tmp.RemoveAttributeL(str4,KNullDesC8);
+	tmp.SetAttributeL(str,str2);
+	
+	tmp = tmp.NextSibling().AsElement();
+	_LIT8(uri,"test.com");
+	_LIT8(pref,"testns");
+	tmp.SetAttributeL(str,str2,uri,pref);
+	TXmlEngAttr tmpA = iDoc.CreateAttributeL(str4);
+	tmpA.SetValueL(str4);
+	tmp.SetAttributeNodeL(tmpA);
+			
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::AddingAttributesL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::AddingAttributesL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+	
+	_LIT8(str,"attr2");
+	_LIT8(str2,"wrong");
+	_LIT8(pref,"testns");
+	_LIT8(uri, "http://test.com");
+	
+	tmp.AddNewAttributeL(str,str2);
+	tmp.AddNewAttributeWithNsL(str,str2,uri);
+	
+	tmp = tmp.NextSibling().AsElement();
+	tmp.AddNewAttributeSameNsL(str,str2);
+	tmp.AddNewAttributeUsePrefixL(str2,str,pref);
+		
+	_LIT8(str4,"attr3");
+	_LIT8(pref2,"testns2");
+	_LIT8(uri2, "http://test.com.pl");
+	tmp.AddNewAttributeL(str4,str2,uri2,pref2);
+	
+	tmp = tmp.NextSibling().NextSibling().AsElement();
+	tmp.RemoveAttributes();
+	tmp.CopyAttributesL(iDoc.DocumentElement().FirstChild().AsElement());
+	
+	tmp = tmp.NextSibling().AsElement();
+	TXmlEngNamespace tmpNs = tmp.FindOrCreateNsDeclL(uri2,pref2);
+	tmp.AddNewAttributeL(str4,str,tmpNs);	
+			
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::AddingElementsL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::AddingElementsL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+	
+	_LIT8(str,"element");
+	_LIT8(str2,"wrong");
+	_LIT8(pref,"testns");
+	_LIT8(uri, "http://test.com");
+	
+	tmp.AddNewElementL(str);
+	tmp.AddNewElementWithNsL(str,uri);
+	
+	tmp = tmp.NextSibling().AsElement();
+	tmp.AddNewElementSameNsL(str);
+	tmp.AddNewElementUsePrefixL(str2,pref);
+		
+	_LIT8(str4,"element3");
+	_LIT8(pref2,"testns2");
+	_LIT8(uri2, "http://test.com.pl");
+	tmp.AddNewElementL(str4,uri2,pref2);
+	
+	tmp = tmp.NextSibling().NextSibling().AsElement();
+	tmp.CopyChildrenL(iDoc.DocumentElement().FirstChild().AsElement());
+	
+	tmp = tmp.NextSibling().AsElement();
+	TXmlEngNamespace tmpNs = tmp.FindOrCreateNsDeclL(uri2,pref2);
+	tmp.AddNewElementL(str4,tmpNs);
+	
+	_LIT8(uri3, "http://test.test.pl");
+	tmp.AddNewElementAutoPrefixL(str4,uri3,iDoc.DocumentElement());
+			
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckModifElementL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckModifElementL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().NextSibling().AsElement().CopyL();
+	iDoc.DocumentElement().AppendChildL(tmp);
+	tmp = iDoc.DocumentElement().FirstChild().NextSibling().AsElement().ElementCopyNoChildrenL(FALSE);
+	iDoc.DocumentElement().AppendChildL(tmp);
+	iDoc.DocumentElement().FirstChild().NextSibling().AsElement().ClearElement();
+	
+	_LIT8(str,"elem1");
+	iDoc.DocumentElement().RemoveChildElementsL(str,KNullDesC8);
+			
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CheckModifElementL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CheckNextL( CStifItemParser& /*aItem*/ )
+	{
+	//TDOMString tmp = iDoc.DocumentElement().FirstChild().FirstChild().FirstChild().FirstChild().AsText().Contents();
+	//TDOMString tmp = iDoc.DocumentElement().FirstChild().FirstChild().FirstChild().WholeTextValueContextL();
+	TPtrC8 tmp = iDoc.DocumentElement().FirstChild().FirstChild().FirstChild().FirstChild().AsCDATASection().Contents();
+	HBufC8* test = tmp.AllocL();           //pjj18 leak!!!
+	return KErrNone;    
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::SetElementTextL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::SetElementTextL( CStifItemParser& /*aItem*/ )
+	{
+	TXmlEngElement tmp = iDoc.DocumentElement().FirstChild().AsElement();
+	
+	_LIT8(str4,"test");
+	_LIT(KContentError,"Content checking error.");
+  	if(tmp.Text().Compare(str4))
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KContentError);
+		iLog->Log((TDesC)KContentError);
+		return KErrGeneral;
+		}	
+	
+	_LIT8(str,"new text");
+	_LIT8(str2," new added text");
+	_LIT8(str3,"test&test1;test");
+	tmp.SetTextL(str);
+	tmp.AddTextL(str2);
+	tmp = tmp.NextSibling().AsElement();
+	tmp.SetEscapedTextL(str3);
+	
+	_LIT8(name,"elem1");
+	_LIT8(uri,"http://test.com");
+	RXmlEngNodeList<TXmlEngElement> nodeList;
+	iDoc.DocumentElement().AsElement().GetElementsByTagNameL(nodeList,name,uri);
+	
+	_LIT(KChildError,"GetElementsByTagName checking error.");
+  	if(nodeList.Count() != 2)
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KChildError);
+		iLog->Log((TDesC)KChildError);
+		return KErrGeneral;
+		}
+	nodeList.Close();
+	
+	iDoc.DocumentElement().AsElement().GetElementsByTagNameL(nodeList,name,
+				iDoc.DocumentElement().AsElement().DefaultNamespaceL().Uri());
+	if(nodeList.Count() != 1)
+		{
+		TestModuleIf().Printf( infoNum++,KTEST_NAME, KChildError);
+		iLog->Log((TDesC)KChildError);
+		return KErrGeneral;
+		}	
+	
+	iDoc.DocumentElement().AsElement().RemoveNamespaceDeclarations();
+	iDoc.DocumentElement().ReconcileNamespacesL();
+	nodeList.Close();
+			
+	return KErrNone;    
+	}
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::AddXmlIdL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::AddXmlIdL( CStifItemParser& aItem )
+	{
+	TXmlEngElement root = iDoc.DocumentElement();
+	
+	RBuf8 nameS;
+	CleanupClosePushL(nameS);
+	RBuf8 uriS;
+	CleanupClosePushL(uriS);
+	
+	TPtrC name;
+	User::LeaveIfError( aItem.GetNextString(name) );
+	nameS.CreateL( name.Length() );
+	nameS.Copy( name );
+
+	
+	TPtrC uri;
+	if (aItem.GetNextString(uri) == KErrNone)
+	    {
+	    uriS.CreateL( uri.Length() );
+	    uriS.Copy( uri );
+	    }
+	
+	iDoc.RegisterXmlIdL(nameS,uriS);
+	CleanupStack::PopAndDestroy(&uriS);
+    CleanupStack::PopAndDestroy(&nameS);
+
+	return KErrNone;   
+	}
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::AddXmlId2L
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::AddXmlId2L( CStifItemParser& aItem )
+	{
+	TXmlEngElement root = iDoc.DocumentElement();
+	
+	RBuf8 nameS;
+	CleanupClosePushL(nameS);
+	RBuf8 uriS;
+	CleanupClosePushL(uriS);
+	RBuf8 valueS;
+	CleanupClosePushL(valueS);
+	
+	TPtrC name;
+	User::LeaveIfError( aItem.GetNextString(name) );
+	nameS.CreateL( name.Length() );
+	nameS.Copy( name );
+
+	
+	TPtrC uri;
+	aItem.GetNextString(uri);
+	uriS.CreateL( uri.Length() );
+	uriS.Copy( uri );
+	   
+	TPtrC value;
+	aItem.GetNextString(value);
+	valueS.CreateL( value.Length() );
+	valueS.Copy( value );
+	
+	iDoc.RegisterXmlIdL(root.FirstChild().NextSibling().AsElement(),nameS,uriS);
+	TXmlEngElement element = iDoc.FindElementByXmlIdL(valueS);
+	
+	CleanupStack::PopAndDestroy(&valueS);
+	CleanupStack::PopAndDestroy(&uriS);
+    CleanupStack::PopAndDestroy(&nameS);
+	if ( element.NotNull() )
+	    {
+	    return KErrNone;    
+	    }
+	else
+	    {
+	    return KErrNotFound;
+	    }
+	}
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::AddXmlId3L
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::AddXmlId3L( CStifItemParser& aItem )
+	{
+	TInt nResult = KErrNone;
+	TXmlEngElement root = iDoc.DocumentElement();
+	
+	RBuf8 uriS;
+	CleanupClosePushL(uriS);
+		
+	TPtrC uri;
+	aItem.GetNextString(uri);
+	uriS.CreateL( uri.Length() );
+	uriS.Copy( uri );
+	
+	TPtrC pDirtyReturn;
+    aItem.GetNextString( pDirtyReturn );
+    
+    TLex inputNum (pDirtyReturn);
+    TInt dirtyReturn;
+    inputNum.Val(dirtyReturn);	
+	
+	TRAPD(trapResult,		
+	iDoc.RegisterXmlIdL(KNullDesC8,uriS);
+	);
+	if (trapResult == dirtyReturn ) nResult = KErrNone;
+		else if (trapResult != KErrNone) nResult = trapResult;
+			else nResult = KErrGeneral;
+				
+	CleanupStack::PopAndDestroy(&uriS);
+	return nResult;	
+	}
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::FindXmlIdL
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::FindXmlIdL( CStifItemParser& aItem )
+	{    
+    TBool shouldFind;
+	RBuf8 valueS;
+	CleanupClosePushL( valueS );
+	
+	TPtrC value;
+	User::LeaveIfError( aItem.GetNextString(value) );
+	valueS.CreateL( value.Length() );
+	valueS.Copy(value);
+
+    TPtrC ptr;
+    shouldFind = (aItem.GetNextString(ptr)!=KErrNone);
+
+	TXmlEngElement element = iDoc.FindElementByXmlIdL(valueS);	
+	
+	CleanupStack::PopAndDestroy( &valueS );
+	if ( shouldFind!=(element.IsNull()) )
+	    {
+	    return KErrNone;    
+	    }
+	else
+	    {
+	    return KErrNotFound;
+	    }
+	}
+	
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::SetTextNoEncTestL(CStifItemParser& aItem)
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::SetTextNoEncTestL(CStifItemParser& aItem)
+	{
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+	
+	TPtrC pData;
+	aItem.GetNextString(pData);
+	
+	TPtrC pOut;
+	aItem.GetNextString(pOut);
+	
+	iDoc = parser.ParseFileL(pDoc);
+	
+	HBufC8* dataBuffer = ReadFileToBufferL(pData);
+	CleanupStack::PushL( dataBuffer );
+	
+	RXmlEngNodeList<TXmlEngNode> aList;
+	iDoc.GetChildNodes(aList);
+	TXmlEngNode current = aList.Next();
+	
+	while( current.NotNull() )
+		{	
+		if(current.NodeType() == 1 )
+			{
+			current.AsElement().SetTextNoEncL(dataBuffer->Des());					
+			}
+		current = aList.Next();
+		}
+	
+	iDoc.SaveL(pOut);
+	
+	CleanupStack::PopAndDestroy( 1 );
+	return KErrNone;
+	}
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::AppendTextNoEncTestL(CStifItemParser& aItem)
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+TInt CLibxml2Tester::AppendTextNoEncTestL(CStifItemParser& aItem)
+	{
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+	
+	TPtrC pData;
+	aItem.GetNextString(pData);
+	
+	TPtrC pOut;
+	aItem.GetNextString(pOut);
+	
+	iDoc = parser.ParseFileL(pDoc);
+	
+	HBufC8* dataBuffer = ReadFileToBufferL(pData);
+	CleanupStack::PushL( dataBuffer );
+	
+	RXmlEngNodeList<TXmlEngNode> aList;
+	iDoc.GetChildNodes(aList);
+	TXmlEngNode current = aList.Next();
+	
+	while( current.NotNull() )
+		{	
+		if(current.NodeType() == 1 )
+			{
+			current.AsElement().AppendTextNoEncL(dataBuffer->Des());
+			break;					
+			}
+		current = aList.Next();
+		}
+	
+	iDoc.SaveL(pOut);
+	
+	CleanupStack::PopAndDestroy( 1 );
+	return KErrNone;
+	}
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::SetValueNoEncTestL(CStifItemParser& aItem)
+// Check if predefined entities are not converted into characters they represent
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::SetValueNoEncTestL(CStifItemParser& aItem)
+	{
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+	
+	TPtrC pOut;
+	aItem.GetNextString(pOut);
+	
+	iDoc = parser.ParseFileL(pDoc);
+//	SetupDocumentL();
+	TXmlEngElement tmp = iDoc.DocumentElement();
+	
+	_LIT8(str,"attr2");
+	_LIT8(str2,"wrong");
+	_LIT8(uri, "http://test.com");
+	
+	tmp.AddNewAttributeL(str,str2);
+	tmp.AddNewAttributeWithNsL(str,str2,uri);
+	
+	
+	TPtrC8 noEnc = _L8("&sup3; &#179;  &#xB3; < > ! @ $ &");
+		
+	TXmlEngAttr attr;
+	
+	if( tmp.HasAttributeL(str))
+		{
+		attr = tmp.AttributeNodeL(str);
+		}
+		else 
+			{
+			return KErrNotFound;
+			}
+	 
+	attr.SetValueNoEncL(noEnc);					
+	
+	iDoc.SaveL(pOut);
+	
+	return KErrNone;
+	}
+	
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::CreateDocument2L
+// test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CreateDocument2L( CStifItemParser& aItem )
+	{
+	TPtrC pOut;
+	aItem.GetNextString( pOut );
+	
+	_LIT8(name,"doc");
+	_LIT8(uri,"http://test.com");
+	_LIT8(arg1,"1.1");
+	_LIT8(arg2,"http://test2.org");
+	
+	iDoc.OpenL(DOM_impl);
+	iDoc.CreateDocumentElementL(name);
+	iDoc.DocumentElement().SetDefaultNamespaceL(uri);
+	iDoc.SetStandalone(TRUE);
+	iDoc.SetXmlVersionL(arg1);
+	iDoc.SetDocumentUriL(arg2);
+	
+	// test function Implementation()
+	RXmlEngDOMImplementation DOM_impl_2 = iDoc.Implementation();
+	RXmlEngDocument iDoc2;
+		
+	iDoc2.OpenL(DOM_impl_2, iDoc.DocumentElement());
+	iDoc2.SaveL(pOut);
+	
+	
+    return KErrNone;    
+    } 
+  // -----------------------------------------------------------------------------
+// CLibxml2Tester::CreateEntityReferenceTestL
+// Check if entity reference is created correctly
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::CreateEntityReferenceTestL(CStifItemParser& aItem)
+	{
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+	
+	TPtrC pOut;
+	aItem.GetNextString(pOut);
+	
+	TPtrC8 entity = _L8("#xB3");
+		
+	iDoc = parser.ParseFileL(pDoc);
+	
+	TXmlEngEntityReference entref = iDoc.CreateEntityReferenceL(entity);					
+	iDoc.DocumentElement().AppendChildL(entref);
+	iDoc.SaveL(pOut);
+	
+	return KErrNone;
+	} 
+  
+ // -----------------------------------------------------------------------------
+// CLibxml2Tester::ParseFileDOM2L
+// Parse file with a handle to a file server session
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::ParseFileDom2L( CStifItemParser& aItem )
+{
+
+	_LIT(KSourceFileErrorName,"No source file name.");
+    _LIT(KEndParsing,"Parsing end.");
+    
+	TPtrC SrcFile;
+	TPtrC tmp;
+	TBool map = TRUE;
+    if ( aItem.GetNextString(SrcFile) != KErrNone )
+        {
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KSourceFileErrorName);
+     	iLog->Log((TDesC)KSourceFileErrorName);
+        return KErrGeneral;
+        }
+        
+    if ( aItem.GetNextString(tmp) == KErrNone )
+        {
+        map = FALSE;
+        }
+	TFileName srcFileName;
+	srcFileName.Copy(SrcFile);
+	
+	RFs aRFs;
+    aRFs.Connect();
+    CleanupClosePushL( aRFs );
+
+
+	TInt err;
+	TRAP(err, iDoc = parser.ParseFileL(aRFs,srcFileName));
+	
+	if(map && err == KXmlEngErrParsing)
+		{
+		iLastError = parser.GetLastParsingError();	
+		}
+	else
+		{
+		iLastError = err;		
+		}
+	TestModuleIf().Printf( infoNum++,KTEST_NAME,KEndParsing);
+	iLog->Log((TDesC)KEndParsing);
+	
+	CleanupStack::PopAndDestroy( &aRFs );
+    return KErrNone;    
+    }  
+    
+ // -----------------------------------------------------------------------------
+// CLibxml2Tester::ParseFileDOM3L
+// test parse from buffer
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::ParseFileDom3L( CStifItemParser& aItem )
+{
+
+	_LIT(KSourceFileErrorName,"No source file name.");
+    _LIT(KEndParsing,"Parsing end.");
+    
+	TPtrC SrcFile;
+	TPtrC tmp;
+	TBool map = TRUE;
+    if ( aItem.GetNextString(SrcFile) != KErrNone )
+        {
+        TestModuleIf().Printf( infoNum++,KTEST_NAME,KSourceFileErrorName);
+     	iLog->Log((TDesC)KSourceFileErrorName);
+        return KErrGeneral;
+        }
+        
+    if ( aItem.GetNextString(tmp) == KErrNone )
+        {
+        map = FALSE;
+        }
+	HBufC8* buffer = ReadFileL(SrcFile);
+	CleanupStack::PushL(buffer);
+
+
+	TInt err;
+	TRAP(err, iDoc = parser.ParseL(buffer->Des()));
+	
+	if(map && err == KXmlEngErrParsing)
+		{
+		iLastError = parser.GetLastParsingError();	
+		}
+	else
+		{
+		iLastError = err;		
+		}
+	TestModuleIf().Printf( infoNum++,KTEST_NAME,KEndParsing);
+	iLog->Log((TDesC)KEndParsing);
+	
+	CleanupStack::PopAndDestroy( buffer );
+    return KErrNone;    
+    }   
+    
+ // -----------------------------------------------------------------------------
+// CLibxml2Tester::LookupNamespaceByPrefixTestL
+// lookup namespace in node
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::LookupNamespaceByPrefixTestL( CStifItemParser& aItem )
+	{ 
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+
+
+	TPtrC8 pref = _L8("sip");
+	TPtrC8 uri = _L8("http://schemas.live.com/mws/2005/08/messaging");
+	
+	iDoc = parser.ParseFileL( pDoc );	
+	RXmlEngNodeList<TXmlEngElement> aList;
+	iDoc.DocumentElement().FirstChild().NextSibling().LastChild().AsElement().GetChildElements(aList);
+	TXmlEngNamespace found;
+	TXmlEngElement elem;
+	for(TInt i = 0; i < aList.Count(); i++)
+		{
+		elem = aList.Next();
+		found = elem.LookupNamespaceByPrefixL(pref);
+		if(found.NotNull()) break;
+		}
+		 
+	TPtrC8 testPtr = found.Uri();
+	return found.Uri().Compare(uri);
+	}
+
+ // -----------------------------------------------------------------------------
+// CLibxml2Tester::LookupNamespaceByUriTestL
+// lookup namespace in node
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::LookupNamespaceByUriTestL( CStifItemParser& aItem )
+	{ 
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+
+
+	TPtrC8 pref = _L8("sip");
+	TPtrC8 uri = _L8("http://schemas.live.com/mws/2005/08/messaging");
+	
+	iDoc = parser.ParseFileL( pDoc );	
+	RXmlEngNodeList<TXmlEngElement> aList;
+	iDoc.DocumentElement().FirstChild().NextSibling().LastChild().AsElement().GetChildElements(aList);
+	TXmlEngNamespace found;
+	TXmlEngElement elem;
+	for(TInt i = 0; i < aList.Count(); i++)
+		{
+		elem = aList.Next();
+		found = elem.LookupNamespaceByUriL(uri);
+		if(found.NotNull()) break;
+		}
+		 
+	TPtrC8 testPtr = found.Uri();
+	return found.Prefix().Compare(pref);
+	}
+ // -----------------------------------------------------------------------------
+// CLibxml2Tester::LookupNamespaceByPrefixTest2L
+// lookup namespace in parent
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::LookupNamespaceByPrefixTest2L( CStifItemParser& aItem )
+	{ 
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+
+
+	TPtrC8 pref = _L8("S");
+	TPtrC8 uri = _L8("http://www.w3.org/2003/05/soap-envelope");
+	
+	iDoc = parser.ParseFileL( pDoc );	
+	
+	TXmlEngElement elem = iDoc.DocumentElement().FirstChild().NextSibling().LastChild().AsElement();
+	TXmlEngNamespace found = elem.LookupNamespaceByPrefixL(pref);
+
+		 
+	TPtrC8 testPtr = found.Uri();
+	return found.Uri().Compare(uri);
+	}
+
+ // -----------------------------------------------------------------------------
+// CLibxml2Tester::LookupNamespaceByUriTest2L
+// lookup namespace in parent
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::LookupNamespaceByUriTest2L( CStifItemParser& aItem )
+	{ 
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+
+
+	TPtrC8 pref = _L8("S");
+	TPtrC8 uri = _L8("http://www.w3.org/2003/05/soap-envelope");
+	
+	iDoc = parser.ParseFileL( pDoc );	
+
+	TXmlEngElement elem = iDoc.DocumentElement().FirstChild().NextSibling().LastChild().AsElement();
+	TXmlEngNamespace found = elem.LookupNamespaceByUriL(uri);
+
+	TPtrC8 testPtr = found.Uri();
+	return found.Prefix().Compare(pref);
+	}
+ // -----------------------------------------------------------------------------
+// CLibxml2Tester::RemoveChildrenTestL
+// test parse from buffer
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+TInt CLibxml2Tester::RemoveChildrenTestL( CStifItemParser& aItem)
+	{
+	TPtrC pDoc;
+	aItem.GetNextString(pDoc);
+	
+	TPtrC pOut;
+	aItem.GetNextString( pOut );
+	
+	iDoc = parser.ParseFileL( pDoc );	
+	iDoc.DocumentElement().FirstChild().NextSibling().LastChild().AsElement().RemoveChildren();
+	iDoc.SaveL( pOut );
+	
+	return KErrNone;
+	
+	}
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::UserDataTestL
+// test parse from buffer
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::UserDataTestL( CStifItemParser& aItem )
+	{
+	TPtrC pDoc;
+	aItem.GetNextString( pDoc );
+	
+	TPtrC pData;
+	aItem.GetNextString(pData);
+	
+	HBufC8* buffer = ReadFileL(pData);
+	CleanupStack::PushL(buffer);
+	
+	iDoc = parser.ParseFileL( pDoc );
+	
+	CTestUserData* data1 = new CTestUserData();
+	data1->str.Create(buffer->Des());
+	iDoc.DocumentElement().AddUserData(data1);
+
+	
+	CTestUserData* data2 = (CTestUserData*)iDoc.DocumentElement().UserData();
+    if(buffer->Des().Compare(data2->str))
+    	{
+    	return KErrGeneral;
+    	}
+    iDoc.DocumentElement().RemoveUserData();
+    if(iDoc.DocumentElement().UserData())
+    	{
+    	return KErrGeneral;
+    	}
+
+    data1->str.Close();  
+    delete data1;
+    
+    CleanupStack::PopAndDestroy( buffer );
+    return KErrNone;
+	}	
+
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::BaseUriTestL
+// test base uri
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::BaseUriTestL( CStifItemParser& /*aItem*/)
+	{
+	SetupDocumentL();
+	TInt nResult;
+    RBuf8 baseuri;
+    iElement.LastChild().BaseUriL(baseuri);
+   	if(baseuri.Compare(KNullDesC8)) nResult = KErrGeneral;
+   	else nResult = KErrNone;
+    baseuri.Close();        
+    return nResult;
+    }
+    
+// -----------------------------------------------------------------------------
+// CLibxml2Tester::AddXmlIdTestL
+// test base uri
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CLibxml2Tester::AddXmlIdTestL( CStifItemParser& aItem)
+	{
+	TPtrC pOut;
+	aItem.GetNextString( pOut );
+	
+	TPtrC8 pName = _L8("ID");
+	TPtrC8 pValue = _L8("1");
+	
+	SetupDocumentL();
+	iDoc.DocumentElement().AddXmlIdL(pName , pValue);
+	
+	
+	if ( iDoc.FindElementByXmlIdL(pValue).NotNull() )
+	    {
+	    iDoc.SaveL( pOut );
+	    return KErrNone;    
+	    }
+	else
+	    {
+	    return KErrNotFound;
+	    }
+	}
+
+// End of file