Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
elsif ($elt->isItemList) {
print O_FILE list($elt, 1), " ";
}
}
print O_FILE <<'__FOOTER__';
</body>
</html>
__FOOTER__
close(O_FILE);
Мы генерируем заголовок, основываясь на мета-информации документа; функция ooLocalEncoding() возвращает системную кодировку, установленную вами в файле config.xml. Основная работа, очевидно, сосредоточена в цикле:
for my $elt ($doc->selectElementsByContent('.*')) { ... }
Метод selectElementsByContent('.*') возвращает список всех элементов второго уровня ('.*' – это регулярное выражение-фильтр; замените его на 'apples', чтобы получить только те элементы, в которых упоминаются яблоки). Наш скрипт различает три типа таких элементов: заголовки (Heading), абзацы (Paragraphs) и списки (ItemList) – все остальное может встретиться только в содержимом абзаца (элементы третьего и более высоких уровней). Обработать заголовок проще всего:
sub heading {
my $elt = shift;
my $level = $doc->getOutlineLevel($elt);
return "<h$level>" . paragraph_content($elt) . "</h$level> ";
}
Метод getOutlineLevel() возвращает номер уровня заголовка, мы генерируем соответствующий ему тег <hi>.
Функция paragraph_content обрабатывает содержимое параграфа и является в некотором смысле центральной – все, что содержит хотя бы толику текста, проходит через нее. Неудивительно, что она в несколько раз длиннее heading().
sub paragraph_content {