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);
}