Войти

Неймспейсы в 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
Плохо

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

В Ташкенте пройдёт международная выставка франшиз Franchi...

В Ташкенте пройдёт международная выставка франшиз Franchising & Distribution Expo Uzbekistan

Узбекистан готовится к четвертой международной выставке Franchising Distribution Expo Uzbekistan. Узнайте, как это мероприятие способствует развитию франчайзинга и дистрибуции в регионе.
Франшизы и франчайзинг в Азербайджане

Франшизы и франчайзинг в Азербайджане

Откройте для себя потенциал франшиз в Азербайджане! Узнайте о вариантах инвестирования, туристических перспективах и особенностях экономики.
Франшизы в Перми

Франшизы в Перми

Когда-то в Пермском крае был так называемый «франчайзинговый бум». Как сейчас развиваются франшизы в Перми и почему?
Мамы-предприниматели вновь получат поддержку на запуск св...

Мамы-предприниматели вновь получат поддержку на запуск своего дела

Поддержка женщин-предпринимателей: гранты и обучение. Уникальная возможность для мам. Важные детали программы.

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

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