我有以下由 xsl 文件形成的 pdf 报告,该 xsl 文件定义了此 pdf 报告的样式 下面是 url 请查看 pdf 报告.. Pdf 报告
使用的 xsl 文件是 ..
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:set="http://exslt.org/sets" extension-element-prefixes="set" exclude-result-prefixes="fo">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4" page-width="21cm" page-height="29.7cm" margin-top="2cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
<fo:region-body margin-bottom="2cm" margin-top="4cm"/>
<fo:region-after extent="2cm"/>
<fo:region-before extent="4cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4" initial-page-number="1">
<fo:static-content flow-name="xsl-region-after">
<fo:block border-bottom-style="solid"
text-align="left" font-size="9pt" >
</fo:block>
<fo:block font-size="9pt" text-align="end">
<fo:table table-layout="fixed">
<fo:table-column column-width="9.5cm"/>
<fo:table-column column-width="9.5cm"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell
text-align="center">
<fo:block text-align="left">
Run:
<xsl:value-of select="substring( DepartmentSalesReport/CurrentDate , 6, 2 )" />
/
<xsl:value-of select="substring( DepartmentSalesReport/CurrentDate , 9, 2 )" />
/
<xsl:value-of select="substring( DepartmentSalesReport/CurrentDate , 1, 4 )" />
@
<xsl:value-of select="DepartmentSalesReport/currentTime" />
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<!--fo:block space-before="8mm">
<xsl:text>Keep this report for 6 months</xsl:text>
</fo:block-->
</fo:table-cell>
<fo:table-cell >
<fo:block space-before="8mm">Page <fo:page-number/> of <fo:page-number-citation ref-id="terminator"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:static-content>
<fo:static-content flow-name="xsl-region-before">
<fo:block text-align-last="center" space-after="1.5cm">
<fo:table table-layout="fixed">
<fo:table-column column-width="4cm"/>
<fo:table-column column-width="10cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-column column-width="2cm"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell font-size="9pt">
<fo:block>Store Number:
<xsl:value-of select="DepartmentSalesReport/store_code"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block text-align-last="center" font-size="14pt" font-weight="bold" space-after="1mm">
<fo:inline text-decoration="underline">Department Sales Report</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" font-size="9pt">
<fo:block >
<xsl:value-of select="DepartmentSalesReport/tradingday"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" font-size="9pt">
<xsl:variable name="date"><xsl:value-of select="DepartmentSalesReport/tradingdate"/></xsl:variable>
<fo:block>
<xsl:value-of select="substring($date,5,2)"/>/<xsl:value-of select="substring($date,7,2)"/>/<xsl:value-of select="substring($date,1,4)"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:table table-layout="fixed">
<fo:table-column column-width="19cm"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell text-align="center">
<fo:block text-align-last="center" font-size="9pt" >
Summary of Sales by department, only those
departments with activity (Sales,
refunds, voids) will appear on this
report.Use this report to monitor sales in
key departments and make merchandising
decisions as needed.
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block font-size="9pt" >
<fo:table table-layout="fixed" >
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="6cm"
text-align="center"/>
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.8cm"
text-align="center"/>
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.6cm"
text-align="center"/>
<fo:table-column
column-width="1.6cm" />
<fo:table-body>
<fo:table-row>
<fo:table-cell number-columns-spanned="9"> <fo:block color="black"
space-before.optimum="-8pt">
<fo:block border-bottom-style="solid"
text-align="left" font-size="9pt" />
</fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row font-weight="bold">
<fo:table-cell number-columns-spanned="2">
<fo:block text-align="left"><xsl:text>-------------------------Department-------------------</xsl:text></fo:block>
</fo:table-cell>
<fo:table-cell number-rows-spanned="2">
<fo:block text-align="right"><xsl:text>Net Sales</xsl:text></fo:block>
</fo:table-cell>
<fo:table-cell number-rows-spanned="2">
<fo:block text-align="right"><xsl:text>Qty</xsl:text></fo:block>
</fo:table-cell>
<fo:table-cell number-rows-spanned="2">
<fo:block text-align="right"><xsl:text>% of Sales</xsl:text></fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2">
<fo:block text-align="right"><xsl:text>--------Void--------</xsl:text></fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2">
<fo:block text-align="right"><xsl:text>-------Return-------</xsl:text></fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row font-weight="bold">
<fo:table-cell>
<fo:block text-align="left">
<xsl:text>#</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="left">
<xsl:text>Description</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:text>Qty</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:text>Amount</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:text>Qty</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:text>Amount</xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row >
<fo:table-cell number-columns-spanned="9" > <fo:block color="black"
space-before.optimum="-8pt">
</fo:block></fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block border-bottom-style="solid"
text-align="left" font-size="9pt" />
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<xsl:variable name="storeSales" select="sum(DepartmentSalesReport/DepartmentDesc/netSales)"/>
<br/>
<!-- <fo:block font-size="9pt" space-after="3mm" break-before="page">-->
<xsl:for-each select="DepartmentSalesReport/DepartmentDesc">
<fo:block font-size="9pt" space-after="1mm">
<fo:table table-layout="fixed" >
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="6cm"
text-align="center"/>
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.8cm" />
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.6cm" />
<fo:table-column
column-width="1.6cm"
text-align="center"/>
<fo:table-column
column-width="1.6cm" />
<fo:table-body>
<xsl:variable name="levelNo"><xsl:value-of select="levelNbr"/></xsl:variable>
<xsl:variable name="levelCheck"><xsl:value-of select="level"/></xsl:variable>
<xsl:if test="$levelCheck!=''">
<xsl:if test="$levelNo='2'">
<fo:table-row>
<fo:table-cell number-columns-spanned="9">
<fo:block>
<xsl:text> </xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<fo:table-row >
<fo:table-cell>
<fo:block text-align="left">
<xsl:value-of select="level"/>
</fo:block>
</fo:table-cell>
<xsl:choose>
<xsl:when test="$levelNo!='2'">
<fo:table-cell>
<fo:block text-align="left">
<xsl:value-of select="prgpName"/>
</fo:block>
</fo:table-cell>
</xsl:when>
<xsl:otherwise>
<fo:table-cell>
<fo:block text-align="left">
***DEPT TOTAL*** </fo:block>
</fo:table-cell>
</xsl:otherwise>
</xsl:choose>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of
select="format-number(netSales,'0.00')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of
select="format-number(prodCount,'0')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<xsl:variable name="salesPercentage"><xsl:value-of select="format-number((netSales div $storeSales)*100, '###,##0')"/></xsl:variable>
<xsl:if test="$salesPercentage='NaN'">
<fo:block text-align="right">
<xsl:text>0</xsl:text>
</fo:block>
</xsl:if>
<xsl:if test="$salesPercentage!='NaN'">
<fo:block text-align="right">
<xsl:value-of
select="$salesPercentage"/>
</fo:block>
</xsl:if>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of
select="format-number(postVoidQuantity,'0')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of
select="format-number(postVoidAmount,'0.00')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of
select="format-number(returnQuantity,'0')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="right">
<xsl:value-of
select="format-number(returnAmount,'0.00')"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<xsl:if test="$levelNo='2'">
<fo:table-row>
<fo:table-cell number-columns-spanned="9">
<fo:block>
<xsl:text> </xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
</xsl:if>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:for-each>
<fo:block border-bottom-style="solid"
text-align="left" font-size="9pt" />
<fo:block font-size="9pt" space-after="1mm" space-before="2mm">
<fo:table>
<fo:table-column column-width="1.5cm"/>
<fo:table-column column-width="4.5cm"/>
<fo:table-header>
<fo:table-row>
<fo:table-cell>
<fo:block font-weight="bold"></fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block text-align="left" space-after="1.5mm">
<xsl:text>DEPARTMENT TOTALS</xsl:text></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block></fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block><xsl:text>SS SALES</xsl:text> <xsl:value-of select="DepartmentSalesReport/store_code"/></fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block></fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block><xsl:text>CIGARETTE SALES</xsl:text></fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block></fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block space-after="1.5mm"><xsl:text>LIQUOR SALES</xsl:text></fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block></fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block><xsl:text>TOTAL FRONT END SALES</xsl:text></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block space-before="5mm" text-align="center" font-size="9pt" font-weight="bold" id="terminator">
<xsl:text></xsl:text>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
现在我在当前报告中添加了新行,如此链接所示,..修改报告,但请告知正如您也看到我希望在 SS SALES 的前面打印 59997,也用红色箭头表示请告知需要在 xsl 中进行哪些修改才能实现这一点,为了了解数值为 59997 的目的是来自 xsl <fo:block><xsl:text>SS SALES</xsl:text> <xsl:value-of select="DepartmentSalesReport/store_code"/></fo:block>
请告知如何在前面显示该值以及为此在当前 xsl 中需要进行什么格式化。
请建议大家,因为我因此而被困住了..!!任何帮助都将发自内心的感激。
以下是xml,请查看..!
<?xml version="1.0" encoding="UTF-8"?>
<Report Name="DepartmentSalesReport" Title="Department Sales Report"
Description="Department Sales Report" Version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InitParam Name="tradingdate" Type="java.lang.String" />
<InitParam Name="tradingday" Type="java.lang.String" />
<ReportBand BandType="HeaderBand" Name="DepartmentSalesReportBand">
<ReportElement Type="Header" DataSource="OutletSQL">
<DataField Name="store_code" Type="Data" FieldName="ORGU_CODE" />
</ReportElement>
<ReportElement Type="Header" DataSource="InitParams">
<DataField Name="tradingdate" Type="Data" FieldName="tradingdate" />
</ReportElement>
<ReportElement Type="Header" DataSource="InitParams">
<DataField Name="tradingday" Type="Data" FieldName="tradingday" />
</ReportElement>
</ReportBand>
<ReportBand BandType="DetailBand" Name="Terminal">
<ReportElement Type="Detail" Name="DepartmentDesc" DataSource="DataSql">
<DataField Name="level" Type="Data" FieldName="LEVEL"/>
<DataField Name="levelNbr" Type="Data" FieldName="LEVELNBR"/>
<DataField Name="prgpName" Type="Data" FieldName="PRGP_NAME"/>
<DataField Name="prodCount" Type="Data" FieldName="PROD_COUNT"/>
<DataField Name="netSales" Type="Data" FieldName="NET_SALES"/>
<DataField Name="postVoidQuantity" Type="Data" FieldName="POST_VOID_QUANTITY"/>
<DataField Name="postVoidAmount" Type="Data" FieldName="POST_VOID_AMOUNT"/>
<DataField Name="returnQuantity" Type="Data" FieldName="RETURN_QUANTITY"/>
<DataField Name="returnAmount" Type="Data" FieldName="RETURN_AMOUNT"/>
</ReportElement>
<ReportElement Type="Header" DataSource="DateSQL">
<DataField Name="CurrentDate" Type="Data" FieldName="1" />
<DataField Name="currentTime" Type="Data" FieldName="2" />
</ReportElement>
</ReportBand>
<DataSource
Type="walgreens.pos.maintenance.eod.DepartmentSalesReportDataSource"
Name="DataSql"
Statement="">
</DataSource>
<DataSource
Type="com.pcmsgroup.v21.star.framework.application.reports.SpringReadOnlySQLStatement"
Name="OutletSQL"
Statement="select ORGU_CODE,OUTL_TRADE_DATE from outlet,org_unit where outlet.OUTL_ID = org_unit.OUTL_ID">
</DataSource>
<DataSource
Type="com.pcmsgroup.v21.star.framework.application.reports.SpringReadOnlySQLStatement"
Name="DateSQL"
Statement="SELECT current date,current time FROM sysibm.sysdummy1">
</DataSource>
</Report>