#!/usr/bin/perl -w use lib "/home/wxwindows/perllibs/local/share/perl/5.6.1/"; use lib "/home/wxwindows/perllibs/local/lib/perl/5.6.1/"; my $rawquery = $ENV{"QUERY_STRING"}; my $class; my $base = "http://www.wxwindows.org/manuals/2.4.0/"; print "Content-type: text/html\n\n"; if ($rawquery =~ /name=([a-zA-Z-_]+)/) { $class = $1; } else { print "No valid query.\n"; die; } require "./wxkeywords.pl"; my %officialurl=wxclasslist(); use XML::LibXML::XPathContext; use XML::LibXML; use XML::XPath::XMLParser; use XML::LibXSLT; my $parser = XML::LibXML->new(); my $classes = $parser->parse_file("classes.xml"); my $style_doc = $parser->parse_file('class.xsl'); my $xslt = XML::LibXSLT->new(); my $stylesheet = $xslt->parse_stylesheet($style_doc); my $xc = XML::LibXML::XPathContext->new($classes); my $nodelist = $xc->find("/classes/class[\@name=\"$class\"]"); foreach my $node ($nodelist->get_nodelist) { if (defined $officialurl{lc($class)}) { my $child; my $elem = XML::LibXML::Element->new("officiallink"); $elem->setAttribute ("href", "$base/$officialurl{lc($class)}"); $node->appendChild($elem); } my $resultdoc = XML::LibXML::Document->createDocument(); $resultdoc->setDocumentElement($node); my $results = $stylesheet->transform($resultdoc); print $stylesheet->output_string($results); }