Au travail, j'ai eu la tâche amusante de générer des fichiers PDF avec XSL. La structure XML Je travaille avec est similaire àAttribut de mise à jour dans XSL pour chaque
<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>
Je voudrais essayer de donner un exemple plus significatif du XML, mais je ne me sens pas comme approche de frontières juridiques qui peuvent exister. Avec cette structure XML, je dois sortir un bloc de texte dans le PDF pour chaque nœud thirdLevel
. Je XSL jusqu'à présent est comme
<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>
Fondamentalement, je dois ajouter une certaine valeur à l'attribut haut pour rendre le texte pour chaque nœud thirdLevel
apparaît sur sa propre ligne. J'ai essayé d'utiliser des combinaisons d'ajout/multiplication par l'ID (commence à 1 et augmente de 1 pour chaque ensemble) et position()
, mais je ne peux pas sembler avoir raison.
"concat ((193 * Position()), 'pt')" devrait fonctionner, comment faisiez-vous de la multiplication? – annakata
Le problème que j'ai rencontré est que j'ai essentiellement trois positions différentes que je pourrais utiliser pour les trois différents pour chaque niveau. De plus, avec la façon dont les données sont disposées dans le XML, l'utilisation de position() semble provoquer la sortie du texte par-dessus le reste du texte. – bcasp