在XSLT中动态更改页眉

时间:2015-02-02 14:15:46

标签: xml xslt xsl-fo

XSLT中页面标题的动态更改

我希望相同的Image在Header中,但是图像上的内容应该根据XML节点中的值动态更改

<fo:flow flow-name="header">
  <fo:table>
     <fo:table-body>
          <fo:table-cell border="0pt">
            <fo:block>
               <fo:external-graphic ID="headerlogo" src="url('imgae_url')" content-width="50%" content-height="50%">
                <fo:table-cell border="0pt">
                  <fo:block margin-top="1.5cm" margin-right="1.2cm" text-align="left" >
                    <fo:inline font-size="30pt" color="white" >
                      <xsl:value-of select="path_url"/>
                    </fo:inline>
                  </fo:block>
                </fo:table-cell>
              </fo:external-graphic>
            </fo:block>
          </fo:table-cell>
         </fo:table-body>
      </fo:table>
    </fo:flow>

1 个答案:

答案 0 :(得分:4)

正如@potame在评论中已经提到的那样,<fo:marker><fo:retrieve-marker>是专为此设计的。既然你没有给出任何xml我创建了一个简单的例子来展示如何检索标记及其背后的逻辑,那么你应该能够适应你的代码。

<fo:flow flow_name="xsl-region-before">
    <fo:table table-layout="fixed" width="100%">
        <fo:table-body>
            <fo:table-row>
                <fo:table-cell>
                    <fo:block>
                        <!-- Retrieve the marker value -->
                        <fo:retrieve-marker retrieve-class-name="header_value"/>
                    </fo:block>
                </fo:table-cell>
            </fo:table-row>
        </fo:table-body>
    </fo:table>
</fo:flow>

然后在您的代码中的某个位置(可能在region-body中,您将设置marker值(在您的情况下,如果我理解您的问题,它将是路径网址),具体取决于您的需求条件。喜欢:

<xsl:when test="condition">
    <fo:marker marker-class-name="header_value"/>
        <xsl:value-of select="path_url"/>
    </fo:marker>
</xsl:when>
<xsl:when test="condition2">
    <fo:marker marker-class-name="header_value"/>
        <xsl:value-of select="path_url2"/>
    </fo:marker>
</xsl:when>