XSLT - [21]

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

;

• Узел пространства имен. Представляет объявление пространства имен. Обратите внимание: этот узел добавляется к каждому элементу, к которому применяется это пространство имен;

• Узел инструкции обработки. Содержит текст инструкции обработки, не содержащий символов > и >?>. Скажем, объявление > не является инструкцией обработки, несмотря на то, что выглядит таковой. Процессор XSLT отбросит его автоматически;

• Текстовый узел. Текстовые узлы содержат последовательности символов, То есть текст PCDATA. Текстовые узлы по умолчанию в XSLT подвергаются нормализации, то есть смежные текстовые узлы объединяются.

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

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

>

>

</code></p><p><code>>   Earthquakes for Lunch</code></p><p><code>>  

>  </code></p><p><code>>   Volcanoes for Dinner</code></p><p><code>>  

>

Термин корневой элемент (root element) пришёл из рекомендации XML, и, поскольку его легко спутать с корневым узлом (root node) XSLT, пришедшим из рекомендации XPath, некоторые авторы, пишущие на тему XSLT, называют корневой элемент элементом документа. Очень жаль, что существует такое перекрытие терминов.

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

В XSLT узлы могут иметь имена — так же, как дочерние узлы (child node) и родительские узлы (parent node). Иными словами, узлы элементов, атрибутов, пространств имен и инструкций обработки могут иметь имена; каждый узел элемента и корневой узел могут иметь дочерние узлы; и все узлы, за исключением корневого, имеют родителей.

Например, вот как выглядит рассмотренный нами ранее XML-документ в процессоре XSLT в виде дерева, состоящего из узлов:

>                            root

>                             |

>                    element:

>                             |

>                    element:

>                             |

>             |-------------------------------|

>             |                               |

>    element:                 element: <title></code></p><p><code>>             |                               |</code></p><p><code>>text: "Earthquakes for Lunch" text: "Volcanoes for Dinner"</code></p><p>Как видим, корневой узел расположен на самом верху дерева, за которым следует узел корневого элемента, ему соответствует элемент <code>><library></code>. За ним следует узел <code>><book></code>, у которого есть два дочерних узла <code>><title></code>. Эти два узла <code>><title></code> являются внуками элемента <code>><library></code>. Родители, дедушки и прадедушки узла, назад до и включая корневой узел, являются<i> предками</i> (ancestor) элемента. Узлы, производные от узла (дети, внуки, правнуки и т.д.), называются его<i> потомками </i>(descendant). Узлы одного уровня называются<i> братьями</i> (sibling).</p><p>При помощи этой модели в виде дерева можно представить любой хорошо сформированный XML-документ. Но XSLT не ограничивается работой только с такими документами. В хорошо сформированных документах должен существовать один элемент, содержащий все остальные, но в соответствии с рекомендацией XSLT это не обязательно. В XSLT корневой узел может иметь столько детей, сколько их может иметь элемент, — например, несколько узлов элементов или текстовых узлов. Таким образом, XSLT может работать с фрагментами документа, а не только с хорошо сформированными документами.</p><div class="cite"><p>ФРАГМЕНТЫ РЕЗУЛЬТИРУЮЩЕГО ДЕРЕВА </p><p>Помимо работы с фрагментами входного дерева, процессоры могут включать в вывод специальный тип данных, в XSLT 1.0 называемый фрагментом результирующего дерева (result tree fragment). Этот тип данных, однако, не был включен в рабочий проект XSLT 1.1 (см. главу 7), поэтому он, скорее всего, не будет входить в состав XSLT 2.0.</p></div><p>В действительности, рассмотренная только что диаграмма дерева не дает полной картины того, как она выглядит с точки зрения процессора XSLT. Я исключил один тип узлов, который вызывает большую путаницу при изучении XSLT — текстовые узлы, содержащие только символ-разделитель (whitespace). Теперь самое время заняться ими.</p></div><div class="section"><div class="title h3"><p>Символ-разделитель</p></div><p>Пример XML-документа, с которым мы до сих пор работали, выровнен так, чтобы показать иерархическую структуру его элементов:</p><p><code>><?xml version="1.0"?></code></p><p><code>> <library></code></p><p><code>>  <book></code></p><p><code>>   <title></code></p><p><code>>    Earthquakes for Lunch</code></p><p><code>>   

>   </code></p><p><code>>    Volcanoes for Dinner</code></p><p><code>>   

>

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


Рекомендуем почитать
Как сделать свой сайт и заработать на нем. Практическое пособие для начинающих по заработку в Интернете

Данная книга является прекрасным практическим руководством для начинающих по созданию, раскрутке и монетизации сайтов. Уже в процессе знакомства с изданием читатели смогут создать свой первый сайт, не потратив на это ни копейки. Пользователи, имеющие свои веб-проекты, наверняка найдут много нового во второй части книги, посвященной продвижению сайта и заработку на нем.В издании освещаются все основные этапы создания сайтов и получения дополнительного дохода в сети Интернет: поиск идеи интернет-проекта, выбор домена и хостинга, создание сайта, его раскрутка и продвижение в поисковых системах, получение дохода при помощи контекстной рекламы, платных загрузок, партнерских программ и других способов.Если вы хотите получать стабильный ежемесячный дополнительный доход с помощью своего сайта, затратив при этом минимум усилий и материальных затрат, эта книга для вас.


Корпоративный веб-сайт на 100%. Требуйте от сайта большего!

Системное, компактное и хорошо структурированное руковод ство по всем аспектам функционирования корпоративных сайтов. Книга обобщает богатый практический опыт ее авторов (более 700 успешных проектов в сфере веб-разработок и сотни печатных и электронных публикаций). На страницах книги вы найдете множество рекомендаций, примеров, методик и контрольных списков, которые позволят сделать ваш веб-сайт мощным бизнес-инструментом.Книга адресована директорам по маркетингу и другим специалистам, в чьи обязанности входит управление корпоративными веб-сайтами.В качестве важного дополнения к настояшему изданию рекомендуем сайт www.webdevelopment.ru, на котором вы можете оставить свои комментарии, ознакомиться с дополнительными материалами, задать вопросы, пообщаться с авторами.


Халявные антивирусы и другие бесплатные программы из Интернета!

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


В социальных сетях. Twitter – 140 символов самовыражения

Количество пользователей Твиттера давно превысило цифру 150 миллионов. Российских твиттерян уже больше 500 000 и прирост осуществляется совершенно немыслимыми темпами – за последний год количество русскоязычных пользователей Твиттера выросло в 26 раз. А после регистрации личного аккаунта президентом Дмитрием Медведевым в России случился буквально тви-бум.Что же представляет собой «чирикающий» сервис? Чем он отличается от других социальных сетей и для чего он может быть полезен? С чего начать, как пользоваться арсеналом возможностей, которые предоставляет сам Твиттер и сотни сопутствующих сервисов? Как создать корпоративный Твиттер и заставить его работать на свой бизнес? На эти и многие другие вопросы вы найдете ответы в этой книге.


Самоучитель Skype. Бесплатная связь через Интернет

Самоучитель поможет освоить программу Skype — лидера в области телефонных разговоров по Интернету — и присоединиться к многомиллионной армии ее обладателей. С позиции российского пользователя описаны основные вопросы, начиная от загрузки и инсталляции программы, заканчивая проведением телеконференций и мультичатов. Особое внимание уделено безопасности общения. Рассмотрены дополнительные сервисы Skype, как платные, так и бесплатные. Приведены способы оплаты услуг Skype, возможности по управлению собственным счетом в программе Skype.


Образование русскоязычного сегмента Фидонет в Западной Европе

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


SQL: быстрое погружение

Что общего между самыми востребованными профессиями и стремительным увеличением количества информации в мире? Ответ: язык структурированных запросов (SQL). SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга «SQL: быстрое погружение» идеальна для всех, кто ищет новые перспективы карьерного роста; для разработчиков, которые хотят расширить свои навыки и знания в программировании; для любого человека, даже без опыта, кто хочет воспользоваться возможностями будущего, в котором будут править данные.


Чистый код. Создание, анализ и рефакторинг

Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.


Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

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


Изучаем Python

Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.