2017-09-15 1 views
1

Mon problème est basé sur une table avec deux cellules. S'il y a plus de texte dans la cellule, il faut l'étendre dans la direction du bas. Dans ce cas, l'autre bloc est plus court (notez que la cellule du tableau est aussi grande que l'autre).XSLT - Le bloc doit s'adapter à la cellule

Fondamentalement, je veux faire une bordure autour de la cellule de la table. Mais ce sera une image comme une frontière. Je fais un rembourrage dans la cellule du tableau et la couleur de fond des blocs internes est blanche. Avec cette stratégie, cela ressemble à une frontière. Le problème est que le bloc de la seconde cellule est plus petit, donc il y a plus d'espace en dessous. La frontière devient incohérente.

The output looks like this:

Est-il possible à l'échelle du bloc pour s'adapter?

+2

Utilisez-vous XSLT pour créer une table HTML, une table XSL-FO? Vous devrez fournir les détails sur le format cible et la réponse n'est probablement pas spécifique à XSLT mais plutôt au format cible. –

+0

Je fais des fo: tables. Quoi d'autre avez-vous besoin de savoir? –

+2

Quel formateur FO utilisez-vous? Aussi, est-ce toujours deux colonnes et savez-vous toujours quelle colonne peut passer? –

Répondre

1

Le bloc contenant le texte d'une cellule est dimensionné pour s'adapter au texte. C'est pourquoi votre arrière-plan actuel est inégal.
Ce dont vous avez besoin est une couleur de fond pour toute la table: la taille de la table sera adaptée à la plus grande cellule. Si l'image se trouve dans un bloc fo: et que ce même bloc contient également la table, vous obtenez le résultat souhaité.

pseudocode:

<fo:block background-image="image.png"> 
    table goes here, with background-color="white" and a transparent border around the table to set the width/height of the visible portion of the background image. 
</fo:block> 

Modifier: commentaires a révélé plus de détails.
Avec la contrainte supplémentaire que la frontière devrait être autour de l'en-tête de table uniquement:

  1. Définir la table sans frontières.
  2. Insérez l'image d'arrière-plan dans les cellules d'en-tête.
  3. Placez le texte de la cellule d'en-tête dans un bloc avec une marge de par ex. 5 mm de tous les côtés.
  4. Pour les lignes de corps, spécifiez également une marge pour aligner le corps du texte sur le texte de l'en-tête.
+0

J'ai essayé d'éviter les tableaux dans les tableaux. Mais s'il n'y a pas d'autre moyen, je dois encore dire merci! :) Je pensais qu'il pourrait y avoir un attribut pour s'adapter à la table-cellule, ou un élément qui fait cela. –

+0

mais vous ne placez pas une table dans une table, vous placez une table dans un bloc. – Hobbes

+0

Il était bon de mettre une bordure autour d'une table-cellule. La bordure devrait être seulement autour de l'en-tête. Dans ce cas, il y a une table dans une table. Je ne pense pas qu'il existe une solution de contournement cependant. –