Links: Next Previous Up Top

# How about a simple example?

OK. The following script simply reports its events:

    #!/usr/bin/perl

    use SGMLS;

    $this_parse = new SGMLS(STDIN); # Read from standard input.

    while ($this_event = $this_parse->next_event) {
        my $type = $this_event->type;
        my $data = $this_event->data;
      SWITCH: {
          $type eq 'start_element' && do {
              print "Beginning element: " . $data->name . "\n";
              last SWITCH;
          };
          $type eq 'end_element' && do {
              print "Ending element: " . $data->name . "\n";
              last SWITCH;
          };
          $type eq 'cdata' && do {
              print "Character data: " . $data . "\n";
              last SWITCH;
          };
          $type eq 'sdata' && do {
              print "Special data: " . $data . "\n";
              last SWITCH;
          };
          $type eq 're' && do {
              print "Record End\n";
              last SWITCH;
          };
          $type eq 'pi' && do {
              print "Processing Instruction: " . $data . "\n";
              last SWITCH;
          };
          $type eq 'entity' && do {
              print "External Data Entity: " . $data->name .
                  " with notation " . $data->notation->name . "\n";
              last SWITCH;
          };
          $type eq 'start_subdoc' && do {
              print "Beginning Subdocument Entity: " . $data->name . "\n";
              last SWITCH;
          };
          $type eq 'end_subdoc' && do {
              print "Ending Subdocument Entity: " . $data->name . "\n";
              last SWITCH;
          };
          $type eq 'conforming' && do {
              print "This is a conforming SGML document\n";
              last SWITCH;
          };
      }
    }

To use it under Unix, try something like

    sgmls document.sgml | perl sample.pl

and watch the output scroll down.

Links: Next Previous Up Top