Bei der Arbeit wurde mir die lustige Aufgabe gegeben, PDFs mit XSL zu erzeugen. Die XML-Struktur mit Ich arbeite ähnlichUpdate-Attribut in XSL for-each
<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>
Ich würde versuchen, ein aussagekräftigere Beispiel für die XML zu geben, aber ich fühle mich nicht wie alle rechtlichen Grenzen nähern, die bestehen kann. Mit dieser XML-Struktur muss ich einen Textblock in der PDF für jeden thirdLevel
Knoten ausgeben. Die XSL ich bisher habe, ist wie
<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>
Grundsätzlich, ich brauche einen Wert nach oben Attribute hinzufügen den Text für jeden thirdLevel
Knoten erscheinen zu lassen, in einer eigenen Zeile. Ich habe versucht, Kombinationen von Addieren/Multiplizieren mit der ID (beginnt bei 1 und erhöht sich um 1 für jeden Satz) und position()
, aber ich kann nicht scheinen, es richtig zu machen.
"concat ((193 * Position()), 'pt')" funktionieren sollte, wie Hast du Multiplikation gemacht? – annakata
Das Problem, das ich bekam, ist, dass ich im Grunde drei verschiedene Positionen habe, die ich für die drei verschiedenen für jeden Level verwenden könnte. Mit der Art und Weise, wie die Daten in der XML-Datei angeordnet sind, scheint die Verwendung von position() dazu zu führen, dass der Text zeitweise über anderem Text ausgegeben wird. – bcasp