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

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

Шрифт:

<xsl:call-template name="head"/>

Атрибут

name
при вызове обязан иметь фиксированное значение — точно так же, как и в случае с
mode
и
xsl:apply-templates
, динамика здесь не разрешена.

При вызове

xsl:call-template
не изменяет контекста преобразования. Фактически, вызов именованного шаблона эквивалентен замене в тексте преобразования элемента
xsl:call-template
на тело вызываемого шаблона.

Приведем пример.

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

<content>

 Just a few words...

</content>

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

<xsl:stylesheet

 version="1.0"

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

<xsl:template match="/">

 <html>

<xsl:call-template name="head"/>

<body><xsl:copy-of select="content/node"/></body>

 </html>

</xsl:template>

<xsl:template name="head">

 <head>

<meta name="keywords" content="XSLT, XPath, XML"/>

<meta name="description"

content="This site is dedicated to XSLT and Xpath."/>

<title>XSLTdev.ru - XSLT developer resource</title>

<link rel="stylesheet" type="text/css" href="#"/>

 </head>

</xsl:template>

</xsl:stylesheet>

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

<html>

 <head>

<meta name="keywords" content="XSLT, XPath, XML">

<meta name="description"

content="This site is dedicated to XSLT and Xpath.">

<title>XSLTdev.ru - XSLT developer resource</title>

<link rel="stylesheet" type="text/css" href="#">

 </head>

 <body>Just a few words...</body>

</html>

Примечание

Несколько более эффективным способом использования в документе статических частей (как содержимое элемента

head
в приведенном примере) является хранение этих частей во внешних документах и вставка их в выходящий документ при помощи элемента
xsl:copy-of
и функции
document
.

В этом примере шаблон, обрабатывающий корневой элемент, фактически эквивалентен шаблону вида:

<xsl:template match="/">

 <html>

<head>

<meta name="keywords" content="XSLT, XPath, XML"/>

<meta name="description"

content="This site is dedicated to XSLT and Xpath."/>

<title>XSLTdev.ru - XSLT developer resource</title>

<link rel="stylesheet" type="text/css" href="#"/>

</head>

<body><xsl:value-of select="content"/></body>

 </html>

</xsl:template>

В принципе именованные шаблоны не обязаны иметь атрибут

match
, но он все же может быть определен. В этом случае шаблон можно будет применять как для обработки частей документов элементом
xsl:apply-templates
, так и вызывая его по имени элементом
xsl:call-template
.

Пример

Изменим объявление нашего шаблона head следующим образом:

<xsl:template name="head" match="head">

 ...

</xsl:template>

Теперь, если входящий документ будет иметь вид

<page>

 <head/>

 <content>Just a few words...</content>

</page>

то результат выполнения следующих двух шаблонов будет одинаков.

  • Читать дальше
  • 1
  • ...
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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