XSLT | страница 78



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

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

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

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

>

>

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

>  

>   

>    </code></p><p><code>>     The Planets Table</code></p><p><code>>    

>   

>   

>    

>     The Planets Table

>   

>    

>    

>     

>     

>     

>     

>    

NameMassRadiusDay

>   

>  


>  

>  

>   

>   

>   

>  


>  

>  


>  

>  


>  

>

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

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


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

Элемент

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