=> Главная База Знаний Xslt Элемент <xsl:text>


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

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

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

<xsl:text>
, который используется для вставки символьного текста непосредственно в дерево вывода. У этого элемента только один атрибут:

• 

disable-output-escaping
. Устанавливается в
yes
для того, чтобы такие символы, как < и >, выводились буквально, а не как
<
и
>
. По умолчанию установлен в
no
.

Этот элемент может содержать только текстовый узел.

Текстовые узлы создаются при помощи элемента

<xsl:text>
, позволяющего по ходу дела замещать элементы целиком на текст. Одна из целей применения
<xsl:text>
— сохранить символы-разделители, как в следующем примере (листинг 3.4), в котором элемент
<xsl:text>
используется для вставки пробелов.

Листинг 3.4. Вставка пробелов в таблицу стилей

<?xml version="1.0"?> 

<xsl:stylesheet version="1.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>

     <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>

  </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:value-of select="."/>

  <xsl:text> </xsl:text>

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

 </xsl:template>

</xsl:stylesheet>

Новый результат виден на 2, на котором между числовыми значениями и их единицами измерения вставлены пробелы.

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

2. Вывод значений атрибутов, второй вариант 


Как видите, элемент

<xsl:text>
весьма удобен. Тем не менее вам следует знать вот что: по умолчанию элементы
<xsl:text>
заменяют символы, которые могут входить в разметку, на эскейп-последовательности. Например,
<xsl:text>Here is а greater-than sign: ></xsl:text>
будет выведено как «Here is a greater-than sign: >,», а не как «Herе is a greater-than sign: >». А если попытаться использовать < внутри элемента
<xsl:text>
, процессор XSLT посчитает, что вы пытаетесь открыть элемент внутри элемента
<xsl:text>
, что неверно. Как же вывести значащие символы, такие как < и >, если есть необходимость? Это можно сделать путем отключения вывода ESC-последовательностей (disabling output escaping).

УСОВЕРШЕНСТВОВАНИЯ В XSLT 2.0

Один из вопросов, которые призван решить XSLT 2.0, это упрощение импорта подобного текста без разбора из других файлов.