diff --git a/lib/HTML/Microdata.pm b/lib/HTML/Microdata.pm index e6bc826..fe5f98d 100644 --- a/lib/HTML/Microdata.pm +++ b/lib/HTML/Microdata.pm @@ -62,7 +62,8 @@ sub _parse { $items->{ $scope->id } = $item; - unless ($scope->attr('itemprop')) { + if (!scalar @{$scope->findnodes('./ancestor::*[@itemscope]')} + || !$scope->attr('itemprop')) { # This is top level item push @{ $self->{items} }, $item; } @@ -87,6 +88,7 @@ sub _parse { for my $prop (@$props) { my $value = $self->extract_value($prop, items => $items); my $scope = $prop->findnodes('./ancestor::*[@itemscope]')->[-1]; + next if ! defined $scope; for my $name (split /\s+/, $prop->attr('itemprop')) { $items->{ $scope->id }->{properties}->add($name => $value); }