<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>
<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' 然后在表格序列号的每一行,第二列中显示 结果输出必须采用下表格式
Joe A
显示A
Cunny B
Sunny B
Ash B
Isha A
如何获得'A'或'B'的上述序列号(不是'C','D'等)?我试图用 xslt 来解决这个问题,但我失败了。任何关于 xslt或xsl-fo 的帮助都是值得称道的..
答案 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的结果。