comment aligner le texte et les données de la table dans le centre de xsl
je suis en train de mettre mes données et de tables dans le centre de la page, comme indiqué dans le tableau ci-dessous. mais j'ai fait seulement la table des trucs données restantes alignements et réglages, je ne suis pas capable de le faire, comme je ne suis pas familier avec xsl.
et voici mon code xsl :
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1" />
<xsl:template match ="records">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="list">
<fo:region-body></fo:region-body>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="list">
<fo:flow flow-name="xsl-region-body">
<fo:block text-align="right">
<fo:table >
<fo:table-body>
<xsl:for-each select="./list">
<xsl:if test="position()<= 1">
<fo:table-row>
<xsl:for-each select="./item">
<fo:table-cell text-align="center"
width="100px" border-color="black" border="2px">
<fo:block color="green" font-family="monospace"
font-size="10pt" padding="5pt" space-before="5pt" space-after="5pt">
<xsl:attribute name="color">
<xsl:choose>
<xsl:when test="position() = 1 ">
<xsl:text>black</xsl:text>
</xsl:when>
<xsl:when test="position() = 2 ">
<xsl:text>#333399</xsl:text>
</xsl:when>
<xsl:when test="position() = 3 ">
<xsl:text>#FF9900</xsl:text>
</xsl:when>
<xsl:when test="position() = 4 ">
<xsl:text>#96CCD8</xsl:text>
</xsl:when>
<xsl:when test="position() = 5 ">
<xsl:text>#19A347</xsl:text>
</xsl:when>
<xsl:when test="position() = 6 ">
<xsl:text>green</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>white</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="val"/>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="./list">
<xsl:if test="position()!=1">
<fo:table-row>
<xsl:for-each select="./item">
<fo:table-cell border="4px" text-align="center">
<fo:block font-family="monospace" border-color="black"
border-style="solid" font-size="12pt" wrap-option="no-wrap"
padding="5pt" space-before="5pt" space-after="5pt">
<xsl:attribute name="background-color">
<xsl:choose>
<xsl:when test="position() = 1 ">
<xsl:text>#C1BFC4</xsl:text>
</xsl:when>
<xsl:when test="position() = 2 ">
<xsl:text>#B1A1C8</xsl:text>
</xsl:when>
<xsl:when test="position() = 3 ">
<xsl:text>#F9CAA0</xsl:text>
</xsl:when>
<xsl:when test="position() = 4 ">
<xsl:text>#96CCD8</xsl:text>
</xsl:when>
<xsl:when test="position() = 5 ">
<xsl:text>#C2D89A</xsl:text>
</xsl:when>
<xsl:when test="position() = 6 ">
<xsl:text>green</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>red</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="val"/>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:if>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
et voici mon code xml :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<records>
<list>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>Subject Number</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>Monthly Dairy Contact</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>3-Month Safety Contact</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>Annual visit</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>Suspected HZ follow-up Visit</val>
</item>
</list>
<list>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>49210</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>x</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>15-sep-2012</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val></val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val></val>
</item>
</list>
<list>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>49210</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>x</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>15-sep-2012</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>test</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val></val>
</item>
</list>
<list>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>49210</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>x</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>15-sep-2012</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>test</val>
</item>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="jaXBValue">
<val>test</val>
</item>
</list>
</records>
REMARQUE: le xml ne contient que les données qui doit être placé dans le tableau vient en pdf, mais le reste de la matière peut statiquement ajouté dans le fichier xsl, mais je ne sais pas comment aligner correctement comme je l'ai indiqué dans l'image.
peut-on faire des modifications dans mon code comme par le reqiurement.
merci
comme je l'ai indiqué dans l'image... je ne suis pas encore ajouté de texte, si vous pouvez ajouter du texte d'exemple alors il serait grand.
OMI, Lorsqu'ils traitent de la façon dont un FO fichier rend un PDF, il est préférable de d'abord regarder la FO fichier. Cela permettra de déterminer pourquoi votre sortie n'est pas le rendu que vous attendez. De là, vous pouvez faire des ajustements à votre xslt. Vous devez d'abord afficher le FO fichier (au moins la partie pertinente de votre FO) et où/ce que vous avez besoin d'aide avec.
vous dire mes données xml qui contient les données à éditer dans le pdf final).... seulement maintenant, j'ai ajouté que, dans ma question, mais le xml ne détiennent que des données qui est à résider dans la table le reste de la question doit être statique mettre dans le fichier xsl.
mais j'ai fait la totalité de la partie mais je suis problème lorsque theres pas de données surgit dans toute cellule du tableau dans le tableau, puis les cellules de la table obtient superposées,,, pourriez-vous s'il vous plaît résoudre que... vous pouvez le faire à stackoverflow.com/questions/21025444/...
OriginalL'auteur preeth | 2014-01-09
Vous devez vous connecter pour publier un commentaire.
Pour le centrage horizontal, la réponse courte est d'utiliser
text-align="center"
. (Voir https://www.w3.org/TR/xsl11/#text-align)text-align
s'applique àfo:block
,fo:external-graphic
,fo:instream-foreign-object
, etfo:table-and-caption
. Si il y a une ligne FO que vous avez besoin de centre, le plus simple serait de l'envelopper dans unfo:block
qui a letext-align="center"
.Une façon de horizontalement au centre de la
fo:table
est de le mettre dans unfo:table-and-caption
:Une plus longue haleine façon à l'horizontale du centre de n'importe quel bloc d'objet de niveau est à mettre à l'intérieur un
fo:inline-container
à l'intérieur de lafo:block
:Pour le centrage vertical, utilisez
display-align="center"
. (Voir https://www.w3.org/TR/xsl11/#display-align)display-align
s'applique àfo:region-body
,fo:region-before
,fo:region-after
,fo:region-start
,fo:region-end
,fo:block-container
,fo:external-graphic
,fo:instream-foreign-object
,fo:inline-container
, etfo:table-cell
. Entre autres choses, cela signifie que vous pouvez faire de l'alignement vertical être une partie de la page-master-ou que vous pouvez centrer juste lefo:table
en le mettant dans une pleine hauteurfo:block-container
:OriginalL'auteur Tony Graham
Ci-dessous est un exemple Fo, qui vous montre comment définir les marges et le centre de votre table:
J'ai un exemple que je crois que couvre votre question. Avez-vous au moins essayé de corriger le chevauchement? Le soi est ici pour vous aider à résoudre vos problèmes de codage, de ne pas faire tout le travail pour vous 🙂 Cependant, je vais vous donner un indice: essayez de mettre des espaces dans le vide fo:blocs à l'aide d'une entité - stackoverflow.com/questions/1461649/how-to-insert-nbsp-in-xslt
OriginalL'auteur PhillyNJ