Need some problemsolving-cgi/xml

From: lievemario (lievemario_at_hotmail.com)
Date: 11/25/04


Date: Thu, 25 Nov 2004 07:22:36 +0100

Hello,

I have written the following perl program,
this is what is does:
- it gets input from a form (a person_id)
- then it executes a query
- transform this result to an xml file
- then transform the xml file via xsl file to output in the browser.

Now the following errors appear:
- first of all, I don't know why, but the script is not able to open / write
person.xml anymore
- second, when I have such an xml file, the script is not able to produce
the output,
   I get a CGI timeout error.
   (Just for info; I call the script via the following line in the form
application:
        <form action="person2.cgi?person_id=$person_id" method="POST">
   )
  I have search a long time, but I can not solve the problem.

- another question I also have;
   it is my intention to execute 1 or more queries (depending on the
@details the
   user selected in the form). How can I combine all these xml files/xsl to
one output?

Hope I get some solution.

Thanks a lot!!

----------------------------------------------------------------------------
-------
#!/usr/bin/perl

# use strict;
use DBI;
use XML::Generator::DBI;
use XML::Handler::YAWriter;
use XML::Parser;
use XML::XSLT;

use CGI qw(param);

my $xslfile = "CGI\\details.xsl";

# create a DBI connection
my $dbh = DBI->connect ("DBI:mysql:rd", "root", "",
  { RaiseError => 1,
    PrintError => 0
  });

# instantiate a new XML::Handler::YAWriter object
my $out = XML::Handler::YAWriter-> new(
 AsFile => "CGI\\person.xml",
 Pretty => {PrettyWhiteNewline => 1,
                PrettyWhiteIndent => 1,
  CatchEmptyElement => 1,
  CatchWhiteSpace => 1
  },
 Encoding => "ISO-8859-1",
 );

# instantiate a new XML::Generator::DBI object
my $gen = XML::Generator::DBI->new(
 Handler => $out,
 dbh => $dbh,
 RootElement => 'Description',
 RowElement => 'Person'
 );

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/'//g;
    $value =~ s/&/and/g;
    $value =~ s/\"//g;
    $value =~ s/\+//g;
    $FORM{$name} = $value;
}

my @details = ("data","team","pubs","other");
foreach $x (@details) {
    if ($FORM{$x} == 1) {
 if($x eq "data") {
  data_query();
 }
 #print "You picked $x.\n";
    }
}

my $xmlparser = new XML::Parser(ProtocolEncoding => "ISO-8859-1");
my $input = "CGI\\person.xml";
$xmlparser ->setHandlers(Start => \&start_handler,
                     End => \&end_handler,
                     Char => \&char_handler);
$xmlparser ->parsefile($input);

# The handlers for the XML Parser.
sub start_handler
{
    my $expat = shift; my $element = shift;
    # element is the name of the tag
    print $startsub{$element};
    # Handle the attributes
    while (@_) {
 my $att = shift;
 my $val = shift;
 print "$att=$val ";
    }
}

sub end_handler
{
    my $expat = shift; my $element = shift;
    print $endsub{$element};
}

sub char_handler
{
    my ($p, $data) = @_;
    #print $data;
}

my $xslparser = XML::XSLT->new($xslfile);
my $result = $xslparser->serve("CGI\\person.xml", http_headers => 0,
xml_version => 0, xml_declaration => 0);
$result = "Content-Type: text/html\n\n" . $result;
print $result;

my $person_id = param("person_id");
print $person_id;

sub data_query {
# define the SQL query
my $query1 = "SELECT p.person_id,
   p.name,
   p.first_name,
   p.phone,
   p.fax,
   p.email
  FROM list_personnel p
  WHERE p.person_id = ?;
  ";
#my $sth1 = $dbh->prepare($query1);
$gen->execute($query1,$person_id);
}

----------------------------------------------------------------------------
--------------------------------------



Relevant Pages

  • Need some problemsolving-cgi/xml
    ... - then it executes a query ... - then transform the xml file via xsl file to output in the browser. ... sub start_handler ...
    (comp.lang.perl.misc)
  • Re: XML to DataSets
    ... Using your XSLT as a start, ... the XSLT works, I can read the resulting XML file, and I ... After seeing that the results were good, I went back to my small transform ... I just add the typed dataset, and the rest is pretty easy. ...
    (microsoft.public.dotnet.languages.vb)
  • public shared object... and disappearing xml content in file
    ... It is created from an xml file stored on disk. ... Public Sub New ... Private Sub Button1_Click(ByVal sender As System.Object, ...
    (microsoft.public.dotnet.framework.windowsforms)
  • Parsing XML with ElementTree (unicode problem?)
    ... (this question was also posted in the devshed python forum: ... I'm trying to parse an XML file ... where query is a query to the AWS, and this specific query has the ... some of the content with 'bla bla' string in order to make it fit ...
    (comp.lang.python)
  • XSLT to transform a "flat" XML file into a structured text file
    ... I have an XML file that lists the PDF file segment names and titles of a larger document and looks something like this: ... I need to transform the SEGMENT_LIST elements into a structured text file for use by another application to construct the Table Of Content. ...
    (comp.text.xml)