次のスクリプトを検討してください。
#!/usr/bin/perl
use strict;
use HTML::TreeBuilder;
sub test
{
my ($content) = @_;
my $tree = HTML::TreeBuilder->new;
$tree->implicit_tags(0);
$tree->no_expand_entities(1);
$tree->parse_content($content);
return $tree->as_HTML(q{<>&});
}
print test('test«');
print "\n";
print test('<a href="#" title="«"></a>')
それは印刷されます:
<html>test«</html>
<html><a href="#" title="?"></a></html>
no_expand_entities(1)
HTMLエンティティを呼び出すため、«
HTML要素内で展開されません。ただし、何らかの理由で、このモードは属性のデフォルトの動作を変更しません。同じエンティティが展開され、ガベージとして表示されます。
HTML 属性内でエンティティの展開を強制的に無効にする方法を教えてください。