def replaceXMLEntities(text) :
        for c, ent in (('<', '<'), ('>', '>'), ('&', '&')) :
                text = text.replace(c, ent)
 def replaceXMLEntities(text) :
        for c, ent in (('<', '<'), ('>', '>'), ('&', '&')) :
                text = text.replace(c, ent)
        state = 0
        if not getattr(ob, 'isPortalContent', False) :
                state = ob.listNearestFolderContents(contentFilter={'portal_type':filter}) and "-1" or "0"
        state = 0
        if not getattr(ob, 'isPortalContent', False) :
                state = ob.listNearestFolderContents(contentFilter={'portal_type':filter}) and "-1" or "0"
-       row = '<row id="%(id)s" url="%(url)s" icon="%(icon)s" height="%(height)d" width="%(width)d" state="%(state)s" description="%(description)s">%(title)s</row>' % {
-                 'id' : ob.getId(),
+       row = '<row name="%(name)s" url="%(url)s" icon="%(icon)s" height="%(height)d" width="%(width)d" state="%(state)s" description="%(description)s">%(title)s</row>' % {
+                 'name' : stm.node(ob).id,
                  'url' : ob.absolute_url(),
                  'title' : ' '+replaceXMLEntities(ob.title_or_id()),
                  'description' : ob.Description().translate(rmBadAttrChars),
                  'url' : ob.absolute_url(),
                  'title' : ' '+replaceXMLEntities(ob.title_or_id()),
                  'description' : ob.Description().translate(rmBadAttrChars),