标题中的XSL-FO序列号

时间:2012-01-21 02:57:33

标签: xsl-fo

输入XML:

<Data>
    <BPP>
        <CP>A</CP>
        <Name>Joe</Name>
    </BPP>
    <BPP>
        <CP>A</CP>
        <Name>Show</Name>
    </BPP>
    <BPP>
        <CP>B</CP>
        <Name>Cunny</Name>
    </BPP>
    <BPP>
        <CP>D</CP>
        <Name>Johny</Name>
    </BPP>
    <BPP>
        <CP>C</CP>
        <Name>Bunny</Name>
    </BPP>
    <BPP>
        <CP>B</CP>
        <Name>Sunny</Name>
    </BPP>
    <BPP>
        <CP>C</CP>
        <Name>Neha</Name>
    </BPP>
    <BPP>
        <CP>D</CP>
        <Name>Josh</Name>
    </BPP>
    <BPP>
        <CP>B</CP>
        <Name>Ash</Name>
    </BPP>
    <BPP>
        <CP>A</CP>
        <Name>Isha</Name>
    </BPP>
</Data>

XSL-FO中的我的代码:

<fo:table table-layout="fixed" border-width="1mm" border-style="solid">
<fo:table-column column-width="25%"/>
<fo:table-column column-width="25%"/>
<fo:table-column column-width="25%"/>
<fo:table-column column-width="25%"/>
<fo:table-body>
<!-- Repeatable row-->
    <fo:table-row>
        <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
            <fo:block font-weight="bold">Header</fo:block>
        </fo:table-cell>
        <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
            **<fo:block font-weight="bold"><!--Serial Value of 'A' or 'B'--></fo:block>**
        </fo:table-cell>

        <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
            <fo:block><xsl:value-of select='Data/BPP/Name'/></fo:block>
        </fo:table-cell>
        <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
            <fo:block><xsl:value-of select='Data/BPP/CP'/></fo:block>
        </fo:table-cell>
    </fo:table-row>
</fo:table-body>
</fo:table>

我的要求:

如果数据/ BPP / CP ='A'或数据/ BPP / CP ='B' 然后在表格序列号的每一行,第二列中显示 结果输出必须采用下表格式

标题1

Joe A


标题2

显示A


标题3

Cunny B


标题4

Sunny B


标题5

Ash B


标题6

Isha A


如何获得'A'或'B'的上述序列号(不是'C','D'等)?我试图用 xslt 来解决这个问题,但我失败了。任何关于 xslt或xsl-fo 的帮助都是值得称道的..

1 个答案:

答案 0 :(得分:0)

我无法对此进行测试,但请尝试:

<xsl:for-each select="Data/BPP[./CP = 'A' or ./CP = 'B']">
    <xsl:number value="position()" format="1" />
</xsl:for-each>

(我编辑了我以前的答案,因为它错了。我现在理解你的问题了)

上述XSL将选择CP为A或B的所有BPP节点。position()将输出当前节点的位置。我只是不确定它是否会输出整个节点列表中节点的位置,或者输出for-each的结果。