Книга: XSLT

Выбор атрибутов

Выбор атрибутов

Как было показано в главе 3, «Создание и применение шаблонов», можно выбирать атрибуты, если предварять их имена префиксом @. Вы уже работали с атрибутом UNITS, который поддерживают большинство детей элементов <PLANET>:

<PLANET>
 <NAME>Earth</NAME>
 <MASS UNITS="(Earth = 1)">1</MASS>
 <DAY UNITS="days">1</DAY>
 <RADIUS UNITS="miles">2107</RADIUS>
 <DENSITY UNITS="(Earth = 1)">1</DENSITY>
 <DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии-->
</PLANET>

Чтобы извлечь единицы измерения и отобразить их вместе со значениями массы и т.п., можно выбрать атрибут UNITS при помощи @UNITS (листинг 4.1).

Листинг 4.1. Выбор атрибутов

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/PLANETS">
  <HTML>
   <HEAD>
    .
    .
    .
   </HEAD>
   <BODY>
    .
    .
    .
   </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"/></ТD>
  </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>

Теперь результирующая HTML-таблица включает не только значения, но и их единицы измерения:

<HTML>
 <HEAD>
  <TITLE>
   The Planets Table
  </TITLE>
 </HEAD>
 <BODY>
  <H1>
   The Planets Table
  </H1>
  <TABLE>
   <TR>
    .
    .
    .
   <TR>
    <TD>Mercury</TD>
    <TD>.0553 (Earth = 1)</TD>
    <TD>1516 miles</TD>
   </TR>
   <TR>
    <TD>Venus</TD>
    <TD>.815 (Earth = 1)</TD>
    <TD>3716 miles</TD>
   </TR>
   .
   .
   .
  </TABLE>
 </BODY>
</HTML>

Для выбора всех атрибутов элемента можно также использовать подстановку. Например, "PLANET/@*" выбирает все атрибуты элементов <PLANET>.

Оглавление книги


Генерация: 0.052. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз