130     public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array()) {
 
  131         $this->elements[] = $element;
 
  133         list($content_model_type, $content_model) = $this->
parseContents($contents);
 
  140             $content_model, $content_model_type, $attr
 
  143         if (!is_string($contents)) $this->info[$element]->child = $contents;
 
  144         return $this->info[$element];
 
  154         if (!isset($this->info[$element])) {
 
  155             $this->elements[] = $element;
 
  157             $this->info[$element]->standalone = 
false;
 
  159             trigger_error(
"Definition for $element already exists in module, cannot redefine");
 
  161         return $this->info[$element];
 
  171         if (!isset($this->content_sets[$type])) $this->content_sets[$type] = 
'';
 
  172         else $this->content_sets[$type] .= 
' | ';
 
  173         $this->content_sets[$type] .= $element;
 
  186         if (!is_string($contents)) 
return array(null, null); 
 
  190                 return array(
'empty', 
'');
 
  192                 return array(
'optional', 
'Inline | #PCDATA');
 
  194                 return array(
'optional', 
'Flow | #PCDATA');
 
  196         list($content_model_type, $content_model) = explode(
':', $contents);
 
  197         $content_model_type = strtolower(trim($content_model_type));
 
  198         $content_model = trim($content_model);
 
  199         return array($content_model_type, $content_model);
 
  209         if (!is_array($attr_includes)) {
 
  210             if (empty($attr_includes)) $attr_includes = array();
 
  211             else $attr_includes = array($attr_includes);
 
  213         $attr[0] = $attr_includes;
 
  225         if (is_string($list)) $list = func_get_args();
 
  227         foreach ($list as $value) {
 
  228             if (is_null($value)) 
continue;