我正在使用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>
我该怎么办?
谢谢!
弗洛林
答案 0 :(得分:0)
对我来说,这还不错,对于fo:change-bar-begin
作为fo:flow
或fo: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”中有一个格式化的更改栏示例。