0

私はHTML::TreeBuilder::XPath、複雑な HTML ドキュメントを解析してから編集してから、ディスクに書き戻すために使用しています。私が直面している問題は、 HTML コンテンツ ( )を解析しようとすると、ブロック<link...>内のタグが拒否されることです。<body>$tree->parse_content($page);

HTML::Parse: 本文<link>のヘッダー要素

これらは HTML5 までは違法でしたが、現在は合法のようです。警告がスローされたとしても、ツリービルダーにこれが合法であることを伝える方法、またはそれを受け入れるようにする方法を知っている人はいますか? これらは出力段階に到達せず、レイアウトを台無しにしています。

4

1 に答える 1

2

この要素は、 for HTML 4 およびその XHTML 1 バリアント<link>内では無効です。属性があれば HTML 5 ドラフト<body>で許可されていますが、HTML 5 はまだ標準として承認されていません。bodyitemprop

HTML::Parserまず、最新バージョンのを使用していることを確認する必要があります。これHTML::TreeBuilderは、HTML の解析に使用され、おそらくエラーの原因となっているものです。

<link>次に、このように要素を無視するように試すことができます

my $tree = HTML::TreeBuilder::XPath->new;
$tree->ignore_elements('link');
$tree->parse('myfile.html');
于 2013-05-23T21:44:05.087 に答える