将XSL-FO url函数转换为模板

时间:2014-05-12 15:00:55

标签: url xslt xsl-fo param

我正在使用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参数为null 我如何通过网址并使其正常工作?

1 个答案:

答案 0 :(得分:0)

如果要引用属性中的变量,则需要使用属性值模板。

请在模板中尝试使用此行

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

花括号表示要计算的表达式,而不是字面输出(这是您的代码目前正在发生的事情。它实际上是输出文本 $ imgUrl ,而不是值变量)。