std::string name = elem.get_nodeName();
const String name = Model::getNodeName(Model::asNode(elem));
  parse(Configuration& conf, const typename Model::Element& node)  {    for (typename Model::ElementIterator iter(node); iter.more(); iter.next())      {	typename Model::Element elem = iter.element();	assert(elem);	std::string name = elem.get_nodeName();    	if (name == "dictionary-path")	  {	    std::string path = Model::elementValue(elem);	    if (!path.empty())	      {		Globals::logger(LOG_DEBUG, "found dictionary path `%s'", path.c_str());		conf.addDictionary(path);	      }	  } 	else if (name == "font-size")	  {	    std::string attr = elem.getAttribute("size");	    if (attr.empty())	      Globals::logger(LOG_WARNING, "malformed `font-size' element, cannot find `size' attribute");	    else	      {		conf.setFontSize(atoi(attr.c_str()));		Globals::logger(LOG_DEBUG, "default font size set to %d points", conf.getFontSize());	      }	  } 	else if (name == "color")	  {	    RGBColor f;	    RGBColor b;	    if (parseColor(elem, f, b))	      {		conf.setForeground(f); 		conf.setBackground(b);	      }	  }	else if (name == "link-color")	  {	    RGBColor f;	    RGBColor b;	    if (parseColor(elem, f, b))	      {		conf.setLinkForeground(f);		conf.setLinkBackground(b);	      }	  }	else if (name == "select-color")	  {	    RGBColor f;	    RGBColor b;	    if (parseColor(elem, f, b))	      {		conf.setSelectForeground(f);		conf.setSelectBackground(b);	      }	  }	else	  Globals::logger(LOG_WARNING, "unrecognized element `%s' in configuration file (ignored)", name.c_str());      }   }