fo:change-bar-begin不是fo:inline fop 1.1的子级

时间:2018-11-05 22:51:34

标签: xslt-1.0 xslt-2.0 xsl-fo apache-fop

我正在使用FOP 1.1,并且正在尝试使用fo:change-bar-begin,但是出现以下错误:

org.apache.fop.fo.ValidationException:“ fo:change-bar-begin”不是“ fo:inline”的有效子代!

根据W3C建议,change-bar-begin和change-bar-end定义“点”,并且可以在任何地方用作fo:flow或fo:static-content的后代,基本上在任何fo:block或fo中都可以使用:inline。

示例代码:

<fo:block background-color="Tomato" text-indent="-57.5pt" start-indent="57.5pt">
<fo:inline background-color="aquamarine" font-size="10" font-family="Arial, sans-serif">1.</fo:inline>
<fo:change-bar-begin change-bar-offset="2mm" change-bar-color="red" change-bar-style="solid" change-bar-class="cc01"/>
<fo:inline background-color="LightSteelBlue" keep-with-previous="always" font-size="10" font-family="Arial, sans-serif" padding-left="48.39pt">Remove panel.</fo:inline>
<fo:change-bar-end change-bar-class="cc01"/>
</fo:block>

我该怎么办?

谢谢!

弗洛林

1 个答案:

答案 0 :(得分:0)

对我来说,这还不错,对于fo:change-bar-begin作为fo:flowfo:static-content的后代被允许在任何地方,您是正确的。因此,这似乎是一个FOP错误。

在您的示例中,fo:change-bar-begin实际上不是fo:inline的子级。您是否尝试将变更栏FO放在fo:inline内?

FWIW,https://www.antennahouse.com/antenna1/comprehensive-xsl-fo-tutorials-and-samples-collection/的“ Comprehensive XSL-FO Tutorials and Samples Collection”中有一个格式化的更改栏示例。