Hi mirod, please find my code below. I am using the below code in process of "content" element and find "$fcnvar" Which is from "box" element not equal to blank then i need to search '//color@self="ua5"' and i should get the attribute "pnam" of that "color" element. how can i do that. can you please suggest. i am struggling here.
use strict;
use warnings;
use XML::Twig;
my $twig=XML::Twig->new(
twig_handlers=>{
content=> \&content_handler,
},
);
$twig->parse(\*DATA);
$twig->flush;
sub content_handler
{
my ($twig, $content)= @_;
if($content->{'att'}->{'type'} eq "text")
{
my $selfatt=$content->att_xml_string('Self');
my $expr='//box[@textflowid="'.$selfatt.'"][@type="text"]';
my @tagnames = $twig->get_xpath($expr);
for my $temp (@tagnames)
{
my $fcnvar=$temp->att_xml_string('frameColorID');
# print "#$fcnvar#";
# if (!($fcnvar eq "")){
# my $expr='//color[@self="ua5"]';
# print "$expr";
# my @colorvalarr = $twig->get_xpath($expr);
# print @colorvalarr;
# print $colorvalarr[0];
# $fcnvar=$colorvalarr[0]->att_xml_string('pnam');
# }
$content->set_tag('updated_tag');
$content->del_atts;
$content->set_atts
}
}
}
__DATA__
<document>
<root>
<box type="text" cont="text" textflowid="rc_u5035" frameColorID="ua
+5"/>
</root>
<content type="text" Self="rc_u5035" id="rc_u5035"/>
<header>h3</header>
<meta>
<color type="colr" clmd="prss" clsp="CMYK" clvl="4_D_0_D_15_D_50_D_0
+" ovrd="norm" atcs="nasp" atvl="0" pnam="Color 04-15M/50Y" edbl="t" r
+mbl="t" pvis="t" swID="1f01" Self="uce"/>
<color type="colr" clmd="prss" clsp="CMYK" clvl="4_D_0_D_10_D_40_D_0
+" ovrd="norm" atcs="nasp" atvl="0" pnam="Color 05-10M/40Y" edbl="t" r
+mbl="t" pvis="t" swID="1f01" Self="ua5"/>
</meta>
</document>
OUTPUT REQUIRED:
<document>
<root>
<box type="text" cont="text" textflowid="rc_u5035" frameColorID="ua
+5"/>
</root>
<updated_tag color="Color 05-10M/40Y"/>
<header>h3</header>
<meta>
<color type="colr" clmd="prss" clsp="CMYK" clvl="4_D_0_D_15_D_50_D_0
+" ovrd="norm" atcs="nasp" atvl="0" pnam="Color 04-15M/50Y" edbl="t" r
+mbl="t" pvis="t" swID="1f01" Self="uce"/>
<color type="colr" clmd="prss" clsp="CMYK" clvl="4_D_0_D_10_D_40_D_0
+" ovrd="norm" atcs="nasp" atvl="0" pnam="Color 05-10M/40Y" edbl="t" r
+mbl="t" pvis="t" swID="1f01" Self="ua5"/>
</meta>
</document>
|