=> Главная База Знаний Xslt Чтение значений атрибутов


Чтение значений атрибутов

Чтение значений атрибутов

Чтобы получить доступ к значению атрибута при помощи XPath, нужно добавить к имени атрибута префикс @, например: "

@src
", "
@height
", "
@width
" и т.д.

Для выбора любого атрибута можно применить выражение "

@*
". Чтобы сослаться на атрибут
UNITS
в каждом элементе
<MASS>
,
<RADIUS>
и
<DAY>
, следует использовать выражение "
@UNITS
". Следовательно, получить значения и отобразить единицы (unit) каждого измерения в
planets.xml
можно так (листинг 3.3).

Листинг 3.3. Чтение значений атрибутов

<?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 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:value-of select="@UNITS"/>

 </xsl:template>


 <xsl:template match="RADIUS">

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

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

 </xsl:template>


 <xsl:template match="DAY">

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

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

 </xsl:template>

</xsl:stylesheet>

Результаты работы показаны на 1, Как видите, теперь мы извлекли строковое значение атрибута UNITS и отобразили его.

Чтение значений атрибутов

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


Рисунок 3.1 не совсем точен: обратите внимание на то, что между значением и соответствующей единицей измерения в таблице нет пробела. Процессор XSLT просто поместил в результирующее дерево текст без каких-либо разделителей между текстовыми узлами. Хотя это в точности соответствует требованиям рекомендации XSLT, нам бы хотелось, чтобы элементы таблицы выглядели как «1516 miles», а не «1516miles». Как нам добавить этот дополнительный пробел?