Войти

Неймспейсы в XSLT

Для начала уясним, что вообще делают эти конструкции, начинающиеся с xmlns. У всесильного W3C на эту тему тоже есть свой документ, озаглавленный «Неймспейсы в XML». Почитав его (перед сном это делать не рекомендуется), мы узнаем, что основной причиной возникновения неймспейсов явилась необходимость отличать XML-элементы, обладающие одним и тем же именем, но имеющие разный смысл и предназначение, относящиеся к разным словарям разметки.

Атрибут version является обязательным, равно как и объявление XSL-неймспейса xmlns:xsl="http://www.w3.org/1999/XSL/Transform" (иначе было бы неясно, где в шаблоне сам XSL-код). А вот зачем нам нужна запись xmlns="http://www.w3.org/1999/xhtml", не очень понятно.

Хорошим примером такого разделения может служить как раз милый нашему сердцу XSL. Скажем, элемент <xsl:text> имеет неймспейс xsl и является управляющим XSL-кодом, тогда как элемент <text> неймспейса не имеет и просто отправляется на вывод, несмотря на то что имя у него тоже text.

Чтобы использовать какой-то неймспейс в своем XML (а XSL есть XML), его надо сначала объявить. Продолжая изучать вышеозначенный документ, мы обнаруживаем, что существуют два способа объявления неймспейсов: с префиксом и без префикса.

Следует также понимать, что XML-процессоры не «ходят» в интернет, чтобы по этому адресу чего-то скачать. Это всего лишь уникальный идентификатор. Однако здесь возникает вопрос: а что же он тогда выглядит как адрес в интернете? Почему вместо http://www.w3.org/1999/XSL/Transform не писать, например, «у-вас-ус-отклеился»? Ответ прост: когда-то условились, что по этому адресу URI в интернете должна висеть маленькая страничка, в двух словах рассказывающая, что это за URI и какой цели служит. И страничка эта предназначена для человека, а не для машины.

Итак, объявив неймспейс с префиксом, мы теперь можем его использовать — писать элементы, имеющие этот неймспейс. Как это делать, вы наверняка знаете:

Ровно так все делают в XSL-коде, когда хотят использовать какой-то XSL-элемент, например <xsl:template>. Как я уже сказал, префикс может быть любым, поэтому можно писать и так:

Но все привыкли использовать xsl — это коротко и удобно.

Элемент <html> и все его потомки законно получают XHTML-неймспейс. Но у абзацев-то он null (ибо в их файле import.xsl xmlns не указан), поэтому абзацы бунтуют и говорят нам: «Не хотим наследовать ваш XHTML. У нас свой неймспейс null». Это выражается в записи xmlns="" у каждого абзаца, которая как раз и означает, что неймспейс этого элемента null.

Вывод: надо или во всех XSL-файлах объявлять неймспейс по умолчанию, или во всех не объявлять. Лучше всего не объявлять — так создаётся меньше суеты в коде.

И на закуску еще одно интересное применение неймспейсов с префиксом — объявление приватных переменных и шаблонов. Всем нам иногда нужны глобальные переменные. Например, когда хочется объявить какую-нибудь константу в шаблоне, решающем определенную задачу. Импортирование такого шаблона с глобальной переменной неминуемо ведет к тому, что эта переменная будет видна везде в импортирующих шаблонах. Поэтому хорошим тоном является использование префикса в имени переменной. Такой же финт можно проделать и с шаблонами-матчами, а также именованными шаблонами, которые в XSL-файле являются вспомогательными и не должны быть использованы снаружи.


Оцените статью
0
Полезно
0
Интересно
0
Средне
0
Плохо

Смотрите также

Всероссийская франчайзинговая премия: обзор номинации «Гу...

Всероссийская франчайзинговая премия: обзор номинации «Гуру красоты»

Представляем вашему вниманию участников всероссийской франчайзинговой премии в номинации «Гуру красоты». Рассказываем о номинациях, компаниях и франшизах! Голосуйте за своих фаворитов!
Что такое инвестиции в драгоценные металлы?

Что такое инвестиции в драгоценные металлы?

Инвестиции в драгоценные металлы – способ обогащения людей, который существует на нашей планете уже несколько тысячелетий. Начиная от обмена драгоценностей на предметы первой необходимости, до созд...
Всероссийская франчайзинговая премия: обзор номинации «Ги...

Всероссийская франчайзинговая премия: обзор номинации «Гиганты отрасли»

Представляем вашему вниманию участников всероссийской франчайзинговой премии в номинации «Гиганты отрасли». Рассказываем о номинациях, компаниях и франшизах! Голосуйте за своих фаворитов!
Итоги всероссийской франчайзинговой премии БИБОСС 2024

Итоги всероссийской франчайзинговой премии БИБОСС 2024

Cегодня мы подводим итоги «Всероссийской франчайзинговой премии БИБОСС». Кто победил, как складывалось голосование аудитории, какой выбор сделали эксперты, совпали ли эти голоса и какой приз ожидае...

Комментарии •0

Пожаловаться на комментарий