在 XSLT 中动态更改页眉

Dynamically change page header in XSLT

XSLT 中页眉的动态变化

我希望相同的图像位于页眉中,但是图像上的内容应根据 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>

正如@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 值(在你的情况下,如果我理解你的问题,它将是一条路径 url)取决于根据您想要的条件。类似 :

<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>