def from_xml(data)
      procs.inject(XML::Node.from(data)[tag]) {|d,p| p.call(d) rescue d}
    end
def from_xml(data)
      procs.inject(XML::Node.from(data)[tag]) {|d,p| p.call(d) rescue d}
    end
Creates a new instance of Attr to be used as a template for converting
 XML to objects and from objects to XML
 @param [Symbol,String] name Sets the accessor methods for this attr.
   It is also used to guess defaults for :from and :as.
   For example if it ends with '?' and :as isn't set
   it will treat it as a boolean.
 @param [Hash] o the options for the new attr definition
 @option o [Symbol,String] :from (tag_proc.call(name))
   Tells OxMlk what the name of the XML attribute is.
   It defaults to name processed by the tag_proc.
 @option o [Symbol,String,Proc,Array<Symbol,String,Proc>] :as
   Tells OxMlk how to translate the XML.
   The argument is coerced into a Proc and applied to the string found in the XML attribute.
   If an Array is passed each Proc is applied in order with the results
   of the first being passed to the second and so on. If it isn't set
   and name ends in '?' it processes it as if :bool was passed otherwise
   it treats it as a string with no processing.
   Includes the following named Procs: Integer, Float, String, Symbol and :bool.
 @option o [Proc] :tag_proc (proc {|x| x}) Proc used to guess :from.
   The Proc is applied to name and the results used to find the XML attribute
   if :from isn't set.
 @yield [String] Adds anothe Proc that is applied to the value.
 Finds @tag in data and applies procs.