Hello everyone,
I am writing a little program to generate configuration files out of
templates and xml data files,
this is a sample template
[% FOREACH g= GlobalConfiguration -%]
[% g.TC %] qdisc del dev [% g.DEV %] root
[% END %]
and this is a sample xml data file
<TC>
<GlobalConfiguration>
<TC>`tc1`</TC>
<DEV>eth1</DEV>
<Group>
<Name>MasterGroup</Name>
<ID>3</ID>
<Prio>1</Prio>
<Uplink>32</Uplink>
<Downlink>128</Downlink>
</Group>
<Group>
<Name>MinorGroup</Name>
<ID>2</ID>
<Prio>2</Prio>
<Uplink>16</Uplink>
<Downlink>64</Downlink>
</Group>
</GlobalConfiguration>
<GlobalConfiguration>
<TC>`tc2`</TC>
<DEV>eth2</DEV>
<Group>
<Name>MasterGroup</Name>
<ID>3</ID>
<Prio>1</Prio>
<Uplink>32</Uplink>
<Downlink>128</Downlink>
</Group>
<Group>
<Name>MinorGroup</Name>
<ID>2</ID>
<Prio>2</Prio>
<Uplink>16</Uplink>
<Downlink>64</Downlink>
</Group>
</GlobalConfiguration>
</TC>
the code, is
#!/usr/bin/perl -w
use warnings;
use strict;
use XML::Simple;
use Template;
my $file = 'faysal.xml';
my $xs = XML::Simple->new();
my $doc = $xs->XMLin($file);
my $i = 0;
#foreach my $key1 (keys(%$doc)){
# $i++;
# print "$key1\n$i\n";
#}
my $tt = Template->new;
$tt->process('faysal.tmplt', $doc) or die $tt->error;
Now, this works just fine with the following output:
`tc1` qdisc del dev eth1 root
`tc2` qdisc del dev eth2 root
however if i remove the second
<GlobalConfiguration>........</GlobalConfiguration> tags, the program
doesn't work correctly, it produces the following output:
qdisc del dev root
qdisc del dev root
qdisc del dev root
without any of the variables,
i tried adding this line to the template file to see the size of the loop
[% loop.size %] and it says, 3 while it should be one
can anyone please tell me what the problem is here, and shouldn't the
loop be processed only once, with the correct variable replacements
Best Rgds,
_______________________________________________
templates mailing list
[email protected]
http://lists.template-toolkit.org/mailman/listinfo/templates