我使用XSL渲染图像(在服务器端),我希望尽可能通用。
例如我得到了这个变量
<xsl:variable name="shows" select="document('includes/shows.xml')"/>
引用XML文件。这是XML的内容
<show id='2'>
<logo>url('images/background.png')</logo>
<border>8pt solid #f9c514</border>
<bordertop>6pt solid #f9c514</bordertop>
<headercolor>#f9c514</headercolor>
<backgroundimage>svg/bg.svg</backgroundimage>
</show>
包含许多不同的节目,每个节目的格式如上。使用它,并提供正确的ID,我的变量将填充这些值。当我使用它时:
<xsl:value-of select="$shows/all/show[@id=2]/logo"/>
正确评估并显示正确的图像。边框和边框颜色相同。因此,这不起作用:
<fo:simple-page-master master-name="thepage" page-width="4cm" margin-top="0.6cm" page-height="8.4cm">
<fo:region-body region-name="xsl-region-body"/>
<fo:region-before extent="8.4cm" background-image="$shows/all/show[@id=2]/backgroundimage"/>
</fo:simple-page-master>
虽然它没有崩溃,但图像没有任何bg全部。我检查了这个值,我正确地得到了svg/bg.svg
,当我直接放置background-image='svg/bg.svg'
它也有效。任何想法,如果它来自XML文件
答案 0 :(得分:1)
如果希望直接在属性
中评估表达式,则需要在此处使用Attribute Value Templates<fo:region-before extent="8.4cm" background-image="{$shows/all/show[@id=2]/backgroundimage}"/>