common/tools/raptor/XML/SAX/PurePerl/DocType.pm
changeset 906 5239d4d0bed1
parent 905 9ed73a51c728
child 907 bab81256b297
--- a/common/tools/raptor/XML/SAX/PurePerl/DocType.pm	Fri Mar 05 16:16:43 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-# $Id: DocType.pm,v 1.3 2003/07/30 13:39:22 matt Exp $
-
-package XML::SAX::PurePerl;
-
-use strict;
-use XML::SAX::PurePerl::Productions qw($PubidChar);
-
-sub doctypedecl {
-    my ($self, $reader) = @_;
-    
-    my $data = $reader->data(9);
-    if ($data =~ /^<!DOCTYPE/) {
-        $reader->move_along(9);
-        $self->skip_whitespace($reader) ||
-            $self->parser_error("No whitespace after doctype declaration", $reader);
-        
-        my $root_name = $self->Name($reader) ||
-            $self->parser_error("Doctype declaration has no root element name", $reader);
-        
-        if ($self->skip_whitespace($reader)) {
-            # might be externalid...
-            my %dtd = $self->ExternalID($reader);
-            # TODO: Call SAX event
-        }
-        
-        $self->skip_whitespace($reader);
-        
-        $self->InternalSubset($reader);
-        
-        $reader->match('>') or $self->parser_error("Doctype not closed", $reader);
-        
-        return 1;
-    }
-    
-    return 0;
-}
-
-sub ExternalID {
-    my ($self, $reader) = @_;
-    
-    my $data = $reader->data(6);
-    
-    if ($data =~ /^SYSTEM/) {
-        $reader->move_along(6);
-        $self->skip_whitespace($reader) ||
-            $self->parser_error("No whitespace after SYSTEM identifier", $reader);
-        return (SYSTEM => $self->SystemLiteral($reader));
-    }
-    elsif ($data =~ /^PUBLIC/) {
-        $reader->move_along(6);
-        $self->skip_whitespace($reader) ||
-            $self->parser_error("No whitespace after PUBLIC identifier", $reader);
-        
-        my $quote = $self->quote($reader) || 
-            $self->parser_error("Not a quote character in PUBLIC identifier", $reader);
-        
-        my $data = $reader->data;
-        my $pubid = '';
-        while(1) {
-            $self->parser_error("EOF while looking for end of PUBLIC identifiier", $reader)
-                unless length($data);
-            
-            if ($data =~ /^([^$quote]*)$quote/) {
-                $pubid .= $1;
-                $reader->move_along(length($1) + 1);
-                last;
-            }
-            else {
-                $pubid .= $data;
-                $reader->move_along(length($data));
-                $data = $reader->data;
-            }
-        }
-        
-        if ($pubid !~ /^($PubidChar)+$/) {
-            $self->parser_error("Invalid characters in PUBLIC identifier", $reader);
-        }
-        
-        $self->skip_whitespace($reader) ||
-            $self->parser_error("Not whitespace after PUBLIC ID in DOCTYPE", $reader);
-        
-        return (PUBLIC => $pubid, 
-                SYSTEM => $self->SystemLiteral($reader));
-    }
-    else {
-        return;
-    }
-    
-    return 1;
-}
-
-sub SystemLiteral {
-    my ($self, $reader) = @_;
-    
-    my $quote = $self->quote($reader);
-    
-    my $data = $reader->data;
-    my $systemid = '';
-    while (1) {
-        $self->parser_error("EOF found while looking for end of Sytem Literal", $reader)
-            unless length($data);
-        if ($data =~ /^([^$quote]*)$quote/) {
-            $systemid .= $1;
-            $reader->move_along(length($1) + 1);
-            return $systemid;
-        }
-        else {
-            $systemid .= $data;
-            $reader->move_along(length($data));
-            $data = $reader->data;
-        }
-    }
-}
-
-sub InternalSubset {
-    my ($self, $reader) = @_;
-    
-    return 0 unless $reader->match('[');
-    
-    1 while $self->IntSubsetDecl($reader);
-    
-    $reader->match(']') or $self->parser_error("No close bracket on internal subset (found: " . $reader->data, $reader);
-    $self->skip_whitespace($reader);
-    return 1;
-}
-
-sub IntSubsetDecl {
-    my ($self, $reader) = @_;
-
-    return $self->DeclSep($reader) || $self->markupdecl($reader);
-}
-
-sub DeclSep {
-    my ($self, $reader) = @_;
-
-    if ($self->skip_whitespace($reader)) {
-        return 1;
-    }
-
-    if ($self->PEReference($reader)) {
-        return 1;
-    }
-    
-#    if ($self->ParsedExtSubset($reader)) {
-#        return 1;
-#    }
-    
-    return 0;
-}
-
-sub PEReference {
-    my ($self, $reader) = @_;
-    
-    return 0 unless $reader->match('%');
-    
-    my $peref = $self->Name($reader) ||
-        $self->parser_error("PEReference did not find a Name", $reader);
-    # TODO - load/parse the peref
-    
-    $reader->match(';') or $self->parser_error("Invalid token in PEReference", $reader);
-    return 1;
-}
-
-sub markupdecl {
-    my ($self, $reader) = @_;
-    
-    if ($self->elementdecl($reader) ||
-        $self->AttlistDecl($reader) ||
-        $self->EntityDecl($reader) ||
-        $self->NotationDecl($reader) ||
-        $self->PI($reader) ||
-        $self->Comment($reader))
-    {
-        return 1;
-    }
-    
-    return 0;
-}
-
-1;