protected void handleAttribution(LayerInfo layer) {
      AttributionInfo attribution = layer.getAttribution();

      String title = attribution.getTitle();
      String url = attribution.getHref();
      String logoURL = attribution.getLogoURL();
      String logoType = attribution.getLogoType();
      int logoWidth = attribution.getLogoWidth();
      int logoHeight = attribution.getLogoHeight();

      boolean titleGood = (title != null),
          urlGood = (url != null),
          logoGood = (logoURL != null && logoType != null && logoWidth > 0 && logoHeight > 0);

      if (titleGood || urlGood || logoGood) {
        start("Attribution");
        if (titleGood) element("Title", title);

        if (urlGood) {
          AttributesImpl urlAttributes = new AttributesImpl();
          urlAttributes.addAttribute("", "xmlns:xlink", "xmlns:xlink", "", XLINK_NS);
          urlAttributes.addAttribute(XLINK_NS, "type", "xlink:type", "", "simple");
          urlAttributes.addAttribute(XLINK_NS, "href", "xlink:href", "", url);
          element("OnlineResource", null, urlAttributes);
        }

        if (logoGood) {
          AttributesImpl logoAttributes = new AttributesImpl();
          logoAttributes.addAttribute("", "", "height", "", "" + logoHeight);
          logoAttributes.addAttribute("", "", "width", "", "" + logoWidth);
          start("LogoURL", logoAttributes);
          element("Format", logoType);

          AttributesImpl urlAttributes = new AttributesImpl();
          urlAttributes.addAttribute("", "xmlns:xlink", "xmlns:xlink", "", XLINK_NS);
          urlAttributes.addAttribute(XLINK_NS, "type", "xlink:type", "", "simple");
          urlAttributes.addAttribute(XLINK_NS, "href", "xlink:href", "", logoURL);

          element("OnlineResource", null, urlAttributes);
          end("LogoURL");
        }

        end("Attribution");
      }
    }