В начало презентации   Назад   Дальше   В конец презентации

Продолжим..


Рассмотрим теперь структуру файла student.xsl.ru, который и определяет совершаемые преобразования для отображения информации о выбранном студенте/сотруднике для последующего её изменения.

Заметим, что XSL-файл является одной из разновидностей XML-файлов. Он не содержит пользовательских данных, но формат его тот же самый. Файл содержит элемент верхнего уровня "xsl:transform", а далее идет дерево правил преобразования. Сначала выводим фотографии, если они есть: элемент шаблона - - позволяет выбрать и просмотреть все группы информации из XML файла, ограниченные тегами . Аналогичным образом мы выводим всю информацию о студенте/ сотруднике, осуществляя поиск в файле с данными тегов, имена и количество которых мы заранее знаем: name, login, email, ...

Причём вывод этих данных мы осуществляем в данном случае в виде таблицы, заключённой в теги формы. Тег
является контейнером для элементов управления и предоставляет возможность вводить информацию и отправлять ее на сервер, что нам и нужно для возможности изменения данных и последующего сохранения их.

Оператором for-each переберём все элементы XML файла данных и применим для каждой группы элементов свой способ вывода. Причём функции name() и text() будут возвращать соответственно имя и содержимое элемента.

Каждый элемент поместим в элемент управления INPUT и будем передавать для изменения методом POST. Для добавления нового поля используем SELECT, в котором перечислим все возможные элементы. Причём учтём возможность существования как английских, так и русских и полей без указания языка. При передаче будем добавлять к имени элемента управления INPUT окончание _ru, _en и _. А затем при обработке и сохранении с помощью них будем определять аттрибут-язык поля.

При наличии фотографии организуем возможность загрузки-обновления фотографии.

Естественно желание иметь возможность удалять поля. Реализуем это с помощью CHECKBOX`ов, имя которых будет иметь следующий вид: "chbox + имя поля", значение же будет определять язык. При обработке деинициализируем соответствующие поля и сохраняем все оставшиеся. В итоге имеем схему - передаем методом POST все необходимое, затем что-то используем и удаляем всё, кроме выводимого в XML файл.

Таким образом принцип преобразования XML файла в XHTML ясен, как впрочем и обратный процесс, заключающийся в сохранении нужных и изменённых полей в тот же XML файл с данными. По сути происходит полная перезапись файла данных.

Интересен механизм хранения переменной, с помощью которой определяется текущий редактируемый файл студента. Используем сессии. То есть в массив SESSION[] помещаем при первом использовании нужную переменную, а затем проверяем и, если она не определена, извлекаем содержимое из этого массива, таким образом нет нужды придумывать неочевидный и загромаждающий код программы механизм передачи между скриптами важнейшей информации, что приводит к повышению универсальности программного кода.