Войти

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

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

Как открыть мужскую парикмахерскую с нуля | Интервью влад...

Как открыть мужскую парикмахерскую с нуля | Интервью владельца сети с оборотом 1 млрд. рублей

Как открыть мужскую парикмахерскую с нуля? Пошаговый гайд от основателя сети «МУЖИКИ ПРО» (160+ салонов, оборот 1 млрд руб.). Узнайте: стартовые вложения, выбор локации, обучение персонала, маркети...
LEVITA — лидер индустрии: победа в престижной премии Russ...

LEVITA — лидер индустрии: победа в престижной премии Russian Fitness Award 2024

"LEVITA — победитель Russian Fitness Awards 2024! 🏆 Крупнейшая сеть студий балета и растяжки с 450+ локациями. Узнайте, как компания стала лидером индустрии и какие тренды женского фитнеса задает. ...
Русские в Латинской Америке: как два предпринимателя из С...

Русские в Латинской Америке: как два предпринимателя из Сибири построили крупнейшую VR-сеть в регионе

История успеха сибирских предпринимателей в Латинской Америке: как два выходца из России создали крупнейшую сеть VR-развлечений в регионе. Узнайте о трудностях стартапа за границей, секретах масшта...
«Хеликс» подвел итоги 2024 года: рост выручки на 24%, рас...

«Хеликс» подвел итоги 2024 года: рост выручки на 24%, расширение сети и цифровые инновации

Узнайте, как крупнейшая частная лабораторная сеть России достигла роста выручки на 24%, открыла 197 новых точек и внедрила уникальные ИТ-решения. Главные достижения года: экспансия в Казахстан, зап...

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

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