[vienna.pm] Perl Problem

Philipp Gühring p.guehring at poboxes.com
Sun Apr 29 13:10:01 CDT 2001


* * * vienna-pm-list * * *


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo!

Ich hab ein Problem in Perl, daß ich eigentlich schon gestern gelöst haben 
müßte.
Ich brauche einen XSLT Prozessor, der von Perl aus verwendbar ist, (ohne die 
Daten vorher in einer temporären Datei zu speichern), Parameter richtig 
verarbeiten kann (das ist das zentrale Problem), und nach Möglichkeit noch 
gute Performance bietet.


Um das Problem zu erläutern folgendes Beispiel:


#!/usr/bin/perl -w
use strict;
 
use XML::XSLT qw(serve);
 
my $result;
 
 
my $id="120312930192301293";
 
if (1)
{
  my $xslt = XML::XSLT->new("ergebnis.xsl", use_deprecated=>1);
  $xslt->open_xml (Source=>"ergebnis.xml",sesid=>$id);
  $xslt->process ($xslt,{Source=>"ergebnis.xml",sesid=>$id});

#die sesid wird zwar übergeben, funktioniert aber offensichtlich nicht

  $result=$xslt->toString;
  $xslt->dispose ();
}
 

# $result=~ s/SESSION_ID/$id/g;
# Workaround: Speziell formatierte Texte einfügen, die nachträglich ersetzt 
werden.

 
print $result;
open OUT,">ergebnis.html";
print OUT $result;
close OUT;


Und hier noch das Mini-XSLT, an dem das Problem demonstriert wird:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0">
<xsl:param name="sesid"/>
<xsl:template match="ergebnis">
**<xsl:value-of select="$sesid"/>**SESSION_ID**
</xsl:template>
</xsl:stylesheet>




Und um zu zeigen, was ich schon alles ausprobiert habe:

if (1)
{
  my $xslt = XML::XSLT->new("pergebnis.xsl");
  $xslt->open_xml (Source=>$xmlergebnis->content);
  $xslt->process ($xslt,{sesid=>$id});
  $result=$xslt->toString;
  $xslt->dispose ();
}
 
if (0)
{
  my $parser = XML::LibXML->new();
  my $xslt = XML::LibXSLT->new();
  my $source = $parser->parse_string($xmlergebnis->content);
  my $style_doc = $parser->parse_file('ergebnis.xsl');
  my $stylesheet = $xslt->parse_stylesheet($style_doc);
  $result = 
$stylesheet->output_string($stylesheet->transform($source,{sesid=>$id}));
}
 
if (0)
{
  my $p = new XML::Xalan;
  $p->parse_stylesheet("ergebnis.xsl");
  $result = $p->transform_doc_to_data($xmlergebnis->content);
}



Wenn sich jemand im Stande fühlt, dieses Problem zu lösen, bitte melden.

Grüße,
- -- 
~ Philipp Gühring              p.guehring at futureware.at
~ http://www.futureware.at/       ICQ UIN: 6588261
~ "Hat du Abkürzungen, mut du Futureware Translator nehmen!"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE66gFNlqQ+F+0wB3oRAlPpAJ9tDVTvZMa7sxUqs19PJfnIw33hvgCeIaE9
y0AN8xjUpzm9xhWL9qkZ6uE=
=/jay
-----END PGP SIGNATURE-----
###
You are subscribed to vienna-pm-list as Philipp =?iso-8859-1?q?G=FChring?= <p.guehring at poboxes.com>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list