use strict;
use warnings;
use XML::Twig;
my $xml = <<'XML';
XML
my $twig =
XML::Twig->new(
start_tag_handlers => {
'UML:Class' => \¨_class_start,
'UML:Package' => \¨_package_start,
},
twig_handlers => {
# purge at the end of each class section
'UML:Class' => sub { $_[0]->purge },
'UML:Attribute' => \¨_attribute,
'UML:Generalization' => \¨_generalization,
'UML:TaggedValue' => \¨_taggedvalue,
},
);
$twig->parse ($xml);
sub uml_class_start {
my ($twig, $elt) = @_;
my $xmi_id = $elt->att( 'xmi.id' );
my $name = $elt->att( 'name' );
}
sub uml_package_start {
}
sub uml_taggedvalue {
my ($twig, $elt) = @_;
if ($elt->parent (qr/UML:Attribute/)){
uml_taggedvalue_attr (@_);
} elsif ($elt->parent (qr/^UML:Class$/)) {
print "Ignoring class taggedvalue\n";
} else {
uml_taggedvalue_def (@_);
}
}
sub uml_generalization {
}
sub uml_attribute {
}
sub uml_taggedvalue_attr {
print "uml_taggedvalue_attr\n";
}
sub uml_taggedvalue_def {
print "uml_taggedvalue_def\n";
}
####
Ignoring class taggedvalue
Ignoring class taggedvalue
uml_taggedvalue_attr
uml_taggedvalue_attr
uml_taggedvalue_def
uml_taggedvalue_def