2016-09-23 64 views
0

我使用XSL渲染图像(在服务器端),我想尽可能通用。使用部分XML变量填充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

你需要的时候,你要直接在属性计算的表达式用在这里Attribute Value Templates它不工作

<fo:region-before extent="8.4cm" background-image="{$shows/all/show[@id=2]/backgroundimage}"/>