Index: ogr_sp.py
===================================================================
--- ogr_sp.py	(revision 947)
+++ ogr_sp.py	(working copy)
@@ -27,7 +27,7 @@
 from osgeo import *
 import osgeo.ogr
 import osgeo.gdal
-import libxml2
+import lxml
 import os
 import sys
 import zoo
@@ -35,7 +35,7 @@
 def readFileFromBuffer(data,ext):
     try:
         geometry=[]
-        print >> sys.stderr,'/vsimem//temp1'+ext
+        print ('/vsimem//temp1'+ext, file=sys.stderr)
         #print >> sys.stderr,data
         osgeo.gdal.FileFromMemBuffer('/vsimem//temp1'+ext,data)
         ds = osgeo.ogr.Open('/vsimem//temp1'+ext)
@@ -48,7 +48,7 @@
         ds.Destroy()
         osgeo.gdal.Unlink('/vsimem//temp1'+ext)
         return geometry
-    except Exception,e:
+    except Exception as e:
         print >> sys.stderr,e
         return []
     
@@ -69,12 +69,12 @@
 def createGeometryFromWFS(conf,my_wfs_response):
     try:
         geom=osgeo.ogr.CreateGeometryFromGML(my_wfs_response.replace('<?xml version="1.0" encoding="utf-8"?>\n','').replace('<?xml version=\'1.0\' encoding="utf-8"?>\n',''))
-    except Exception,e:
-        print >> sys.stderr,"**"
+    except Exception as e:
+        print ("**", file=sys.stderr)
         print >> sys.stderr,e
         geom=None
     try:
-        print >> sys.stderr,geom is None
+        print (geom is None, file=sys.stderr)
         if geom is None:
             if not(conf["lenv"].has_key("cnt")):
                 conf["lenv"]["cnt"]=0
@@ -84,7 +84,7 @@
         else:
             return buildFeatureFromGeomtry(conf,geom,"GML","xml")
     except:
-        print >> sys.stderr,"Unable to load file input data !!!\n\n\n"
+        print ("Unable to load file input data !!!\n\n\n", file=sys.stderr)
 
 def createLayerFromJson(conf,obj):
     geom=osgeo.ogr.CreateGeometryFromJson(obj)
@@ -94,8 +94,8 @@
         return buildFeatureFromGeomtry(conf,geom,"GeoJSON","json")
 
 def extractInputs(conf,obj):
-    if obj.keys().count("cache_file"):
-        print >> sys.stderr,obj
+    if list(obj).count("cache_file"):
+        print (obj, file=sys.stderr)
         geometry=[]
         ds = osgeo.ogr.Open(obj["cache_file"])
         lyr = ds.GetLayer(0)
@@ -124,21 +124,21 @@
         driverName = "GeoJSON"
         extension = [ ".js" ]
         opts=None
-    if obj.keys().count("schema")>0 and \
+    if list(obj).count("schema")>0 and \
             obj["schema"]=="http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd":
         driverName = "KML"
         extension = [ ".kml" ]
         opts=None
     drv = osgeo.ogr.GetDriverByName( driverName )
-    print >> sys.stderr,drv
+    print (drv, file=sys.stderr)
     # Create virtual file
     ds = drv.CreateDataSource( "/vsimem/store"+conf["lenv"]["sid"]+extension[0],options = opts)
-    print >> sys.stderr,ds
+    print (ds, file=sys.stderr)
     lyr = ds.CreateLayer( "Result", None, osgeo.ogr.wkbUnknown )
-    print >> sys.stderr,lyr
+    print (lyr, file=sys.stderr)
     i=0
-    print >> sys.stderr,driverName
-    print >> sys.stderr,extension
+    print (driverName, file=sys.stderr)
+    print (extension, file=sys.stderr)
     while i < len(geom):
         if i==0 and driverName!="GeoJSON":
             poDstFDefn=geom[i].GetDefnRef()
@@ -167,12 +167,12 @@
     osgeo.gdal.Unlink("/vsimem/store"+conf["lenv"]["sid"]+extension[0])
 
 def BufferPy(conf,inputs,outputs):
-    print >> sys.stderr, "Starting service ..."
+    print ("Starting service ...", file=sys.stderr)
     try:
         bdist=float(inputs["BufferDistance"]["value"])
     except:
         bdist=1
-    print >> sys.stderr, bdist
+    print (bdist, file=sys.stderr)
     geometry=extractInputs(conf,inputs["InputPolygon"])
     i=0
     rgeometries=[]
@@ -191,7 +191,7 @@
 
 def Clean(conf,inputs,outputs):
     from shapely.wkb import loads
-    print >> sys.stderr, "Starting service ..."
+    print ("Starting service ...", file=sys.stderr)
     features=extractInputs(conf,inputs["InputData"])
     i=0
     rgeometries=[]
@@ -203,10 +203,10 @@
             if geom.is_valid:
                 tmp.SetGeometryDirectly(resg)
                 rgeometries+=[tmp]
-                print >> sys.stderr,"valid !"
+                print ("valid !", file=sys.stderr)
             else:
-                print >> sys.stderr,"invalid !"
-                print >> sys.stderr,geom.wkt[0:50]
+                print ("invalid !", file=sys.stderr)
+                print (geom.wkt[0:50], sys.stderr)
         features[i].Destroy()
         resg.thisown=False 
         tmp.thisown=False
@@ -213,7 +213,7 @@
         i+=1
     outputResult(conf,outputs["Result"],rgeometries)
     i=0
-    print >> sys.stderr,"Return"
+    print ("Return", file=sys.stderr)
     return zoo.SERVICE_SUCCEEDED
 
 def TransformService(conf,inputs,outputs):
@@ -288,7 +288,7 @@
 
 
 def EnvelopePy(conf,inputs,outputs):
-    print >> sys.stderr, inputs
+    print (inputs, file=sys.stderr)
     try:
         bdist=float(inputs["BufferDistance"]["value"])
     except:
@@ -296,7 +296,7 @@
     geometry=extractInputs(conf,inputs["InputPolygon"])
     tmp=geometry[0].GetGeometryRef().GetEnvelope()
     outputs["Result"]["value"]=str(tmp[0])+','+str(tmp[2])+','+str(tmp[1])+','+str(tmp[3])+','+'urn:ogc:def:crs:OGC:1.3:CRS84'
-    print >> sys.stderr,outputs["Result"]
+    print (outputs["Result"], file=sys.stderr)
     return 3
 
 def UnionPy(conf,inputs,outputs):
@@ -328,7 +328,7 @@
     geometry1=extractInputs(conf,inputs["InputEntity1"])
     geometry2=extractInputs(conf,inputs["InputEntity2"])
 
-    print >> sys.stderr,str(len(geometry1))+" "+str(len(geometry2))
+    print (str(len(geometry1))+" "+str(len(geometry2)), file=sys.stderr)
 
     rgeometries=[]
     fids=[]
@@ -354,7 +354,7 @@
         geometry2[i].Destroy()
         i+=1
     outputResult(conf,outputs["Result"],rgeometries)
-    print >> sys.stderr,"/outputResult"
+    print ("/outputResult", file=sys.stderr)
     return 3
 
 def DifferencePy(conf,inputs,outputs):
