다양한 열 수의 xsl fo 테이블을 만들었습니다. 이 응용 프로그램은 Apache FOP를 사용하여 변환 된 문서를 표시합니다. 열 수가 적 으면 모든 항목이 정상적으로 표시됩니다 (즉, 텍스트의 줄이 바뀌기 때문에 일부 열이 두 줄을 차지할지라도 셀의 내용은 가운데 맞춤으로 표시됩니다). 그러나 일부 테이블에는 12 개 이상의 열이 있으며 여기에서 문제가 발생합니다. 열 머리글 셀에서 열의 이름이 여러 줄을 가져 오는 셀의 오른쪽에 있습니다. 단어가 줄 바꿈하는 것처럼 보이지만 마지막 두 문자조차도 겉으로보기에는 잘립니다. 텍스트가 인접한 셀로 누출되지 않습니다.XSL FO 테이블 행 헤더 내용이 손상되었습니다.
이 경우 입력 xml 파일은 테이블 헤더 행과 간결성을위한 본문 행입니다. 나는 제대로 그 부분의 표시로 XSL 문서에서 참조 차트 요소를 포함하지 않았다 : 여기
<exports>
<export>
<table>
<tblRow>
<hdrCell>Month</hdrCell>
<hdrCell>Allow Amt PEPM Med</hdrCell>
<hdrCell>Allow Amt PEPM Rx</hdrCell>
<hdrCell>Allow Amt PEPM Med and Rx</hdrCell>
<hdrCell>Allow Amt PMPM Med</hdrCell>
<hdrCell>Allow Amt PMPM Rx</hdrCell>
<hdrCell>Allow Amt PMPM Med and Rx</hdrCell>
<hdrCell>Employees Avg Med or Rx</hdrCell>
<hdrCell>Members Avg Med or Rx</hdrCell>
<hdrCell>Net Pay PEPM Med</hdrCell>
<hdrCell>Net Pay PEPM Rx</hdrCell>
<hdrCell>Net Pay PEPM Med and Rx</hdrCell>
<hdrCell>Net Pay PMPM Med</hdrCell>
<hdrCell>Net Pay PMPM Rx</hdrCell>
<hdrCell>Net Pay PMPM Med and Rx</hdrCell>
</tblRow>
<tblRow>
<tblCell>Jan 2010</tblCell>
<tblCell>11</tblCell>
<tblCell>202</tblCell>
<tblCell>213</tblCell>
<tblCell>26</tblCell>
<tblCell>30</tblCell>
<tblCell>56</tblCell>
<tblCell>56</tblCell>
<tblCell>44</tblCell>
<tblCell>11</tblCell>
<tblCell>22</tblCell>
<tblCell>33</tblCell>
<tblCell>12</tblCell>
<tblCell>12</tblCell>
<tblCell>24</tblCell>
<tblCell>1</tblCell>
</tblRow>
</table>
</export>
그리고
는 FO XSL에 입력 파일을 변환하는 XSL 파일입니다. 나는 xsl을 처음 사용한다.<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="exportPage">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="exportPage">
<fo:flow flow-name="xsl-region-body">
<fo:block id="chartBlock">
<!-- THIS PART WORKS FINE -->
</fo:block>
<!-- THE PROBLEM PART -->
<fo:block id="tableBlock" margin="0.25in">
<xsl:apply-templates select="exports/export/table"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<!-- Creates the table -->
<xsl:template match="table">
<fo:table table-layout="fixed" width="100%" >
<fo:table-header>
<fo:table-row>
<xsl:apply-templates select="tblRow[position() = 1]"/>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:apply-templates select="tblRow[position() > 1]"/>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template match="hdrCell">
<fo:table-cell background-color="#666" border-right-style="solid" border-right-width="1px" border-right-color="white" empty-cells="show">
<fo:block color="white" font-family="arial, helvetica, sans-serif" font-size="xx-small"><xsl:value-of select="."/></fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="tblCell">
<fo:table-cell border-bottom-style="solid" border-bottom-width="1px"
border-bottom-color="#E3E3E3">
<fo:block color="#7E7E7E" font-family="arial, helvetica, sans-serif" font- size="xx-small"><xsl:value-of select="."/></fo:block>
</fo:table-cell>
</xsl:template >
<xsl:template match="tblRow[position() > 1]">
<fo:table-row>
<xsl:apply-templates />
</fo:table-row>
</xsl:template>
</xsl:stylesheet>
나는 그것이 아무 소용이 왼쪽에있는 텍스트를 이동 바라고 각 테이블 셀의 블록 요소에 대한 패딩 바로 속성을 설정 노력했다. 테이블 셀의 자식 인 각 블록 요소의 'width'속성을 조정 해 보았습니다. 나는 일반적으로 xsl을 처음 사용하므로 진행 방법을 잘 모릅니다. 특정 너비의 요소를 지정하는 것이 도움이 될까요? 표의 전체 너비가 pdf에 표시되고 뒤죽박죽 된 셀 내용이 없도록하려면 어떻게해야합니까? 또한 모든 단위는 지정되지 않은 경우 'px'에 있습니다. 사전에
감사합니다,
브란트
아직 테스트를 거치지 않았으므로 아직 답변을 게시하고 있지 않습니다.이 테스트는 다음과 같이하십시오. margin = "0.25in"테이블을 둘러싼 블록 –