#xml #xslt
Вопрос:
У меня есть следующий XML-документ, который я хочу включить в состав всех файлов на веб-сайте:
XML-документ заголовка (выходные данные указаны ниже как заголовок.aspx):
<header>
<div class="welcome">Hello there!</div>
</header>
Это часть глобального XSL-файла, выполняемого на всех страницах, которая вызывает вышеуказанное:
Глобальный файл XSL
<xsl:template name="my-header">
<xsl:call-template name="my-output">
<xsl:with-param name="path">/inc/header.aspx</xsl:with-param>
</xsl:call-template>
</xsl:template>
Что я хотел бы сделать, так это иметь возможность настраивать вывод файла header.aspx в зависимости от того, где он выводится. Например, если он выводится на файл, указанный в каталоге /test1, он может выводиться как:
<header>
<div class="welcome">Thank you for subscribing!</div>
</header>
Но в файле в каталоге /test2 это может быть:
<h2 class="welcome">Sad to see you go!</div>
И всякий раз, когда это не указано, будет выводиться содержимое по умолчанию.
Есть ли у меня какие-либо варианты для этого? Я понимаю, что мог бы создать отдельные заголовки и вызывать их на основе операторов xsl:choose, но я бы предпочел иметь один файл включения, так как большая часть содержимого останется неизменной на всех страницах.
Ответ №1:
Вы можете указать URI файла заголовка в качестве параметра преобразования и загрузить файл, используя document()
функцию с этим URI в качестве аргумента.
Глобальный параметр таблицы стилей объявляется с использованием xsl:param
элемента верхнего уровня (верхний уровень означает, что он является дочерним элементом xsl:stylesheet
), и способ ввода значения зависит от API процессора, который вы используете для выполнения таблицы стилей.