XSLT — страница 38 из 124

     The Planets Table

NameMassRadiusDay

 .

 .

 .

А вот результат — как видите, единственной планетой, удовлетворявшей используемому образцу, была Земля (Earth).

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

   The Planets Table

NameMassRadiusDay
Earth1 (Earth = 1)2107 miles1 days

Применение операции Or

При помощи операции Or (или), |, можно осуществлять выбор по нескольким возможным образцам, что очень удобно с ростом сложности документов. В следующем примере я хочу отобразить элементы

и
полужирным, что задается тегом HTML
<В>
. Для выбора либо элементов
, либо
в новом правиле я использую операцию Or:

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

    .

    .

    .





Вот результаты; заметьте, что значения имени и массы заключены в элементы

<В>
:

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

  .

  .

  .

Mercury

.0553

1516 miles

58.65 days

Venus

.815

3716 miles

116.75 days

Earth

1

2107 miles

1 days

Операцию | можно применять к любым допустимым образцам — например, в таких выражениях, как "

PLANET|PLANET//NAME
"; можно использовать несколько операций | — например, "
NAME|MASS|DAY
" и т.п.

Примеры образцов

Изучать образцы лучше всего на примерах. Предположим, что нам требуется преобразовать

planets.xml
в
planets.html
, но сохранить только первую планету, Меркурий. Это можно сделать при помощи предиката
[position()<2]
, так как позиция первой планеты равна 1, следующей — 2, и т.д. Заметьте, однако, что <; является управляющим символом для процессоров XSLT, начинающим разметку, поэтому вместо < необходимо использовать
<
. И отметьте, что для того чтобы убрать из
planets.xml
другие элементы, для них нужно предоставить пустой шаблон, что можно сделать при помощи предиката
[position()>=2]
(листинг 4.10).

Листинг 4.10. Выбор только Меркурия

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

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

     The Planets Table

NameMassRadiusDay





<