Как динамически назначить идентификатор блоку xsl fo, который находится внутри цикла for? - PullRequest
0 голосов
/ 06 июля 2018

Я хочу вызвать блок xsl fo, который генерируется внутри цикла for с гиперссылкой. Я хотел бы назначить разные идентификаторы для блока в каждой итерации цикла for. Так что я могу вызывать разные блоки в разных местах. Пожалуйста, предложите любой подход.

Пожалуйста, посмотрите на мой xslt ниже.

<fo:basic-link internal-destination="$BlockId" color="blue">  
    <xsl:value-of select="sampledetail/field[@id='SampleNo']/text()" />
</fo:basic-link>
.
.
.
.
<xsl:for-each select="report/content">
   <xsl:variable name="BlockId">
      <xsl:value-of select="sampledetail/field[@id='SampleNo']/text()" />
   </xsl:variable>
   <fo:block id="**$BlockId**">
      <xsl:apply-templates select="sampledetail" />
   </fo:block>
<xsl:for-each>

1 Ответ

0 голосов
/ 06 июля 2018

Похоже, вы должны использовать Шаблоны значений атрибутов здесь. Итак, синтаксис, который вы должны использовать, это ...

<fo:block id="{$BlockId}">

Итак, возможно, ваш пример кода должен выглядеть следующим образом

<xsl:for-each select="report/content">
   <xsl:variable name="BlockId" select="sampledetail/field[@id='SampleNo']/text()" />
   <fo:basic-link internal-destination="{$BlockId}" color="blue">  
      <xsl:value-of select="$BlockId" />
   </fo:basic-link>
</xsl:for-each>
.
.
.
.
<xsl:for-each select="report/content">
   <xsl:variable name="BlockId" select="sampledetail/field[@id='SampleNo']/text()" />
   <fo:block id="{$BlockId}">
      <xsl:apply-templates select="sampledetail" />
   </fo:block>
<xsl:for-each>
...