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

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

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

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

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

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




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

Ваш адрес email не будет опубликован.