xsl

Использование нескольких входных документов

Преобразование может захватывать помимо основного входного документа и другие xml документы.

Все это делается с помощью функции document (). Вы просто указываете единственным параметром этой функции url адрес любого xml документа. Функция автоматом загружает этот документ. И получается, что сама функция document () является еще одним документом, еще одной dom моделью, которую можно использовать.

<xsl:copy-of select="document('my.html')/html/body/h1"/>

Некоторые преобразователи могут запрещать обращение к внешним файлам из-за политики безопасности. У функции document () есть одна недокументированная особенность — если параметром этой функции передать пустую строку, то загрузится сам xslt, т.е. грузится сам файл преобразования в виде dom модели. Тогда в сам xslt можно запихать то, что нам надо загрузить (но официально запрещено из соображений безопасности).

Один нюанс — к ‘запихиваемой’ информации надо прописать свое пространство имен (предварительно придумайте его сами), иначе процессор будет ругаться. Тогда получается, что мы сами можем безгранично расширять свой xml документ.




Добавить комментарий

Ваш e-mail не будет опубликован.