|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
19
 | 
 60  | 
 3  | 
 $parent ? :  | 
 
| 
29
 | 
 49  | 
 11  | 
 defined $node ? :  | 
 
| 
 | 
 34  | 
 26  | 
 defined $position ? :  | 
 
| 
 | 
 32  | 
 28  | 
 defined $nodelist ? :  | 
 
| 
39
 | 
 0  | 
 0  | 
 if (defined $self->{'variables'}{'name'}) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($self->{'parent'}) { }  | 
 
| 
99
 | 
 0  | 
 0  | 
 $_[0]{'value'} ? :  | 
 
| 
141
 | 
 0  | 
 1  | 
 if (@{$_[0]{'value'};} == 0) { }  | 
 
| 
191
 | 
 4  | 
 9  | 
 if ($self->{'absolute'}) { }  | 
 
| 
210
 | 
 10  | 
 7  | 
 if ($step == @$steps - 1) { }  | 
 
| 
255
 | 
 0  | 
 20  | 
 if ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'ANCESTOR_OR_SELF'}) { }  | 
 
| 
 | 
 0  | 
 20  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'ANCESTOR'}) { }  | 
 
| 
 | 
 2  | 
 18  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'ATTRIBUTE'}) { }  | 
 
| 
 | 
 14  | 
 4  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'CHILD'}) { }  | 
 
| 
 | 
 1  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'DESCENDANT_OR_SELF'}) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'DESCENDANT'}) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'FOLLOWING'}) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'FOLLOWING_SIBLING'}) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'NAMESPACE'}) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'PARENT'}) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'PRECEDING'}) { }  | 
 
| 
 | 
 0  | 
 3  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'PRECEDING_SIBLING'}) { }  | 
 
| 
 | 
 3  | 
 0  | 
 elsif ($self->{'axis'} eq $XML::DOM::Lite::XPath::StepExpr::xpathAxis->{'SELF'}) { }  | 
 
| 
296
 | 
 0  | 
 0  | 
 if ($input->parentNode)  | 
 
| 
324
 | 
 17  | 
 5  | 
 if ($self->{'nodetest'}->evaluate($ctx->clone($n, $i, $nodelist0))->booleanValue)  | 
 
| 
334
 | 
 2  | 
 0  | 
 if ($self->{'predicate'}[$i]->evaluate($ctx->clone($n, $ii, $nodelist0))->booleanValue)  | 
 
| 
433
 | 
 0  | 
 2  | 
 if ($v->{'type'} eq 'number') { }  | 
 
| 
456
 | 
 0  | 
 0  | 
 if ($f) { }  | 
 
| 
468
 | 
 0  | 
 0  | 
 unless $b  | 
 
| 
498
 | 
 0  | 
 0  | 
 if ($e->{'type'} eq 'node-set') { }  | 
 
| 
510
 | 
 0  | 
 0  | 
 if ($n)  | 
 
| 
529
 | 
 0  | 
 0  | 
 if (@{$self->{'args'};} == 0) { }  | 
 
| 
535
 | 
 0  | 
 0  | 
 if (@$n == 0) { }  | 
 
| 
545
 | 
 0  | 
 0  | 
 if (@{$self->{'args'};} == 0) { }  | 
 
| 
584
 | 
 0  | 
 0  | 
 if ($i == -1) { }  | 
 
| 
599
 | 
 0  | 
 0  | 
 if ($i == -1) { }  | 
 
| 
613
 | 
 0  | 
 0  | 
 if (@{$self->{'args'};} == 2) { }  | 
 
| 
614
 | 
 0  | 
 0  | 
 0 <=> round($s1 - 1) ? :  | 
 
| 
620
 | 
 0  | 
 0  | 
 0 <=> $i0 ? :  | 
 
| 
621
 | 
 0  | 
 0  | 
 round('%d', $s2) - (0 <=> -$i0) ? :  | 
 
| 
630
 | 
 0  | 
 0  | 
 if (@{$self->{'args'};} > 0) { }  | 
 
| 
641
 | 
 0  | 
 0  | 
 if (@{$self->{'args'};} > 0) { }  | 
 
| 
700
 | 
 0  | 
 0  | 
 if ($xmllang)  | 
 
| 
705
 | 
 0  | 
 0  | 
 if (not $xmllang) { }  | 
 
| 
717
 | 
 0  | 
 0  | 
 if (@{$self->{'args'};} == 1) { }  | 
 
| 
763
 | 
 0  | 
 0  | 
 if ($ret)  | 
 
| 
774
 | 
 0  | 
 0  | 
 if ($self->{'args'}[0]->evaluate($ctx)->booleanValue) { }  | 
 
| 
817
 | 
 0  | 
 0  | 
 if ($nodes1->[$i1] == $nodes2->[$i2])  | 
 
| 
857
 | 
 0  | 
 0  | 
 if ($self->{'predicate'}[$i]->evaluate($ctx->clone($n, $j, $nodes0))->booleanValue)  | 
 
| 
887
 | 
 0  | 
 2  | 
 if ($o eq 'or') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($o eq 'and') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($o eq '+') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($o eq '-') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($o eq '*') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($o eq 'mod') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($o eq 'div') { }  | 
 
| 
 | 
 2  | 
 0  | 
 elsif ($o eq '=') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($o eq '!=') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($o eq '<') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($o eq '<=') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($o eq '>') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($o eq '>=') { }  | 
 
| 
932
 | 
 0  | 
 2  | 
 if ($v1->{'type'} eq 'node-set' and $v2->{'type'} eq 'node-set') { }  | 
 
| 
 | 
 2  | 
 0  | 
 elsif ($v1->{'type'} eq 'node-set' or $v2->{'type'} eq 'node-set') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($v1->{'type'} eq 'boolean' or $v2->{'type'} eq 'boolean') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($v1->{'type'} eq 'number' or $v2->{'type'} eq 'number') { }  | 
 
| 
938
 | 
 0  | 
 0  | 
 if (XML::DOM::Lite::XPath::xmlValue($n1->[$i1]) cmp XML::DOM::Lite::XPath::xmlValue($n2->[$i2]))  | 
 
| 
948
 | 
 0  | 
 2  | 
 if ($v1->{'type'} eq 'number') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($v2->{'type'} eq 'number') { }  | 
 
| 
 | 
 0  | 
 2  | 
 elsif ($v1->{'type'} eq 'string') { }  | 
 
| 
 | 
 2  | 
 0  | 
 elsif ($v2->{'type'} eq 'string') { }  | 
 
| 
955
 | 
 0  | 
 0  | 
 if ($s cmp $nn)  | 
 
| 
968
 | 
 0  | 
 0  | 
 if ($nn cmp $s)  | 
 
| 
981
 | 
 0  | 
 0  | 
 if ($s cmp $nn)  | 
 
| 
994
 | 
 2  | 
 0  | 
 if ($nn cmp $s)  | 
 
| 
1383
 | 
 2  | 
 0  | 
 if ($ctx->nodeType)  | 
 
| 
1392
 | 
 0  | 
 9  | 
 if $DEBUG  | 
 
| 
1396
 | 
 4  | 
 5  | 
 if ($cached)  | 
 
| 
1397
 | 
 0  | 
 4  | 
 if $DEBUG  | 
 
| 
1400
 | 
 0  | 
 5  | 
 if ($expr =~ /^(\$|@)?\w+$/i)  | 
 
| 
1403
 | 
 0  | 
 0  | 
 if $DEBUG  | 
 
| 
1407
 | 
 1  | 
 4  | 
 if ($expr =~ m[^\w+(/\w+)*$]i)  | 
 
| 
1410
 | 
 0  | 
 1  | 
 if $DEBUG  | 
 
| 
1436
 | 
 18  | 
 421  | 
 if (@result and length $result[0] > length $match)  | 
 
| 
1443
 | 
 0  | 
 0  | 
 if ($rule and $rule == $TOK_DIV || $rule == $TOK_MOD || $rule == $TOK_AND || $rule == $TOK_OR and !$previous || $previous->{'tag'} == $TOK_AT || $previous->{'tag'} == $TOK_DSLASH || $previous->{'tag'} == $TOK_SLASH || $previous->{'tag'} == $TOK_AXIS || $previous->{'tag'} == $TOK_DOLLAR)  | 
 
| 
1457
 | 
 18  | 
 4  | 
 if ($rule) { }  | 
 
| 
1459
 | 
 0  | 
 18  | 
 if $DEBUG  | 
 
| 
1463
 | 
 12  | 
 6  | 
 $rule->{'prec'} ? :  | 
 
| 
1468
 | 
 0  | 
 4  | 
 if $DEBUG  | 
 
| 
1474
 | 
 0  | 
 59  | 
 if $DEBUG  | 
 
| 
1478
 | 
 0  | 
 4  | 
 if $DEBUG  | 
 
| 
1480
 | 
 0  | 
 4  | 
 if (@$stack != 1)  | 
 
| 
1487
 | 
 0  | 
 4  | 
 if $DEBUG  | 
 
| 
1501
 | 
 77  | 
 4  | 
 if (@$stack)  | 
 
| 
1504
 | 
 71  | 
 6  | 
 if ($ruleset)  | 
 
| 
1507
 | 
 63  | 
 175  | 
 if (@$match)  | 
 
| 
1521
 | 
 59  | 
 22  | 
 if ($cand and !$ahead || $cand->{'prec'} > $ahead->{'prec'} || $ahead->{'tag'}{'left'} && $cand->{'prec'} >= $ahead->{'prec'}) { }  | 
 
| 
1531
 | 
 0  | 
 0  | 
 $ahead->{'tag'}{'left'} ? :  | 
 
| 
 | 
 0  | 
 0  | 
 $ahead ? :  | 
 
| 
 | 
 0  | 
 59  | 
 if $DEBUG  | 
 
| 
1541
 | 
 18  | 
 4  | 
 if ($ahead)  | 
 
| 
1545
 | 
 0  | 
 0  | 
 $ahead->{'tag'}{'left'} ? :  | 
 
| 
 | 
 0  | 
 0  | 
 $cand ? :  | 
 
| 
 | 
 0  | 
 18  | 
 if $DEBUG  | 
 
| 
1565
 | 
 4  | 
 355  | 
 if ($pattern->[$p] == $Q_MM) { }  | 
 
| 
 | 
 0  | 
 355  | 
 elsif ($pattern->[$p] == $Q_01) { }  | 
 
| 
 | 
 0  | 
 355  | 
 elsif ($pattern->[$p] == $Q_1M) { }  | 
 
| 
 | 
 256  | 
 99  | 
 elsif ($stack->[$s]{'tag'} == $pattern->[$p]) { }  | 
 
| 
1586
 | 
 0  | 
 0  | 
 if ($stack->[$s]{'tag'} == $pattern->[$p]) { }  | 
 
| 
1611
 | 
 63  | 
 76  | 
 if ($p == -1) { }  | 
 
| 
1628
 | 
 63  | 
 0  | 
 if ($frame->{'rule'}) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($frame->{'tag'}) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif (ref $frame eq 'ARRAY' and @$frame) { }  | 
 
| 
1629
 | 
 59  | 
 4  | 
 if (@{$frame->{'rule'};} >= 3 and $frame->{'rule'}[2] >= 0) { }  | 
 
| 
1651
 | 
 2  | 
 6  | 
 if ($_[0] > $_[1]) { }  | 
 
| 
1657
 | 
 0  | 
 0  | 
 if ($ret)  | 
 
| 
1755
 | 
 1  | 
 2  | 
 if ($abbrev eq '//') { }  | 
 
| 
 | 
 2  | 
 0  | 
 elsif ($abbrev eq '.') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($abbrev eq '..') { }  | 
 
| 
1782
 | 
 0  | 
 0  | 
 if ($type eq 'node') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($type eq 'text') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($type eq 'comment') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($type eq 'processing-instruction') { }  | 
 
| 
1796
 | 
 0  | 
 0  | 
 if ($type ne 'processing-instruction')  | 
 
| 
1850
 | 
 0  | 
 2  | 
 if (@$predicates > 0) { }  | 
 
| 
1885
 | 
 0  | 
 0  | 
 if (substr($expr, 0, 1) eq '$') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif (substr($expr, 0, 1) eq '@') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($expr =~ /^[0-9]+$/) { }  | 
 
| 
1917
 | 
 6  | 
 3  | 
 if (@$xpathRules)  | 
 
| 
1933
 | 
 0  | 
 3  | 
 if $DEBUG  | 
 
| 
1937
 | 
 78  | 
 93  | 
 unless $array->[$position]  | 
 
| 
1946
 | 
 0  | 
 171  | 
 if ($pattern->[$j] == $Q_1M) { }  | 
 
| 
 | 
 3  | 
 168  | 
 elsif ($pattern->[$j] == $Q_MM or $pattern->[$j] == $Q_01) { }  | 
 
| 
1961
 | 
 0  | 
 3  | 
 if $DEBUG  | 
 
| 
1964
 | 
 78  | 
 72  | 
 if ($_)  | 
 
| 
1966
 | 
 0  | 
 3  | 
 if $DEBUG  | 
 
| 
1995
 | 
 2  | 
 0  | 
 unless @$sort  | 
 
| 
2009
 | 
 0  | 
 0  | 
 if ($s->{'type'} eq 'text') { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($s->{'type'} eq 'number') { }  | 
 
| 
2035
 | 
 0  | 
 0  | 
 $v1->{'key'}[$i]{'order'} eq 'descending' ? :  | 
 
| 
2036
 | 
 0  | 
 0  | 
 if ($v1->{'key'}[$i]{'value'} > $v2->{'key'}[$i]{'value'}) { }  | 
 
| 
 | 
 0  | 
 0  | 
 elsif ($v1->{'key'}[$i]{'value'} < $v2->{'key'}[$i]{'value'}) { }  | 
 
| 
2048
 | 
 0  | 
 4  | 
 unless $node  | 
 
| 
2051
 | 
 3  | 
 1  | 
 if ($node->{'nodeType'} == 3 or $node->{'nodeType'} == 4 or $node->{'nodeType'} == 2) { }  | 
 
| 
 | 
 1  | 
 0  | 
 elsif ($node->{'nodeType'} == 1 or $node->{'nodeType'} == 9 or $node->{'nodeType'} == 11) { }  |