docs: function(node, ring) {
              /**
               * Two coordinate variations to consider:
               * 1) <gml:posList dimension="d">x0 y0 z0 x1 y1 z1</gml:posList>
               * 2) <gml:coordinates>x0, y0, z0 x1, y1, z1</gml:coordinates>
               */
              var nodeList, coordString;
              var coords = [];
              var points = [];
  
              // look for <gml:posList>
              nodeList = this.getElementsByTagNameNS(node, this.gmlns, "posList");
              if(nodeList.length > 0) {
                  coordString = this.getChildValue(nodeList[0]);
                  coordString = coordString.replace(this.regExes.trimSpace, "");
                  coords = coordString.split(this.regExes.splitSpace);
                  var dim = parseInt(nodeList[0].getAttribute("dimension"));
                  var j, x, y, z;
                  for(var i=0; i<coords.length/dim; ++i) {
                      j = i * dim;
                      x = coords[j];
                      y = coords[j+1];
                      z = (dim == 2) ? null : coords[j+2];
                      if (this.xy) {
                          points.push(new OpenLayers.Geometry.Point(x, y, z));
                      } else {
                          points.push(new OpenLayers.Geometry.Point(y, x, z));
                      }
                  }
              }
  
              // look for <gml:coordinates>
              if(coords.length == 0) {
                  nodeList = this.getElementsByTagNameNS(node, this.gmlns,
                                                         "coordinates");
                  if(nodeList.length > 0) {
                      coordString = this.getChildValue(nodeList[0]);
                      coordString = coordString.replace(this.regExes.trimSpace,
                                                        "");
                      coordString = coordString.replace(this.regExes.trimComma,
                                                        ",");
                      var pointList = coordString.split(this.regExes.splitSpace);
                      for(var i=0; i<pointList.length; ++i) {
                          coords = pointList[i].split(",");
                          if(coords.length == 2) {
                              coords[2] = null;
                          }
                          if (this.xy) {
                              points.push(new OpenLayers.Geometry.Point(coords[0],
                                                                    coords[1],
                                                                    coords[2]));
                          } else {
                              points.push(new OpenLayers.Geometry.Point(coords[1],
                                                                    coords[0],
                                                                    coords[2]));
                          }
                      }
                  }
              }
  
              var line = null;
              if(points.length != 0) {
                  if(ring) {
                      line = new OpenLayers.Geometry.LinearRing(points);
                  } else {
                      line = new OpenLayers.Geometry.LineString(points);
                  }
              }
              return line;
          }