2016-09-23 57 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}"/>