diff --git a/lib/HTML/Microdata.pm b/lib/HTML/Microdata.pm index e6bc826..cb62de9 100644 --- a/lib/HTML/Microdata.pm +++ b/lib/HTML/Microdata.pm @@ -38,6 +38,12 @@ sub items { $self->{items}; } +sub _split_tokens { + my ($str) = @_; + $str =~ s/^\s+|\s+$//g; + return split /\s+/, $str; +} + sub _parse { my ($self, $content) = @_; @@ -70,13 +76,14 @@ sub _parse { for my $scope (@$scopes) { if (my $refs = $scope->attr('itemref')) { - my $ids = [ split /\s+/, $refs ]; + my $ids = [ _split_tokens($refs) ]; for my $id (@$ids) { my $props = $tree->findnodes('//*[@id="' . $id . '"]/descendant-or-self::*[@itemprop]'); for my $prop (@$props) { - my $name = $prop->attr('itemprop'); my $value = $self->extract_value($prop, items => $items); - $items->{ $scope->id }->{properties}->add($name => $value); + foreach my $name (_split_tokens($prop->attr('itemprop'))) { + $items->{ $scope->id }->{properties}->add($name => $value); + } $prop->delete; } } @@ -87,7 +94,7 @@ sub _parse { for my $prop (@$props) { my $value = $self->extract_value($prop, items => $items); my $scope = $prop->findnodes('./ancestor::*[@itemscope]')->[-1]; - for my $name (split /\s+/, $prop->attr('itemprop')) { + for my $name (_split_tokens($prop->attr('itemprop'))) { $items->{ $scope->id }->{properties}->add($name => $value); } }