Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml '的确切含义是什么;在'之后中断;在XSL-FO文档中?_Xml_Xsl Fo - Fatal编程技术网

Xml '的确切含义是什么;在'之后中断;在XSL-FO文档中?

Xml '的确切含义是什么;在'之后中断;在XSL-FO文档中?,xml,xsl-fo,Xml,Xsl Fo,我试图找出最好的方法来描述属性break after对包含多个段落的两列页面布局的影响: <fo:block text-align="justify" font-size="14pt" break-after="column"> <fo:block space-after="0.1in">In 294 BC, the people...</fo:block> <fo:block space-after="0.1in">The Col

我试图找出最好的方法来描述属性
break after
对包含多个段落的两列页面布局的影响:

<fo:block text-align="justify" font-size="14pt" break-after="column">
    <fo:block space-after="0.1in">In 294 BC, the people...</fo:block>
    <fo:block space-after="0.1in">The Colossus was built...</fo:block>
    <fo:block space-after="0.1in">The statue was toppled....</fo:block>
    <fo:block space-after="0.1in">The statue remained on....</fo:block>
</fo:block>

公元前294年,人民。。。
巨像是由。。。
雕像被推倒了。。。。
雕像还保留着。。。。

如果我只看到了由该代码生成的页面(而不是代码本身),并且被要求描述布局算法,那么我只会说,在将剩余文本放入第二列之前,它会用尽可能多的文本填充第一列

在我看来,这几乎描述了正在发生的事情,但我无法将这一描述与
break after=“column”
的含义相协调。例如<代码> > 之后,我建议列中断只发生在段落之后,但这显然不是发生的事情。在这个小文档中,它们经常出现在段落的中间。 有谁能更准确地描述这个布局算法,并参考
break after=“column”
的确切含义吗

下面是我正在使用的(.fo文件及其生成的pdf)。请注意,这些材料来自Kevin Howard Goldberg的《XML:QuickStart指南》一书

“在将剩余文本放入第二列之前,它会用尽可能多的文本填充第一列。”几乎就是这样。将字符转换为glyph、将glyph组装成行、将行装配成块区域以及在页面间断开块区域的工作由XSL格式化程序完成。FO中属性的作用是指定XSL格式化程序也必须遵循的约束。例如,
页面宽度
页面高度
是页面大小的约束(它们包含在中的“约束”部分)

keep-*和break-*属性也是XSL格式化程序必须遵循的约束。XSL 1.1()的第4.8节“保持和中断”详细介绍了它们如何应用和交互。如果不指定中断,则不会强制中断,XSL格式化程序将根据其他适用的约束尽最大努力。也就是说,
break-before
break-before
的默认值都是
auto
,而
auto
对于
break-before
()的定义是“不得强制中断”。该定义还包含以下注释:

分页符的出现可能是由格式化程序的处理决定的,受“寡妇”、“孤儿”、“保留与下一个”、“保留与上一个”和“保留在一起”属性的影响


具体针对您的样品、您的问题和您的提问。。。应用了break after=“column”的“块”是一个包含四个附加块的块

在这个容器块上添加break after=“column”的字面意思是“在这个块的末尾断开到下一个列”。因此,在您的例子中,这四个块是流动的(这四个内容块是否导致它们自己的列断开无关紧要)。它们流入两列布局,因为(显然)您的页面为流动区域指定了两列

当格式化程序完成这些内容块(最后一块以“雕像保持打开…”开头)时,它完成了包含块的内容,您在其中指定了break after=“column”

因此,格式化程序为附加内容注入了一个分栏符。在本例中,您位于两列布局的第二列中,因此中断到下一列意味着进入下一页。因此,该块后面的内容从下一列的顶部开始

属性break after=“column”与这里或那里的流动无关,它只是指示格式化程序在指定我的元素的末尾跳到下一列并放下更多内容。它不是遗传的,不会以任何方式改变孩子的行为


如果你想把它简化到n度。。。它真正的意思是,当你遇到指定我的容器时,跳到下一列,从更多内容开始。

我会说它是指当你指定的容器结束(“之后”)时,然后“中断”到下一列。对于多列,这可能是同一页面中的另一列,如果最后一列出现,则可能是下一页。您在图片中看到的效果是,指定该属性的块之后的内容从下一页开始,因为它的结尾位于页面上两列的第二列中。像“break-*”这样的财产与此无关,它将填补这个或那个。谢谢凯文-听说它不是继承的,我很惊讶。从我正在读的书中,我得到了一个印象,所有属性都是由块的子级继承的-你是说对于某些属性,情况并非如此?有些是,有些不是。例如,字体信息为,但换行符不是。标准本身包含继承的详细信息。请参见并查看字体系列,它表示继承。