xsl-fo表显示pdf生成的xml数据

时间:2017-02-17 00:11:41

标签: xml pdf xslt pdf-generation xsl-fo

我需要帮助xsl-fo中的模板从xml数据生成pdf。

我的问题是我需要创建一个只能获得多个项目(节点)的表。

对于exaple,我可能有一个看起来像这样的xml

<CollectionOfItems>
<items>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
</items>
<items>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
</items>
</items>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
</items>
</CollectionOfItems>

每个“items”节点都需要在一个单独的表中...所以我在xsl-fo表中创建了一个看起来像这样的表

<fo:table width="100%" border-style="outset" border-width="2pt" background-repeat="no-repeat">
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-body>
    <xsl:for-each select="/Items/item/DataModification/Form/Tab/ModControl/Value/CompetenceConfig/Chapters/Chapter">
        <xsl:variable name="Chapter" select="."/>
        <fo:table-row>
            <fo:table-cell border-style="inset" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="center">
                <fo:block>
                    <xsl:value-of select="@ID"/>
                </fo:block>
            </fo:table-cell>
            <fo:table-cell border-style="inset" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="center">
                <fo:block>
                    <xsl:value-of select="@location"/>
                </fo:block>
            </fo:table-cell>
            <fo:table-cell border-style="inset" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="center">
            <fo:block>
                <xsl:value-of select="@price"/>
            </fo:block>
            </fo:table-cell>
        </fo:table-row>
    </xsl:for-each>
</fo:table-body>

这种方法有效但不是例如一个“items”节点,每个表中包含项目,我得到3个表,其中3个“items”节点看起来相同。如何在第一个表中显示第一个“节点”项,在第二个表中显示第二个“项”节点,依此类推?我真的很感激任何帮助。我已经尝试解决这个问题好几天了,我是xsl-fo的新手。

非常感谢!

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?不知道你还有什么,并纠正你在XML中的错误......

if(!require(BayesFactor)){install.packages('BayesFactor')}

require(BayesFactor)
##################################################

exp(ttest.tstat(t= 2 , n1=40, n2=40, nullInterval =c(0, Inf), rscale = sqrt(2)/2,
        complement = FALSE, simple = FALSE)$bf)   ### !CHECK THIS OUTPUT! ###


exp(ttest.tstat(t= 2 , n1=40, n2=40, nullInterval =c(0, Inf), rscale = sqrt(2)/2, 
       complement = FALSE, simple = TRUE))    ### !CHECK THIS OUTPUT! ###

产生这个:

enter image description here

这个模板可以为每个&#34;项目&#34;创建一个表格。标签,每一行&#34;标题&#34;标签和&#34;标题&#34;中每个属性的单元格标签。我相信这就是你想要的。