xml-fo pdf 表 : 'colspan' when the number of columns is dynamic

标签 xml xslt pdf html-table xml-formatting

我正在使用 xml-fo 在 pdf 文档中生成表格。
列数是动态的。仅当测试通过时才会显示列。
在测试中,我使用 $var1、$var2 等指向 xml 节点的变量。

我有类似的东西

 <xsl:element name="fo:table-row">
    <xsl:element name="fo:table-cell" use-attribute-sets="table-cell">
        <xsl:attribute name="number-columns-spanned"> **???** </xsl:element>
        <xsl:element name="fo:block">Text that spans over columns</xsl:element>
    </xsl:element>
 </xsl:element>
 <xsl:element name="fo:table-row" use-attribute-sets="headerRow"> 
    <xsl:element name="fo:table-cell" use-attribute-sets="table-cell">
       <xsl:element name="fo:block">some value here</xsl:element>
    </xsl:element>
    <xsl:if test="$var1">
       <xsl:element name="fo:table-cell" use-attribute-sets="table-cell">
          <xsl:element name="fo:block">maybe some value here 2</xsl:element>
       </xsl:element>
    </xsl:if>
    <xsl:if test="$var2">
       <xsl:element name="fo:table-cell" use-attribute-sets="table-cell">
          <xsl:element name="fo:block">maybe some value here 3</xsl:element>
       </xsl:element>
    </xsl:if>
    ...
</xsl:element>

我正在扩展第一行以跨越所有列。 “number-columns-spanned”是可变的,取决于通过的测试的数量。
有没有一种简单的方法可以动态提取正在传递的条件数量,以便正确定义属性 number-columns-spanned?

最佳答案

您可以使用如下表达式计算变量的内容:

count($var1 | $var2 | $var3 | ...)

假设每个变量都是可能为空的集合。如果您的变量是 true/false 值,那么您可以利用 XSL 中 false 为 0 而 true 为 1 的事实(至少对于我正在使用的解释器):

$var1 + $var2 + $var3 + ...

如果值不是节点集也不是 bool 值,请先将它们转换为 bool 值:

boolean($var1) + boolean($var2) + boolean($var3) + ...

这并不是一种非常优雅的处理方式,但它确实有效。

According to the XPath spec , bool 值在转换为数字时确实应该以这种方式表现。很高兴知道!

关于xml-fo pdf 表 : 'colspan' when the number of columns is dynamic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239824/

相关文章:

c# - 在 C# 中反序列化多个具有相同名称的 XML 元素

xslt - 如何使用xslt合并元素?

php - DOM node.textContent 解析替换

android - 在 Android 上显示通过 POST 响应/下载收到的 PDF 文件

Java - 将带有CSS图像的html转换为pdf

pdf - 将现有的 PDF 附加到 Jspdf

c# - 并非 WCF 数据协定中的所有参数都通过 Web 服务调用

c# - 如何使用 XPathNodeIterator 检索值

.net - 如何将数据集/数据表从 Tomcat 中继到 .NET 应用程序?

xml - "Template rules match elements in no namespace"消息