| line |
true |
false |
branch |
|
83
|
84 |
0 |
if $$this{'tree'}{$tag} |
|
94
|
3 |
66 |
unless $$this{'tree'}{$tag} and $$this{'tree'}{$tag}{'children'} |
|
95
|
39 |
27 |
if $$this{'tree'}{$tag}{'children'}{$child} |
|
105
|
3 |
0 |
$this->get_elem_opt(@_) =~ /^[\!]?$/ ? : |
|
114
|
0 |
0 |
$this->get_elem_child_opt(@_) =~ /^[\!]?$/ ? : |
|
123
|
3 |
0 |
$this->get_elem_opt(@_) =~ /^[\+\*]$/ ? : |
|
132
|
6 |
3 |
$this->get_elem_child_opt(@_) =~ /^[\+\*]$/ ? : |
|
141
|
3 |
3 |
$this->get_elem_opt(@_) =~ /^[\!\+]?$/ ? : |
|
150
|
33 |
21 |
$this->get_elem_child_opt(@_) =~ /^[\!\+]?$/ ? : |
|
159
|
3 |
0 |
$this->get_elem_opt(@_) =~ /^[\?\*]$/ ? : |
|
168
|
0 |
0 |
$this->get_elem_child_opt(@_) =~ /^[\?\*]$/ ? : |
|
178
|
0 |
15 |
unless $$this{'tree'}{$tag} |
|
189
|
0 |
63 |
unless $$this{'tree'}{$tag} and $$this{'tree'}{$tag}{'children'} |
|
200
|
0 |
0 |
unless $$this{'tree'}{$tag} |
|
202
|
0 |
0 |
if $$this{'tree'}{$tag}{'any'} |
|
213
|
0 |
45 |
unless $$this{'tree'}{$tag} |
|
214
|
30 |
15 |
if $$this{'tree'}{$tag}{'content'} |
|
224
|
0 |
48 |
unless $$this{'tree'}{$tag} |
|
226
|
6 |
42 |
if $$this{'tree'}{$tag}{'empty'} |
|
237
|
0 |
0 |
unless $$this{'tree'}{$tag} |
|
239
|
0 |
0 |
ref $$this{'tree'}{$tag}{'parent'} eq 'ARRAY' ? : |
|
243
|
0 |
0 |
if $chk_parent_i eq '' |
|
244
|
0 |
0 |
unless $parents{$chk_parent_i} |
|
257
|
0 |
42 |
unless $$this{'tree'}{$tag} |
|
260
|
3 |
45 |
unless $$this{'tree'}{$tag}{'attributes'}{$attrs_i} |
|
277
|
3 |
36 |
unless $$this{'tree'}{$tag} and $attr_check |
|
281
|
30 |
6 |
if $opt and $opt =~ /#REQUIRED/i |
|
292
|
0 |
0 |
unless $$this{'tree'}{$tag} and $$this{'tree'}{$tag}{'attributes'}{$attr} |
|
296
|
0 |
0 |
if $opt =~ /#FIXED/i |
|
307
|
0 |
0 |
unless $$this{'tree'}{$tag} and $$this{'tree'}{$tag}{'attributes'}{$attr} |
|
321
|
0 |
6 |
unless $$this{'tree'}{$tag} and $$this{'tree'}{$tag}{'attributes'}{$attr} |
|
333
|
0 |
0 |
unless $$this{'tree'}{$tag} and $$this{'tree'}{$tag}{'attributes'}{$attr} |
|
336
|
0 |
0 |
if ref $vals eq 'ARRAY' |
|
347
|
0 |
30 |
unless $$this{'tree'}{$tag} |
|
348
|
30 |
0 |
if $$this{'tree'}{$tag}{'childrenARR'} and @{$$this{'tree'}{$tag}{'childrenARR'};} |
|
364
|
33 |
21 |
if $this->is_elem_child_req($tag, $child_i) |
|
377
|
6 |
30 |
unless $$this{'tree'}{$tag} and $$this{'tree'}{$tag}{'attr_order'} |
|
395
|
30 |
9 |
if $this->is_attr_req($tag, $attrs_i) |
|
408
|
6 |
0 |
if (@_) |
|
410
|
6 |
0 |
if $$this{'ERRORS'} and @{$$this{'ERRORS'};} |
|
441
|
0 |
0 |
unless $percent |
|
452
|
0 |
0 |
unless $percent |
|
458
|
0 |
0 |
exists $definitions{$1} ? : |
|
459
|
0 |
9 |
if $xml =~ /([&%]$name);/ |
|
471
|
27 |
18 |
if ($children eq '(#PCDATA)') { } |
|
|
0 |
18 |
elsif ($children =~ s/^\((#PCDATA(?:\|$name)+)\)$/$1/o and $option eq '*') { } |
|
478
|
0 |
45 |
unless $children =~ /^#?$nameX(?:,$nameX)*$/ |
|
483
|
36 |
39 |
unless $child =~ s/([\?\*\+])$// and $option = $1 |
|
488
|
48 |
27 |
unless $child eq '#PCDATA' |
|
491
|
27 |
18 |
unless @{$elements{$element}{'childrenARR'};} |
|
496
|
0 |
6 |
if (uc $param eq 'ANY') { } |
|
|
6 |
0 |
elsif (uc $param eq 'EMPTY') { } |
|
503
|
0 |
15 |
unless exists $elements{$element} |
|
508
|
9 |
24 |
if ($default and $default =~ /^"(.*?)"$/) { } |
|
|
0 |
48 |
elsif ($default and $default =~ /^'(.*?)'$/) { } |
|
515
|
9 |
24 |
if ($type =~ /^(?:NOTATION\s*)?\(\s*(.*?)\)$/) |
|
523
|
9 |
0 |
if ($xml =~ /^\s*<\!DOCTYPE\s+($name)\s*\[\s*(.*)$/) |
|
530
|
0 |
9 |
if $xml =~ /\S/ |
|
534
|
27 |
48 |
if ($child eq '#PCDATA') { } |
|
539
|
6 |
42 |
unless exists $elements{$child} |
|
541
|
3 |
45 |
if (exists $elements{$child}{'parent'}) { } |
|
548
|
33 |
18 |
unless (%{$elements{$element}{'children'};}) |
|
560
|
4 |
0 |
unless (@_) |
|
583
|
0 |
0 |
exists $definitions{$1} ? : |
|
584
|
0 |
4 |
if $xml =~ /([&%]$name);/ |
|
602
|
4 |
0 |
if ($xml =~ /^\s*<\!DOCTYPE\s+($name)\s*\[\s*/) |
|
616
|
3 |
15 |
if ($children =~ /\|/) |
|
621
|
0 |
18 |
if ($option) |
|
638
|
0 |
18 |
if ($option) |
|
671
|
3 |
102 |
if (defined $1) { } |
|
|
30 |
72 |
elsif (defined $2) { } |
|
673
|
3 |
0 |
if ($q =~ /^"(.*?)"$/) { } |
|
|
0 |
0 |
elsif ($q =~ /^'(.*?)'$/) { } |
|
700
|
0 |
13 |
if (ref $_[0] eq 'GLOB') { } |
|
|
0 |
13 |
elsif ($_[0] =~ m[^http://\w+[^\r\n]+$]s) { } |
|
|
13 |
0 |
elsif ($_[0] =~ /<.*?>/s) { } |
|
705
|
0 |
13 |
if ($fh) |
|
707
|
0 |
0 |
if $open |
|
724
|
6 |
0 |
if (ref $dtd ne 'XML::Smart::DTD') |
|
728
|
0 |
6 |
unless $dtd and $dtd->tree and %{$dtd->tree;} |
|
740
|
57 |
9 |
if (ref $tree) |
|
741
|
0 |
57 |
if ($$parsed{"$tree"}) |
|
748
|
51 |
15 |
if (ref $tree eq 'HASH') { } |
|
|
6 |
9 |
elsif (ref $tree eq 'ARRAY') { } |
|
750
|
45 |
6 |
if ($tag ne '' and $dtd->elem_exists($tag)) |
|
751
|
3 |
42 |
if ($dtd->is_elem_empty($tag)) { } |
|
|
27 |
15 |
elsif ($dtd->is_elem_pcdata($tag)) { } |
|
755
|
12 |
15 |
unless defined $$prev_tree{$tag}{'CONTENT'} |
|
|
27 |
0 |
if (ref $$prev_tree{$tag} eq 'HASH') { } |
|
756
|
0 |
0 |
unless defined $$prev_tree{$tag} |
|
761
|
9 |
24 |
unless (exists $$tree{$childs_req_i}) |
|
768
|
3 |
21 |
unless (exists $$tree{$attrs_req_i}) |
|
776
|
10 |
5 |
if (not $$tree{'/order'}) { } |
|
792
|
20 |
0 |
if $order{$order_i} |
|
807
|
47 |
75 |
if ($Key eq '' or $Key eq '/order' or $Key eq '/nodes' or $Key eq 'CONTENT') |
|
809
|
45 |
30 |
if ($tag eq '' and $dtd->elem_exists($Key) or $tag ne '' and $dtd->child_exists($tag, $Key)) { } |
|
|
30 |
0 |
elsif ($tag ne '' and $dtd->attr_exists($tag, $Key)) { } |
|
810
|
0 |
45 |
if ($$tree{'/nodes'}{$Key} and $$tree{'/nodes'}{$Key} =~ /^(\w+,\d+),(\d*)/) { } |
|
813
|
18 |
27 |
if (not ref $$tree{$Key}) { } |
|
|
9 |
18 |
elsif (ref $$tree{$Key} eq 'ARRAY') { } |
|
814
|
15 |
3 |
$$tree{$Key} ? : |
|
815
|
18 |
0 |
unless ref $$tree{$Key} |
|
816
|
15 |
3 |
if $content ne '' |
|
819
|
3 |
6 |
if ($tag ne '' and not $dtd->is_elem_child_multi($tag, $Key)) |
|
827
|
0 |
3 |
if (ref $$tree{$Key} eq 'HASH' and exists $$tree{$Key}{'CONTENT'} and keys %{$$tree{$Key};} == 1) |
|
832
|
3 |
27 |
if (ref $$tree{$Key}) |
|
833
|
0 |
3 |
if (ref $$tree{$Key} eq 'ARRAY') |
|
834
|
3 |
0 |
if (ref $$tree{$Key} eq 'HASH') |
|
837
|
3 |
27 |
if ($tag ne '' and $$tree{$Key} eq '') |
|
842
|
0 |
0 |
if ($prev_exists and not $opts{'no_delete'}) { } |
|
858
|
9 |
0 |
if ($tag ne '' and $dtd->elem_exists($tag)) { } |
|
|
0 |
0 |
elsif ($tag ne '' and $dtd->attr_exists($prev_tag, $tag)) { } |
|
859
|
0 |
9 |
if ($$prev_tree{'/nodes'}{$tag} =~ /^(\w+,\d+),(\d*)/) { } |
|
862
|
3 |
6 |
if (not ref $$prev_tree{$tag} or ref $$prev_tree{$tag} eq 'HASH' and not exists $$prev_tree{$tag}{'CONTENT'}) |
|
864
|
3 |
0 |
unless ref $$prev_tree{$tag} |
|
865
|
3 |
0 |
if $content ne '' |
|
870
|
0 |
0 |
if (ref $$prev_tree{$tag} eq 'HASH' and exists $$prev_tree{$tag}{'CONTENT'} and keys %{$$prev_tree{$tag};} == 1) |
|
877
|
57 |
9 |
if ref $tree |