XML - статьи



              

Сортировка


В предыдущих примерах порядок строк в таблице полностью соответствовал группам тегов в XML-файле. Этот порядок можно изменять. Добавим в тег

<xsl:for-each select="tutorial/enimals/dogs/dog">

атрибут order-by

<xsl:for-each select="tutorial/enimals/dogs/dog" order-by="dogName">

Наша таблица примет вид (, ).

Кличка Вес Цвет
Бобик 2 кг бело-серый
Трезор 25 кг черный
Тузик 10 кг белый с черными пятнами
Шарик 18 кг рыжий с черными подпалинами

Более интересные результаты мы получим, если попытаемся отсортировать таблицу по столбцу "Вес". Вначале попробуем сделать по аналогии с предыдущим примером - атрибут order-by="dogName" заменим на order-by="dogWeight". Результат приведен ниже (, ).

Кличка Вес Цвет
Тузик 10 кг белый с черными пятнами
Шарик 18 кг рыжий с черными подпалинами
Бобик 2 кг бело-серый
Трезор 25 кг черный

Таблица действительно отсортирована по столбцу "вес", но это не числовая, а строковая сортировка! Для того, чтобы браузер воспринял значения как числа, ему необходимо об этом сказать, - вместо order-by="dogWeight"

необходимо написать order-by="number(dogWeight)". Теперь мы получили правильный результат (, ).

Кличка Вес Цвет
Бобик 2 кг бело-серый
Тузик 10 кг белый с черными пятнами
Шарик 18 кг рыжий с черными подпалинами
Трезор 25 кг черный

Приведем теперь пример сортировки по нескольким столбцам. Различные элементы в атрибуте order-by должны разделяться символом ";" -   order-by="number(dogWeight); dogName" (, ). Таблица приведена ниже.

Кличка Вес Цвет
Трезор 10 кг черный
Тузик 10 кг белый с черными пятнами
Бобик 18 кг бело-серый
Шарик 18 кг рыжий с черными подпалинами

Следующий пример работает только под управлением XML-парсера версии 3. В нем строки сортируются по одному столбцу - по кличке собаки. Этот пример уже приводился выше, однако теперь мы используем новый синтаксис (, ).




Содержание  Назад  Вперед