1

如何使用 XSLT 将 HTML 定义列表 (DL) 转换为双列 XSL-FO 表,其中第一列中的术语和第二列中的定义,并且可能有多个定义?

(抱歉,如果这已经在某个地方得到回答。我搜索但没有找到。)

4

1 回答 1

1

这个问题的关键在于找到仍然以当前 DT 作为术语的 follow-siblings: XSLT: Select following-sibling until达到指定的标签

然后只需将整个表定义为顶级 DL 模板即可:

<xsl:template match="dl">
    <fo:table>
        <fo:table-body>
            <xsl:for-each select="dt">
                <xsl:variable name="current-term" select="."/>
                <fo:table-row>
                    <fo:table-cell font-weight="bold" width="5.5cm">
                        <fo:block>
                            <xsl:apply-templates />
                        </fo:block>
                    </fo:table-cell>
                    <fo:table-cell>
                        <fo:block>
                            <xsl:apply-templates select="following-sibling::dd[preceding-sibling::dt[1] = $current-term]" />
                        </fo:block>
                    </fo:table-cell>
                </fo:table-row>
            </xsl:for-each>
        </fo:table-body>
    </fo:table>
</xsl:template>
<xsl:template match="dd">
    <fo:block>
        <xsl:apply-templates />
    </fo:block>
</xsl:template>
于 2013-08-28T03:05:26.053 回答