Используйте Perl для редактирования файлов HTML - PullRequest
2 голосов
/ 21 декабря 2010

Вывод ниже генерируется сторонним инструментом, который проверяет файлы XML на соответствие схеме XML.Это выведет ошибки проверки.Итак, это был лишь небольшой контекст.

Из приведенных выше ошибок отображаются в HTML, я хочу иметь возможность выполнять «подсветку синтаксиса» с помощью perl.Например, я хочу иметь возможность выделять определенные части текста выше.

В частности, я хочу закрасить любой текст, который соответствует «Line [0-9] *», как жирный и красный.Я пытался поэкспериментировать с поиском и заменой регулярных выражений, но мне это не удалось.

Любые указатели / подсказки были бы фантастическими.

Спасибо!

Line 8: Element 'alphabet', attribute 'letters': The value 'XYZ' does not match the fixed value constraint 'ABC'.
Line 185: Element 'drink': The attribute 'coffee' is required but missing.
Line 254: Element 'timeout': This element is not expected.
Line 269: Element 'commands': This element is not expected. Expected is one of ( eat, drink, sleep ).
Line 812: Element 'software': The attribute 'version' is required but missing.
Line 876: Element 'windows-software': The attribute 'version' is required but missing.
Line 890: Element 'contact': The attribute 'telephone' is required but missing.
Line 890: Element 'operating': The attribute 'mode' is required but missing.

1 Ответ

1 голос
/ 21 декабря 2010

Попробуйте с этим:

#!/usr/bin/perl 
use strict;
use warnings;

while(<DATA>) {
    s#(Line \d+)#<span style="font-weight:bold;color:red;">$1</span>#;
    s#(Element\s|attribute\s)('[^']*')#$1<span style="font-weight:bold;color:blue;">$2</span>#g;
    print
}

__DATA__
Line 8: Element 'alphabet', attribute 'letters': The value 'XYZ' does not match the fixed value constraint 'ABC'.
Line 185: Element 'drink': The attribute 'coffee' is required but missing.
Line 254: Element 'timeout': This element is not expected.

output

<span style="font-weight:bold;color:red;">Line 8</span>: Element <span style="font-weight:bold;color:blue;">'alphabet'</span>, attribute <span style="font-weight:bold;color:blue;">'letters'</span>: The value 'XYZ' does not match the fixed value constraint 'ABC'.
<span style="font-weight:bold;color:red;">Line 185</span>: Element <span style="font-weight:bold;color:blue;">'drink'</span>: The attribute <span style="font-weight:bold;color:blue;">'coffee'</span> is required but missing.
<span style="font-weight:bold;color:red;">Line 254</span>: Element <span style="font-weight:bold;color:blue;">'timeout'</span>: This element is not expected.

Вместо атрибута стиля вы можете использовать класс css.

s#(Line \d+)#<span class="bold_red">$1</span>#;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...