Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

В строке 6 создается объект класса OODoc::Document (использование функций ooXXX вместо соответствующих конструкторов new является предпочтительным способом). Мы указываем, что нас будет интересовать файл content.xml, в котором и хранится содержимое документа. При использовании функции ooStyle() для получения доступа к именованным стилям здесь будет уместно указать 'style'.

Строка 7 предписывает включить «ограничители» (delimiters) – о них мы поговорим чуть позже.

Наконец, в строке 8 мы получаем текстовое содержимое документа методом getTextContent() и выводим его на консоль. При этом getTextContent() преобразует родной для OpenDocument UTF-8 в локальную кодировку, установленную вами в файле config.xml. Обратите внимание на scalar: в списочном контексте getTextContent() возвращает массив строк, составляющих документ; мы же хотим получить его содержимое в виде одной строки. В этом случае в качестве разделителя строк используется значение свойства
$doc->{'line_separator'}, которое вы можете установить по своему усмотрению.

А вот так решается любимая задача всех редакций периодических изданий – подсчет числа символов в документе без учета пробелов. Конечно, если редакция достаточно прогрессивна и уже использует OpenDocument вместо других проприетарных форматов...

$doc->outputDelimitersOff();

my $content = $doc->getTextContent();

$content =~ s/s+//mg;

print length $content;

(здесь и далее приводятся только части скрипта, реализующие новое поведение). Простой модификацией регулярного выражения особенно рачительная редакция может удалить из текста знаки препинания, латинские буквы, цифры и т. д. – в общем, все, за что, по мнению издателя, можно не платить.

Внимательный читатель может обратить внимание, что во втором примере мы почему-то использовали метод outputDelimitersOff(), чтобы отключить вывод «ограничителей». Подобная «чехарда», конечно, не способствует пониманию процесса, поэтому попробуем объясниться: ограничитель – это всего-навсего пара строковых констант, обрамляющая текстовое представление некоторого элемента. Например, в настройке по умолчанию элементы text:span (их назначение совпадает с таковым в HTML) выделяются «елочками» (<< и >>), а сноски – фигурными скобками и префиксом 'NOTE: '. Разумеется, ограничители можно изменять по своему усмотрению; этим мы и воспользуемся в следующем примере, выводящем текст OpenDocument в раскраске «а-ля Lynx»:

use Term::ANSIColor qw(:constants);

...

my $doc = ooDocument(file => $file, member => 'content');

 

$doc->{'delimiters'}{'text:h'} = { 'begin' => RED, 'end' => RESET };

$doc->{'delimiters'}{'text:a'} = { 'begin' => BLUE, 'end' => RESET };

$doc->{'delimiters'}{'text:list-item'} = { 'begin' => YELLOW . '* ' . RESET, 'end' => '' };


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100