docs: def parse_xml_layer(xml_custom_map_source):
          """
          Get one MapLayer from an XML element
  
          Args:
              xml_custom_map_source (Element): The <customMapSource> element tag wrapped
                 in a <layers> tag as XML Element
  
          Returns:
              MapLayer:
  
          """
          map_layer = MapLayer()
          try:
              for elem in xml_custom_map_source.getchildren():
                  if elem.tag == 'url':
                      map_layer.tile_url = elem.text
                  elif elem.tag == 'minZoom':
                      map_layer.min_zoom = int(elem.text)
                  elif elem.tag == 'maxZoom':
                      map_layer.max_zoom = int(elem.text)
          except ValueError:
              raise MapSourceException("minZoom/maxZoom must be an integer. ")
  
          if map_layer.tile_url is None:
              raise MapSourceException("Layer requires a tile_url parameter. ")
  
          return map_layer