XSL 为内联容器结果创建 fo 表

XSL creating fo-tables for inline-container results

我有一种情况需要显示 xml 结果(布尔值、日期、i

我想在 table 中显示结果,如果不完全重建整个过程,我想不出解决这个问题的好方法。

这是我如何处理布尔数据类型的示例。每个数据类型都是根据下面的示例构建的。

这是应用所有模板(布尔值等)的代码。我想弄清楚我是否可以为 apply-templates select="." 创建一个 Table 显示,或者我是否需要编辑每个数据类型以在 table.[=11= 中显示]

重要的是不要错过 fo:table/fo:table-body/fo:table-row/fo:table-cell 层次结构中的任何级别。

如果我对你的代码的理解正确,你想要这样的东西:

<fo:table>
  <fo:table-column column-width="{$adjustedWidth}in" />
  <fo:table-column column-width="{$adjustedWidth}in" />
  <fo:table-body>
    <xsl:for-each select="bml:Parameter[not(bml:ID='EndConditionMatrix' or
                                            bml:ID='PVATable' or
                                            bml:ParameterSubType='NoReport')]">
      <xsl:sort select="bml:SortOrder" data-type="number"/>
      <xsl:apply-templates select="." />
    </xsl:for-each>
  </fo:table-body>
</fo:table>

和:

<xsl:template match="bml:DataType='boolean']">
  <fo:table-row>
    <fo:table-cell>
      <fo:block xsl:use-attribute-sets="paramCaption">
        <xsl:value-of select="$caption" />
      </fo:block>
    </fo:table-cell>
    <fo:table-cell>
      <fo:block xsl:use-attribute-sets="paramValue">
        <xsl:choose>
          <xsl:when test="bml:Value/bml:ValueString='0'">No</xsl:when>
          <xsl:otherwise>Yes</xsl:otherwise>
        </xsl:choose>
      </fo:block>
    </fo:table-cell>
  </fo:table-row>
</xsl:template>

这并不能说明你的 start-indent,但它应该能让你朝着你想要的方向前进。