在xslt中,有时需要使用两个fo:block在同一行,展示不同的样式,前面的是标题需要加粗,后面的是内容无任何变化,此时直接使用fo:block存在问题。
可以使用fo:list-block已经其子标签进行编写,就能解决此问题。为了实现第一个block加粗,第二个block不加粗,SimHei是黑体加粗,SimSun是宋体不加粗。
代码如下:
<fo:list-block provisional-distance-between-starts="50% + 5pt"
provisional-label-separation="10pt">
<!-- 备注 -->
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block font-size="15pt" font-family="SimHei" text-indent="2em">
备注:
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block font-size="15pt" font-family="SimSun">
<xsl:value-of select="note/notePara"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
<!-- 活动 -->
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block font-size="15pt" font-family="SimHei" text-indent="2em">
活动:
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block font-size="15pt" font-family="SimSun">
<xsl:value-of select="action"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
<!-- 步骤问题 -->
<fo:list-item>
<fo:list-item-label>
<fo:block font-size="15pt" font-family="SimHei" text-indent="2em">
提问:
</fo:block>
</fo:list-item-label end-indent="label-end()">
<fo:list-item-body start-indent="body-start()">
<fo:block font-size="15pt" font-family="SimSun" text-indent="5em">
<xsl:value-of select="isolationStepQuestion"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
provisional-distance-between-starts,end-indent,start-indent都是为了控制输出的宽度和大小,不是很熟悉,也不用熟悉,有例子能使用就还行。
这个还有问题,利用百分比调整存在位置误差,50%对于长文本不存在问题,对于短文本,A3,A4不同类型百分比控制不住,可以使用缩进方式。
代码如下:
<fo:list-block>
<!-- 备注 -->
<fo:list-item>
<fo:list-item-label>
<fo:block font-size="15pt" font-family="SimHei" text-indent="2em">
备注:
</fo:block>
</fo:list-item-label>
<fo:list-item-body>
<fo:block font-size="15pt" font-family="SimSun" text-indent="5em">
<xsl:value-of select="note/notePara"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
<!-- 活动 -->
<fo:list-item>
<fo:list-item-label>
<fo:block font-size="15pt" font-family="SimHei" text-indent="2em">
活动:
</fo:block>
</fo:list-item-label>
<fo:list-item-body>
<fo:block font-size="15pt" font-family="SimSun" text-indent="5em">
<xsl:value-of select="action"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
<!-- 步骤问题 -->
<fo:list-item>
<fo:list-item-label>
<fo:block font-size="15pt" font-family="SimHei" text-indent="2em">
提问:
</fo:block>
</fo:list-item-label>
<fo:list-item-body>
<fo:block font-size="15pt" font-family="SimSun" text-indent="5em">
<xsl:value-of select="isolationStepQuestion"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
当然也可以使用表格的方式,将两个fo:block放在表格中,也能解决问题,代码如下:
<fo:table border-style="solid" border-width="0pt" table-layout="fixed" width="100%" overflow="auto">
<fo:table-column column-width="3cm"/>
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block font-size="15pt" font-family="SimHei" text-indent="2em">
提问:
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-size="15pt" font-family="SimSun">
<xsl:value-of select="isolationStepQuestion"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
具体情况用具体方法。