Функция URL-адреса XSL-FO в шаблон

Я использую Apache FOP версии 1.1 для создания pdf (из командной строки). Вот мой XSL, который отлично работает

<fo:table-row >
    <fo:table-cell >
        <fo:block >
            <fo:external-graphic content-height="9mm" content-width="9mm" height="10mm" width="10mm" scaling="non-uniform" src="url(./images/pict2.jpg)" />
        </fo:block>
    </fo:table-cell>
</fo:table-row >

Если я попытаюсь использовать шаблон, объявленный таким образом

<xsl:template name="myRow" >
    <xsl:param name="imgUrl"/>
    <fo:table-row >
        <fo:table-cell >
            <fo:block >
                <fo:external-graphic content-height="9mm" content-width="9mm" height="10mm" width="10mm" scaling="non-uniform" src="url($imgUrl)"/>
            </fo:block>
        </fo:table-cell>
    </fo:table-row >
</xsl:template>

и я называю это как

<xsl:call-template name="myRow">
    <xsl:with-param name="imgUrl" select="'./images/pict2.jpg'" />
</xsl:call-template>

изображение не отображается. Если я напишу select="./images/pict2.jpg" (без одинарных кавычек), параметр imgUrl будет нулевым. Как я могу передать URL-адрес и заставить его работать?


person Manticore    schedule 12.05.2014    source источник


Ответы (1)


Если вы хотите сослаться на переменную в атрибуте, вам нужно использовать шаблоны значений атрибутов.

Попробуйте эту строку вместо этого в своем шаблоне

<fo:external-graphic content-height="9mm" content-width="9mm" height="10mm" width="10mm" 
                     scaling="non-uniform" src="url({$imgUrl})"/>

Фигурные скобки указывают выражение, которое нужно вычислить, а не выводить буквально (что и происходит с вашим кодом в данный момент. Он буквально выводит текст $imgUrl, а не значение переменной ).

person Tim C    schedule 12.05.2014