/**
  *
  * @return int PARSER_FORBID_PARSING
  * @access protected
  */
  function pre_parse()
  {
    global $tag_dictionary;
    if (! array_key_exists('file', $this->attributes) ||
        empty($this->attributes['file']))
    {
      error('MISSINGREQUIREATTRIBUTE', __FILE__ . ' : ' . __LINE__ . ' : ' .  __FUNCTION__,
        array('tag' => $this->tag,
              'attribute' => 'file',
              'file' => $this->source_file,
              'line' => $this->starting_line_no));
    }
    $file = $this->attributes['file'];

    if (!$this->resolved_source_file = resolve_template_source_file_name($file))
    {
      error('MISSINGFILE', __FILE__ . ' : ' . __LINE__ . ' : ' .  __FUNCTION__,
        array('tag' => $this->tag,
              'srcfile' => $file,
              'file' => $this->source_file,
              'line' => $this->starting_line_no));
    }

    if (array_key_exists('literal', $this->attributes))
    {
      $literal_component =& new text_node(read_template_file($this->resolved_source_file));
      $this->add_child($literal_component);
    }
    else
    {
      $sfp =& new source_file_parser($this->resolved_source_file, $tag_dictionary);
      $sfp->parse($this);
    }
    return PARSER_FORBID_PARSING;
  }
 /**
  * Provide local method of same name to help with Unit testing
  *
  * @param string $ path and file of source template
  * @return string raw text from template file
  * @access private
  */
 function read_template_file($sourcefile)
 {
     return read_template_file($sourcefile);
 }