Технология XSLT - [4]

Шрифт
Интервал

Приложение 4. Интернет-ресурсы, посвященные XSLT

В четвертом приложении приведен небольшой список полезных интернет-ресурсов, так или иначе связанных с XSLT. Сюда относятся списки часто задаваемых вопросов, уроки по XSLT, архивы библиотек и инструментов, официальные спецификации Консорциума W3 и так далее.

Соглашения

Расширенная форма Бэкуса-Наура

Несмотря на то, что эта книга главным образом посвящена языку XSLT, в ней также описываются расширяемый язык разметки XML и язык обращения к частям ХМL-документов, называемый XPath. Подробное и точное описание этих языков невозможно без четких определений синтаксических конструкций.

Для описания синтаксиса рассматриваемых языков мы будем использовать расширенные формы Бэкуса-Наура (РФБН, или, по-английски, Extended Backus-Naur Form, EBNF). EBNF — это современная модификация методологии, которая впервые была использована для описания языка программирования Алгол-60. За прошедшие десятилетия формы Бэкуса-Наура были доработаны множеством авторов и сейчас в расширенном виде используются для описания ряда языков программирования различной степени сложности. EBNF-нотация также широко используется в технических рекомендациях Консорциума W3, которые фактически и являются стандартами рассматриваемых нами языков.

Нотация EBNF определяет язык как набор синтаксических правил, определяющих нетерминалы (конструкции языка) через терминалы (символы языка), а также другие нетерминалы. Правило состоит из двух частей, разделенных символами ">::=":

>конструкция ::= определение конструкции

В левой части правила стоит терминал определяемой конструкции, в правой — выражение, определяющее эту конструкцию. Правила EBNF также иногда называют продукциями, и мы тоже часто будем использовать этот термин, чтобы не путать эти правила с шаблонными правилами преобразований, которые главным образом и составляют преобразования в языке XSLT.

Терминалы, которые могут быть как отдельными символами, так и их последовательностями, определяются в нотации EBNF следующим образом:

□ >#xN, где >N — шестнадцатеричный код, соответствует символу Unicode с кодом >N. Например, >#х410 соответствует символу кириллического алфавита (см. раздел "Использование Unicode" главы 1).

□ >[a-zA-z], >[#xN-#xN] — соответствует символу указанного интервала. К примеру, >[a-f] соответствует любому из символов , >b, , >d, >e, >f.

□ >[abc], >[#xN#xN#xN] — соответствует любому из перечисленных символов. Например, >[#х410#х411#х412] соответствует любому из символов , , . Символьные интервалы и перечисления могут использоваться совместно в одних квадратных скобках.

□ >[^a-z], >[^#хN-#xN] — соответствует любому символу, кроме символов указанного интервала. К примеру, >[^#х410-#x42F] соответствует любому символу, кроме заглавных букв русского алфавита.

□ >[^abc], >[^#xN#xN#xN] — соответствует любому, кроме перечисленных символов. Например, >[^xyz] соответствует любому символу, кроме символов >x>y и >z. Аналогично разрешенным интервалам и последовательностям символов, запрещенные интервалы и последовательности также могут использоваться совместно.

□ >"строка" — соответствует строке, которая приведена в двойных кавычках. Например, >"stylesheet" соответствует строке >stylesheet.

□ >'строка' — соответствует строке, которая приведена в одинарных кавычках. Например, >'template' соответствует строке >template.

Терминалы могут использоваться совместно с нетерминальными конструкциями в более сложных выражениях.

□ >A? означает, что выражение >A необязательно и может быть пропущено.

□ >A | B соответствует либо выражению >A, либо выражению >B, но не им обоим одновременно (строгое "или"). Выражения такого вида называют иначе выбором.

□ >A B означает, что за выражением >A следует выражение >B. Последовательность имеет приоритет по сравнению с выбором — >A B | C D означает последовательность выражений >A и >B или последовательность выражений >C и >D.

□ >A - B соответствует строке, которая соответствует выражению >A, но не выражению >B.

□ >A+ означает последовательность из одного или более выражения >A. Оператор ">+" в EBNF старше оператора выбора, >A+ | B+ означает последовательность из одного или более выражения >A или последовательность из одного или более выражения >B.

□ >A* означает последовательность из нуля или более выражений >A. Аналогично оператору ">+", оператор ">*" старше оператора выбора

□ >(выражение) — круглые скобки используются для группировки выражений. Выражения, заключенные в скобки, рассматриваются, как отдельная единица, которая может быть свободно использована в приведенных выше конструкциях. Например, выражение >A B C | B C | A D C | D C | C можно переписать в виде >(A? (B | D) ) C.

Нотация расширенных форм Бэкуса-Наура может с первого взгляда показаться очень сложной, однако, на самом деле это не так. Достаточно разобрать несколько примеров, как все встанет на свои места.

Пример

Рассмотрим реальную продукцию >Digits языка XPath. >Digits — это последовательность из нескольких цифр от >0 до >9 и определяется она следующим образом:

>Digits ::= [0-9] +

Как правило, продукции в спецификациях языков пронумерованы для того, чтобы было легче на них ссылаться. Мы будем по возможности приводить эти номера так, как они указаны в технических рекомендациях — в квадратных скобках, например:


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Как функции, не являющиеся методами, улучшают инкапсуляцию

Когда приходится инкапсулировать, то иногда лучше меньше, чем большеЯ начну со следующего утверждения: Если вы пишете функцию, которая может быть выполнена или как метод класса, или быть внешней по отношению к классу, Вы должны предпочесть ее реализацию без использования метода. Такое решение увеличивает инкапсуляцию класса. Когда Вы думаете об использовании инкапсуляции, Вы должны думать том, чтобы не использовать методы.Удивлены? Читайте дальше.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Программное обеспечение встроенных систем. Общие требования к разработке и документированию

Embedded system software. General requirements for development and documentationСтандарт подготовлен в развитие ГОСТ Р ИСО/МЭК 12207-99 «Информационная технология. Процессы жизненного цикла программных средств» с целью учета специфики разработки и документирования программного обеспечения встроенных систем реального времени.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.


Наркокурьер Лариосик

Кинематографическая природа остросюжетной прозы Григория Ряжского очевидна — как несомненны и ее чисто литературные достоинства. Мир страшен и кровав — и страшнее всего, пожалуй, в заглавной повести «Наркокурьер Лариосик», — но и не восхититься его красотой нельзя.В литературу — с парадного подъезда престижной серии — входит зрелый мастер.


Тотальное превосходство

Художник? любовник? убийца? адепт тайного знания?.. Герой романа знает о себе только одно, он должен добиться тотального превосходства во всем…Интеллектуальный триллер, колеблющийся между «Американской мечтой» Нормана Мейлера и «Шатунами» Юрия Мамлеева.Новый блестящий талант в «Мастер серии».


Месторождение ветра

Проза Марины Палей не поддается расчленению на внутреннее и внешнее, на сюжет и стиль. Суверенный мир, созданный этим писателем, существует благодаря виртуозному стилю и обусловлен разнообразием интонации. Огромный дар свободы не может ограничить себя одним героем, одной темой или одной страной.


Приемы создания интерьеров различных стилей

Книга по созданию трехмерных проектов интерьеров при помощи популярного редактора трехмерной графики 3ds Max позволит каждому, кто хочет заняться моделированием 3D-интерьеров, найти необходимую информацию для воплощения идеи в жизнь. Описывается моделирование элементов и стили оформления интерьеров, работа с материалами и текстурами, способы повышения реалистичности изображений, визуализация. Рассматриваются особенности создания интерьеров в различных стилях: минимализм, ренессанс, барокко, античный, рококо, хай-тек, техно и др.