在xsl:table内部或外部使用xsl:for-each



我遇到了一个问题,显示"fo:table-row缺少子元素">。我知道这与在下面的模板中运行xsl:for-each有关。但我需要浏览所有布尔值并在表格中报告它。如何在表中使用for-each ?或者这是不可能的?

<xsl:template match="boolean">
<fo:table-row>
<xsl:for-each select='boolean'>
<fo:table-cell>
<fo:block>
<xsl:value-of select="$caption" />
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:choose>
<xsl:when test="bml:Value='0'">No</xsl:when>
<xsl:otherwise>Yes</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:template>

这给了我一个"fo:表行缺少子元素">。如果我删除for-each,它会把一个布尔值放在我创建的表的正确位置,我只是不能让它遍历输出中的所有布尔值来获取图的每个布尔值。关于如何迭代和使用for-each表有什么想法吗?

match="boolean"表示上下文项是<boolean>。除非<boolean>包含<boolean>,否则<xsl:for-each>不会选择任何东西。

在XSLT中迭代通常不是最好的方法。如果您删除xsl:for-each并使选择booleanxsl:apply-templates选择所有boolean,那么模板将用于每个boolean,您将得到一堆表行,如预期的。

最新更新