xsl使用display-align =" center"来居中表格和图像。

时间:2017-10-23 18:58:26

标签: image centering xsl-fo apache-fop xmltable

我正在使用w3schools上的xml示例文件学习xsl:fo和培训:https://www.w3schools.com/xml/cd_catalog.xml,我修改了一下以添加" PICTURE"标签

我使用xsl:for-eachfo:tablefo:external-graphic解析文件,以便在表格中收集每张CD的信息。我使用display-align="center"作为前两个问题中的建议,并且它不起作用:图像和表格在左侧保持对齐。

这是一个代码示例(我删除了大多数样式属性以使其更具可读性):

<xsl:for-each select="CATALOG/CD">              

            <fo:block text-align="center">
                <xsl:value-of select="TITLE"/> - <xsl:value-of select="ARTIST"/>
            </fo:block>

            <fo:block>
                <fo:external-graphic content-height="scale-to-fit" width="2.00in" content-width="2.00in" display-align="center">
                    <xsl:attribute name="src">pictures/<xsl:value-of select="PICTURE"/>.jpg</xsl:attribute>
                </fo:external-graphic>
            </fo:block>

            <fo:table table-layout="fixed" font-family="Helvetica" text-indent="2em" space-before="2em" display-align="center">
                <fo:table-column column-width="4cm"/>
                <fo:table-column column-width="4cm"/>                   
                <fo:table-body>
                    <fo:table-row>
                        <fo:table-cell><fo:block>Country :</fo:block></fo:table-cell>
                        <fo:table-cell><fo:block><xsl:value-of select="COUNTRY"/></fo:block></fo:table-cell>
                    </fo:table-row>
                    <fo:table-row>
                        <fo:table-cell><fo:block>Company :</fo:block></fo:table-cell>
                        <fo:table-cell><fo:block><xsl:value-of select="COMPANY"/></fo:block></fo:table-cell>
                    </fo:table-row>
                    <fo:table-row>
                        <fo:table-cell><fo:block>Price :</fo:block></fo:table-cell>
                        <fo:table-cell><fo:block><xsl:value-of select="PRICE"/></fo:block></fo:table-cell>
                    </fo:table-row>
                    <fo:table-row>
                        <fo:table-cell><fo:block>Year :</fo:block></fo:table-cell>
                        <fo:table-cell><fo:block><xsl:value-of select="YEAR"/></fo:block></fo:table-cell>
                    </fo:table-row>
                </fo:table-body>
            </fo:table>

        </xsl:for-each>

1 个答案:

答案 0 :(得分:1)

display-align="center"用于垂直居中(即,在块进展方向上)。见https://www.w3.org/TR/xsl/#display-align。 (另外,display-align不适用于fo:table。如果您确实希望垂直居中,则必须在包含的FO上使用display-align="center" fo:table。)

对于左右居中(在内联渐进方向),请使用text-align="center":请参阅https://www.w3.org/TR/xsl/#text-align

但是,text-align不适用于fo:table,因此您需要将其放在fo:table-and-caption上并将fo:table作为{{1}的子项(fo:table-and-caption是可选的)。见https://www.w3.org/TR/xsl/#fo_table-and-caption