使用部分工作的XML变量填充XSL模板

时间:2016-09-23 15:15:39

标签: xml xslt

我使用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文件

,它不起作用

1 个答案:

答案 0 :(得分:1)

如果希望直接在属性

中评估表达式,则需要在此处使用Attribute Value Templates
<fo:region-before extent="8.4cm" background-image="{$shows/all/show[@id=2]/backgroundimage}"/>