Thread XSLT: Variable nur einmal laden (4 answers)
Opened by Norma at 2008-10-31 10:42

Norma
 2008-10-31 10:42
#115871 #115871
User since
2008-10-08
4 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich möchte mehrere XML-Dateien mit XSLT bearbeiten. Dabei wird eine Variable verwendet, in der Daten aus einer externen XML-Datei gespeichert werden. Beim Bearbeiten jeder XML-Datei wird diese Variable neu geladen. Das wirkt sich auf die Dauer der Bearbeitung aus. Gibt es eine Lösung, vielleicht mit dem Perl-Modul XML::LibXSLT, wie ich diese Variable nur einmal für alle Dateien laden kann? Hier ein Code-Beispiel für das XSLT:

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

<xsl:variable name="var" select="document('xxx.xml')/xxxx/xxxx"/>

<xsl:template match="tag1">
<tag1>
<xsl:attribute name="attr1">
<xsl:value-of select="$var" />
</xsl:attribute>
</tag1>
</xsl:template>

</xsl:stylesheet>


Und hier für das Perl-Programm:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use XML::LibXSLT;
use XML::LibXML;

my ($style_file, @source_files) = @ARGV;

my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $stylesheet = $xslt->parse_stylesheet_file($style_file);

foreach my $source_file (@source_files) {
    my $source_doc = $parser->parse_file($source_file);
    my $result = $stylesheet->transform($source_doc);
    print $stylesheet->output_string($result);
}


Ich wäre Euch für einen Tipp sehr dankbar!

LG
Norma

View full thread XSLT: Variable nur einmal laden