仕事で、XSL を使用して PDF を生成するという楽しい仕事を与えられました。私が扱っているXML構造は次のようになります
<records>
<topLevel>
<topLevelID></topLevelID>
<secondLevel>
<secondLevelID></secondLevelID>
<thirdLevel>
</thirdLevel>
<thirdLevel>
</thirdLevel>
</secondLevel>
</topLevel>
<topLevel>
<topLevelID></topLevelID>
<secondLevel>
<secondLevelID></secondLevelID>
<thirdLevel>
</thirdLevel>
<thirdLevel>
</thirdLevel>
</secondLevel>
</topLevel>
</records>
XML のより意味のある例を挙げようと思いますが、存在する可能性のある法的な境界に近づく気はありません。thirdLevel
その XML 構造では、ノードごとに PDF にテキストのブロックを出力する必要があります。私がこれまでに持っているXSLは次のようなものです
<xsl:for-each select ="topLevel">
<xsl:variable name="topID" select="topLevelID"/>
<xsl:for-each select ="secondLevel">
<xsl:variable name="secondID" select="secondLevelID"/>
<xsl:for-each select="thirdLevel">
<fo:block-container position="absolute" height="12.8pt" width="220.8pt" left="160pt" display-align="auto">
<xsl:attribute name="top">
<xsl:value-of select="concat(193 + [whatshouldgohere]), 'pt')"/>
</xsl:attribute>
<fo:block font-size="7pt">
<xsl:call-template name="insertThirdLevel"/>
</fo:block>
</fo:block-container>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
基本的に、top 属性に何らかの値を追加して、各thirdLevel
ノードのテキストがそれぞれの行に表示されるようにする必要があります。ID による加算/乗算 (1 から始まり、セットごとに 1 ずつ増加) と の組み合わせを使用してみましたが、position()
うまくいかないようです。