SPVM-Eg

 view release on metacpan or  search on metacpan

lib/SPVM/Eg/Node/Document.spvm  view on Meta::CPAN

    }
    elsif ($tag_name eq "xmp") {
      $element = Eg::Node::Element::HTML->new({owner_document => $self, node_name => $tag_name});
    }
    else {
      $element = Eg::Node::Element::HTML::Unknown->new({owner_document => $self, node_name => $tag_name});
    }
    
    return $element;
  }
  
  method create_element_ns : Eg::Node::Element ($namespace_uri : string, $qualified_name : string) {
    
    unless ($namespace_uri) {
      die "\$namespace_uri must be defined.";
    }
    
    unless ($qualified_name) {
      die "\$qualified_name must be defined.";
    }
    
    unless (length $qualified_name) {
      die "\$qualified_name must have its length.";
    }
    
    unless (Regex->new("^([a-zA-Z_][\w+\-\.]*:)?[a-zA-Z_][\w+\-\.]*$")->match($qualified_name)) {
      die "\$qualified_name must be a valid XML name.";
    }
    
    my $element = Eg::Node::Element->new({owner_document => $self});
    
    $element->{namespace_uri} = $namespace_uri;
    
    $element->{node_name} = $qualified_name;
    
    return $element;
  }
  
  method create_text_node : Eg::Node::Text ($node_value : string) {
    
    unless ($node_value) {
      die "\$node_value must be defined.";
    }
    
    my $text_node = Eg::Node::Text->new({owner_document => $self, node_value => $node_value});
    
    return $text_node;
  }
  
  method create_comment : Eg::Node::Comment ($node_value : string) {
    
    unless ($node_value) {
      die "\$node_value must be defined.";
    }
    
    my $comment_node = Eg::Node::Comment->new({owner_document => $self, node_value => $node_value});
    
    return $comment_node;
  }
  
  method create_cdata_section : Eg::Node::CDATASection ($node_value : string) {
    
    unless ($node_value) {
      die "\$node_value must be defined.";
    }
    
    my $cdata_section_node = Eg::Node::CDATASection->new({owner_document => $self, node_value => $node_value});
    
    return $cdata_section_node;
  }
  
  method create_document_fragment : Eg::Node::DocumentFragment () {
    
    my $document_fragment_node = Eg::Node::DocumentFragment->new({owner_document => $self});
    
    return $document_fragment_node;
  }
  
  method create_attribute : Eg::Node::Attr ($name : string) {
    
    my $attribute_node = Eg::Node::Attr->new($name, {owner_document => $self});
    
    return $attribute_node;
  }
  
  method create_attribute_ns : Eg::Node::Attr ($namespace_uri : string, $qualified_name : string) {
    
    my $attribute_node = Eg::Node::Attr->new_ns($namespace_uri, $qualified_name, {owner_document => $self});
    
    return $attribute_node;
  }
  
  method create_processing_instruction : Eg::Node::ProcessingInstruction ($target : string, $data : string) {
    
    my $processing_instruction_node = Eg::Node::ProcessingInstruction->new($target, $data, {owner_document => $self});
    
    return $processing_instruction_node;
  }
  
  method document_element : Eg::Node::Element () {
    
    my $root_node = (Eg::Node::Element)$self->first_child;
    
    return $root_node;
  }
  
  method head : Eg::Node::Element () {
    my $root_node = $self->document_element;
    
    return (Eg::Node::Element)$root_node->first_child;
  }
  
  method body : Eg::Node::Element () {
    my $root_node = $self->document_element;
    
    return (Eg::Node::Element)$root_node->first_child->next_sibling;
  }
  
}



( run in 0.871 second using v1.01-cache-2.11-cpan-5837b0d9d2c )