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

Валиков Алексей Н.

Шрифт:
Листинг 8.2. Входящий документ

<а xmlns:d="urn:d">¶

□□<d:b>¶

□□□□<c>¶

□□□□□□</e>¶

□□□□</c>¶

□□</d:b>¶

</a>

Листинг 8.3. Преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:preserve-space elements="c"/>

 <xsl:strip-space elements="e t:*"

xmlns:t="urn:d"/>

 <xsl:template match="/">

<xsl:copy-of select="/"/>

 </xsl:template>

</xsl:stylesheet>

Листинг 8.4. Выходящий документ

<?xml version="1.0" encoding="utf-8"?><a xmlns:d="urn:d">¶

□□<d:b><c>¶

□□□□□□<e/>¶

□□□□</c></d:b>¶

</a>

Сообщения процессора

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

Элемент xsl:message

Синтаксис этого элемента дан ниже:

<xsl:message

 terminate="yes" | "no">

 <!-- Содержимое: шаблон -->

</xsl:message>

Элемент

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

Пример

Иногда в процессе отладки преобразования бывает полезно выводить сообщения о том, какой элемент обрабатывается в данный момент.

Листинг 8.5. Входящий документ

<a><b><c><d/></c></b></a>

Листинг 8.6. Преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:template match="*">

<element name="{name}">

<xsl:message>

<xsl:text>Processing element </xsl:text>

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

<xsl:if test="parent::*">

<xsl:text> which has a parent element </xsl:text>

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

</xsl:if>

<xsl:text>.</xsl:text>

</xsl:message>

<xsl:apply-templates/>

</element>

 </xsl:template>

</xsl:stylesheet>

Листинг 8.7. Выходящий документ

<element name="a">

 <element name="b">

<element name="c">

<element name="d"/>

</element>

 </element>

</element>

Листинг 8.8. Сообщения процессора

Processing element a.

Processing element b which has a parent element a.

Processing element с which has a parent element b.

Processing element d which has a parent element c.

Атрибут

terminate
указывает на то, должен ли процессор прекратить дальнейшую обработку документа или нет. Значением этого атрибута по умолчанию является
"no"
, что означает, что процессор должен просто вывести сообщения и продолжать дальнейшее выполнение шаблона. Если же в
xsl:message
указано
terminate="yes"
, то процессор, выведя сообщение, прервет обработку. Этот прием может использоваться, например, для того, чтобы проверять входящие документы на соответствие определенной схеме.

  • Читать дальше
  • 1
  • ...
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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