Thread XML transfomieren mittels XSLT (26 answers)
Opened by dater at 2010-02-23 15:53

GwenDragon
 2010-02-25 17:13
#133689 #133689
User since
2005-01-17
14784 Artikel
Admin1
[Homepage]
user image
Verwende doch CPAN:XML-LibXSLT. Bei mir ist es die Version 1.63.
Die parst ohne Fehlermeldung.

Da klappt es mit folgendem Skripten und Daten:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;

use XML::LibXSLT;
use XML::LibXML;
  
my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
  
my $source = $parser->parse_file('1.xml');
my $style_doc = $parser->parse_file('1.xsl');
  
my $stylesheet = $xslt->parse_stylesheet($style_doc);
  
my $results = $stylesheet->transform($source);
  
print $stylesheet->output_string($results);


Datendatei 1.xml:
Code: (dl )
1
2
3
4
5
6
7
8
<SCHADSTOFFBELASTUNG>
<BELASTUNGSGEBIET>INNSBRUCK/Zentrum</BELASTUNGSGEBIET>
<BELASTUNGSGEBIET>INNSBRUCK/Reichenau</BELASTUNGSGEBIET>
<BELASTUNGSGEBIET>KRAMSACH/Angerberg</BELASTUNGSGEBIET>
<BELASTUNGSGEBIET>WOERGL/Stelzh.Str.</BELASTUNGSGEBIET>
<BELASTUNGSGEBIET>KUFSTEIN/Zentrum</BELASTUNGSGEBIET>
<BELASTUNGSGEBIET>LIENZ/Amlacherkreuzung</BELASTUNGSGEBIET>
</SCHADSTOFFBELASTUNG>


XSL-Stylesheet 1.xsl:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="SCHADSTOFFBELASTUNG">
<BLOCKQUOTE>

<TT><B>Belastungsgebiet(e):</B></TT>
<xsl:apply-templates/>

</BLOCKQUOTE>
</xsl:template>

<xsl:template match="BELASTUNGSGEBIET">
<TT><xsl:value-of select="."/></TT><BR/>
</xsl:template>
</xsl:stylesheet>


Mit der seltsamen XML-XSLT mag ich jedenfalls nicht mehr weiter testen.
Wer mag, kann ja da einen Bug hinsenden.
Last edited: 2010-02-25 17:17:22 +0100 (CET)

View full thread XML transfomieren mittels XSLT