You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axkit-dev@xml.apache.org by ma...@apache.org on 2002/05/26 17:34:21 UTC

cvs commit: xml-axkit/lib/Apache/AxKit/Language XSP.pm

matts       02/05/26 08:34:21

  Modified:    lib/Apache/AxKit/Language XSP.pm
  Log:
  Merged in Mike Chamberlain's patch
  
  Revision  Changes    Path
  1.10      +22 -15    xml-axkit/lib/Apache/AxKit/Language/XSP.pm
  
  Index: XSP.pm
  ===================================================================
  RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Language/XSP.pm,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XSP.pm	25 Mar 2002 07:28:17 -0000	1.9
  +++ XSP.pm	26 May 2002 15:34:21 -0000	1.10
  @@ -1,4 +1,4 @@
  -# $Id: XSP.pm,v 1.9 2002/03/25 07:28:17 matts Exp $
  +# $Id: XSP.pm,v 1.10 2002/05/26 15:34:21 matts Exp $
   
   package Apache::AxKit::Language::XSP;
   
  @@ -617,8 +617,8 @@
       elsif ($tag eq 'element') {
           if (my $name = $attribs{name}) {
               $e->manage_text(0);
  -            return '{ my $elem = $document->createElement(' . makeSingleQuoted($name) . ');' .
  -                    '$parent->appendChild($elem); $parent = $elem; }' . "\n";
  +            return 'my $elem; { $elem = $document->createElement(' . makeSingleQuoted($name) . ');' .
  +                    'my $parent = $elem; ' . "\n";
           }
       }
       elsif ($tag eq 'attribute') {
  @@ -696,8 +696,8 @@
       elsif ($tag eq 'name') {
           if ($node->{Parent}->{Name} =~ /^(.*:)?element$/) {
               $e->manage_text(0, 1);
  -            return '; my $elem = $document->createElement($name);' .
  -                    '$parent->appendChild($elem); $parent = $elem; }' . "\n";
  +            return '; my $elem; { $elem = $document->createElement($name);' .
  +                    ' my $parent = $elem; ' . "\n";
           }
           elsif ($node->{Parent}->{Name} =~ /^(.*:)?attribute$/) {
               $e->{attrib_seen_name} = 1;
  @@ -763,7 +763,7 @@
                   'my ($parent);',
                   "\n",
                   );
  -        $e->{XSP_User_Root} = 1;
  +        $e->{XSP_User_Root} = [ 1 ];
   #        $code = '{ my $elem = $document->createElement(q(' . $node->{Name} . '));' .
   #        $code = '{ my $elem = $document->createElementNS(q(' . ($node->{NamespaceURI} || "") . '), q(' . $node->{Name} . '));' .
   
  @@ -781,16 +781,18 @@
   				    $e->{XSP_Random_Sequence}++;
   			    }
   	    	}
  -		$code = '{ my $elem = $document->createElementNS('.makeSingleQuoted($node->{NamespaceURI}).','.makeSingleQuoted($node->{Name}).');' .
  -                '$document->setDocumentElement($elem); $parent = $elem; }' . "\n";
  +		$code = 'my $elem; { $elem = $document->createElementNS('.makeSingleQuoted($node->{NamespaceURI}).','.makeSingleQuoted($node->{Name}).');' .
  +                'my $parent = $elem; ' . "\n";
   	    }
           else {
  -            $code = '{ my $elem = $document->createElement('.makeSingleQuoted($node->{Name}).');' .
  -        	        '$document->setDocumentElement($elem); $parent = $elem; }' . "\n";
  +            $code = 'my $elem; { $elem = $document->createElement('.makeSingleQuoted($node->{Name}).');' .
  +        	        '#$document->setDocumentElement($elem);'."\n".
  +        	        ' my $parent = $elem; ' . "\n";
   	    }
       }
       else {
   #        $code = '{ my $elem = $document->createElement(q(' . $node->{Name} . '));' .
  +	  push(@{$e->{XSP_User_Root}}, 0);
           if ($node->{NamespaceURI}) {
   	    	if ($node->{Name} !~ m/:/) {
   	    		if (exists $e->{XSP_Random_Map}{$node->{NamespaceURI}}) {
  @@ -802,12 +804,12 @@
   	    			$e->{XSP_Random_Sequence}++;
   		    	}
   	    	}
  -        	$code = '{ my $elem = $document->createElementNS('.makeSingleQuoted($node->{NamespaceURI}).','.makeSingleQuoted($node->{Name}).');' .
  -                '$parent->appendChild($elem); $parent = $elem; }' . "\n";
  +        	$code = 'my $elem; { $elem = $document->createElementNS('.makeSingleQuoted($node->{NamespaceURI}).','.makeSingleQuoted($node->{Name}).');' .
  +                'my $parent = $elem; ' . "\n";
   	    } 
           else {
  -        	$code = '{ my $elem = $document->createElement('.makeSingleQuoted($node->{Name}).');' .
  -                '$parent->appendChild($elem); $parent = $elem; }' . "\n";
  +        	$code = ' my $elem; { $elem = $document->createElement('.makeSingleQuoted($node->{Name}).');' .
  +                ' my $parent = $elem; ' . "\n";
           }
       }
       
  @@ -845,8 +847,13 @@
       my ($e, $element) = @_;
       
       $e->{Current_NS} = pop @{ $e->{NS_Stack} };
  +
  +    if(pop(@{$e->{XSP_User_Root}}) == 0) {	
  +		return '} $parent->appendChild($elem); '. "\n";
  +    } else {
  +    		return '} $document->setDocumentElement($elem);'."\n";
  +    }
       
  -    return '$parent = $parent->getParentNode;' . "\n";
   }
   
   sub characters {