def child(name_or_data, options = {})
      data, name  = extract_data_and_name(name_or_data)
      name        = options[:root] if options.has_key? :root
      template    = partial_or_block(data, options) { yield }
      @template.add_node Nodes::Child.new(name, template)
    end
def child(name_or_data, options = {})
      data, name  = extract_data_and_name(name_or_data)
      name        = options[:root] if options.has_key? :root
      template    = partial_or_block(data, options) { yield }
      @template.add_node Nodes::Child.new(name, template)
    end
Creates a child node to be included in the output.
 name_or data can be an object or collection or a method to call on the data. It
 accepts :root and :partial options.
 Note that partial and blocks are not compatible
 Example:
   child(:@posts, :root => :posts) { attribute :id }
   child(:posts, :partial => 'posts/base')