Чтение онлайн

ЖАНРЫ

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

Шрифт:

<xsl:template match="MASS">

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

</xsl:template>

По этой причине я могу заменить элемент

<MASS>
на элемент
<DAY>
:

<xsl:template match="MASS">

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

</xsl:template>

Элемент <xsl:message>

При помощи элемента

<xsl:message>
можно дать указание процессору XSLT отобразить сообщение и,
по выбору, прекратить обработку таблицы стилей. У элемента
<xsl:message>
один атрибут:

• 

terminate
(необязательный). Значение «yes» прекращает обработку. По умолчанию установлено «no».

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

В приведенном ниже листинге 3.12 я прекращаю обработку XSLT, когда процессор XSLT пытается преобразовать элемент

<DAY>
в
planets.xml
, выводя сообщение "
Sorry, DAY information is classified.
" (Извините, информация о параметре «ДЕНЬ» засекречена.).

Листинг 3.12. Применение <xsl:message>

<?xml version="1.0"?>

<xsl:stylesheet version="l.0"

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

 <xsl:template match="/PLANETS">

<HTML>

<HEAD>

<TITLE>

The Planets Table

</TITLE>

</HEAD>

<BODY>

<H1>

The Planets Table

</H1>

<TABLE BORDER="2">

<TD>Name</TD>

<TD>Mass</TD>

<TD>Radius</TD>

<TD>Day</TD>

<xsl:apply-templates/>

</TABLE>

</BODY>

</HTML>

 </xsl:template>

 <xsl:template match="PLANET">

<TR>

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

<TD><xsl:apply-templates select="MASS"/></TD>

<TD><xsl:apply-templates select="RADIUS"/></TD>

<TD><xsl:apply-templates select="DAY"/></TD>

</TR>

 </xsl:template>

 <xsl:template match="MASS">

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

<xsl:text> </xsl:text>

<xsl:value-of select="@UNITS"/>

 </xsl:template>

 <xsl:template match="RADIUS">

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

<xsl:text> </xsl:text>

<xsl:value-of select="@UNITS"/>

 </xsl:template>

 <xsl:template match="DAY">

<xsl:message terminate="yes">

Sorry. DAY information is classified.

</xsl:message>

 </xsl:template>

</xsl:stylesheet>

Вот

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

C:\planets>java org.apache.xalan xslt.Process -IN planets.xml -XSL message.xsl -OUT planets.html

file:///C:/XSL/messages/message.xsl: Line 49; Column 38;

Sorry. DAY information is classified.

XSLT Error (javax.xml.transform.TransformerException):

Stylesheet directed termination

При помощи элемента

<xsl:message>
можно выводить информацию о том, что происходит при обработке таблицы стилей, что может пригодиться не только для вывода ошибок и предупреждений, но и для отладки таблиц стилей.

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

Глава 4

Создание образцов выбора

До сих пор материал книги был достаточно очевиден, за исключением одного: несколько загадочных образцов выбора (match pattern). Мы работали с различными образцами выбора, такими как «/PLANETS» в элементах

<xsl:template>
, не предлагая систематического объяснения того, как в действительности работают эти образцы, — как в этом случае:

<xsl:template match="/PLANETS">

 <HTML>

<HEAD>

<TITLE>

The Planets Table

</TITLE>

</HEAD>

<BODY>

.

.

.

</BODY>

 </HTML>

</xsl:template>

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

<xsl:template>
,
<xsl:key>
и
<xsl:number>
; с элементом
<xsl:template>
мы работали с самого начала книги, элемент
<xsl:key>
мы увидим в главе 9 и элемент
<xsl:number>
— в главе 5. В частности, для выбора по образцу у элементов
<xsl:template>
и
<xsl:key>
используется атрибут
match
, а у элемента
<xsl:number>
— атрибуты
count
и
from
.

Поделиться с друзьями: