docs: function(item) {
          var point = this.getElementsByTagNameNS(item, this.georssns, "point");
          var lat = this.getElementsByTagNameNS(item, this.geons, 'lat');
          var lon = this.getElementsByTagNameNS(item, this.geons, 'long');
          
          var line = this.getElementsByTagNameNS(item,
                                                  this.georssns,
                                                  "line");
          var polygon = this.getElementsByTagNameNS(item,
                                                  this.georssns,
                                                  "polygon");
          var where = this.getElementsByTagNameNS(item, 
                                                  this.georssns, 
                                                  "where");
          var box = this.getElementsByTagNameNS(item, 
                                                this.georssns, 
                                                "box");
  
          if (point.length > 0 || (lat.length > 0 && lon.length > 0)) {
              var location;
              if (point.length > 0) {
                  location = OpenLayers.String.trim(
                                  point[0].firstChild.nodeValue).split(/\s+/);
                  if (location.length !=2) {
                      location = OpenLayers.String.trim(
                                  point[0].firstChild.nodeValue).split(/\s*,\s*/);
                  }
              } else {
                  location = [parseFloat(lat[0].firstChild.nodeValue),
                                  parseFloat(lon[0].firstChild.nodeValue)];
              }    
  
              var geometry = new OpenLayers.Geometry.Point(location[1], location[0]);
                
          } else if (line.length > 0) {
              var coords = OpenLayers.String.trim(this.getChildValue(line[0])).split(/\s+/);
              var components = []; 
              var point;
              for (var i=0, len=coords.length; i<len; i+=2) {
                  point = new OpenLayers.Geometry.Point(coords[i+1], coords[i]);
                  components.push(point);
              }
              geometry = new OpenLayers.Geometry.LineString(components);
          } else if (polygon.length > 0) { 
              var coords = OpenLayers.String.trim(this.getChildValue(polygon[0])).split(/\s+/);
              var components = []; 
              var point;
              for (var i=0, len=coords.length; i<len; i+=2) {
                  point = new OpenLayers.Geometry.Point(coords[i+1], coords[i]);
                  components.push(point);
              }
              geometry = new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]);
          } else if (where.length > 0) { 
              if (!this.gmlParser) {
                this.gmlParser = new OpenLayers.Format.GML({'xy': this.xy});
              }
              var feature = this.gmlParser.parseFeature(where[0]);
              geometry = feature.geometry;
          } else if (box.length  > 0) {
              var coords = OpenLayers.String.trim(box[0].firstChild.nodeValue).split(/\s+/);
              var components = [];
              var point;
              if (coords.length > 3) {
                  point = new OpenLayers.Geometry.Point(coords[1], coords[0]);
                  components.push(point);
                  point = new OpenLayers.Geometry.Point(coords[1], coords[2]);
                  components.push(point);
                  point = new OpenLayers.Geometry.Point(coords[3], coords[2]);
                  components.push(point);
                  point = new OpenLayers.Geometry.Point(coords[3], coords[0]);
                  components.push(point);
                  point = new OpenLayers.Geometry.Point(coords[1], coords[0]);
                  components.push(point);
              }
              geometry = new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]);
          }
          
          if (geometry && this.internalProjection && this.externalProjection) {
              geometry.transform(this.externalProjection, 
                                 this.internalProjection);
          }
  
          return geometry;
      }