Вход/Регистрация
XSLT
вернуться

Холзнер Стивен

Шрифт:

Обратите внимание на правило для элемента

<PLANETS>
: в нем просто используется элемент
<xsl:apply-templates>
для применения шаблонов ко всем дочерним узлам. Однако при обработке шаблона существует правило по умолчанию: если для элемента не задано правило, автоматически вызывается
<apply-templates/>
. Таким образом, следующая таблица стилей, в которой опущено правило для
<PLANETS>
, делает в точности то же, что и предыдущая:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

<HTML>

<xsl:apply-templates/>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

<xsl:value-of select="NAME"/>

 </xsl:template>

</xsl:stylesheet>

В этом случае я воспользовался преимуществом правил по умолчанию для шаблона. Ниже приведены правила для каждого вида узлов, которые будут применены, если не задать правило для узла явно:

• Корневой узел. По умолчанию вызывается

<xsl:apply-templates/>
;

• Узлы элементов. По умолчанию вызывается

<xsl:apply-templates/>
;

• Узлы атрибутов. Копирует в результирующий документ значение атрибута, однако копирует его как текст, но не как атрибут;

• Текстовые узлы. Копирует в результирующий документ текст;

• Узлы комментариев. Нет обработки XSLT, ничего не копируется;

• Узлы инструкций обработки. Нет обработки XSLT, ничего не копируется;

• Узлы пространств имен. Нет обработки XSLT, ничего не копируется.

Наиболее важное правило по умолчанию применяется к элементам и может быть выражено следующим образом:

<xsl:template match="*">

 <xsl:apply-templates/>

</xsl:template>

Это правило приведено здесь только для гарантии того, что каждый элемент, от корня и ниже, будет обрабатываться при помощи <xsl:apply-templates/>, если не предоставить другого правила, которое перекроет правило по умолчанию.

Правило по умолчанию для текстовых узлов можно выразить следующим образом: функция XSLT

text
выбирает текст узла, так что текст текстового узла добавляется в выходной документ:

<xsl:template match="text">

 <xsl:value-of select="."/>

</xsl:template>

Правило по умолчанию того же вида применяется к атрибутам, которые добавляются в выходной документ при помощи следующего правила, где выражение "@*" выбирает любой атрибут:

<xsl:template match="@*">

 <xsl:value-of select="."/>

</xsl:template>

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

<xsl:template match="processing-instruction"/>

То же верно для комментариев — их правило по умолчанию может быть выражено при помощи функции XSLT

comment
, которая также будет рассмотрена в главе 8:

<xsl:template match="comment"/>

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

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

</xsl:stylesheet>

А вот результат применения этой таблицы стилей к

planets.xml
. Заметьте, что правило по умолчанию для атрибутов не применялось, потому что они не являются дочерними по отношению к другим узлам:

<?xml version="1.0" encoding="UTF-8"?>

Mercury

  • Читать дальше
  • 1
  • ...
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: