2013-07-29 1 views
0

Выравнивание чистого текста в правой части документа легко в XSL-FO. Однако выравнивание всей таблицы в правой части документа оказывается довольно сложным.Float Весь стол справа - XSL-FO

То, что я хочу сделать, это что-то вроде этого:

fo:table align=left 

{Table content} 

/fo:table 

И я знаю, что есть <fo:float> объект, но это, кажется, не работает так, как я хочу его, или если он делает, объяснение того, как это работает, плохо сформулировано во всех случаях, которые я смог найти.

Вкратце: Как я могу сделать стол плавать слева в XSL-FO?

EDIT: Я выяснил, почему Float не работает. По-видимому, это не поддерживается в нашей версии Apache FOP. Любые известные альтернативы?

ответ

3

Термин «плавающий» имеет определенное значение в XSL-FO. Если вы хотите вывести таблицу из вертикального потока, поместите ее в начало страницы и остальной поток продолжите в конце таблицы, тогда <float float="start"><table>...</table></float> - это способ сделать это в XSL-FO.

В заголовке и тексте вашего вопроса говорится о плавании вправо, поэтому я предполагаю, что вы имеете в виду плавание в конце страницы. Это было бы, конечно, <float float="end">.

Если вы не намерены вытащить стол из потока, вместо того, чтобы просто пропустить стол и выровнять таблицу на конце страницы, что выполняется в XSL-FO, используя <table-and-caption text-align="end"> а затем не использовать подпись. Но не все коммерческие двигатели XSL-FO поддерживают спецификацию в этом отношении.

Я не могу посоветовать вам FOP, поскольку это не инструмент, который я использовал для любого из моих клиентов.

+0

Я извиняюсь за непринужденность моего объяснения. Я признаю, что, когда речь идет о технической терминологии (например, о точном значении объекта «float»), я склонен быть немного менее красноречивым, чем я должен быть. К сожалению, я попытался использовать ваше решение как указано (вы уверены, что это , а не , кстати?), Но, похоже, он не работает для моей версии FOP (в любом случае). Однако я бы не стал препятствовать другим использовать его, если они используют другой драйвер. – Zibbobz

+3

В моих таблицах стилей я использую 'xmlns =" ​​http://www.w3.org/1999/XSL/Format ", чтобы я мог написать' 'без префикса. В префиксе «fo:» нет ничего особенного ... он может быть «' if 'xmlns: hello =" http://www.w3.org/1999/XSL/Format ". –

0

После некоторых экспериментов я придумал решение. Это ... неэлегантно, мягко говоря, но это работает. Это приведет к созданию таблицы с правильной настройкой на 7 см с колонкой 3 см и столбцом 5 см, хотя это не позволит пользователю писать какой-либо контент слева от таблицы, если он не будет тщательно отформатирован в пустые столбцы размером 7 см.

fo:table width="15cm" 
fo:table-column column-width="7cm"/ 
fo:table-column column-width="3cm"/ 
fo:table-column column-width="5cm"/ 
fo:table-row 
fo:table-cell border="none" 
[Intentionally left blank] 
/fo:table-cell 
fo:table-cell border="solid" 
[Content of 3cm column] 
/fo:table-cell 
fo:table-cell border="solid" 
[Content of 5cm column] 
/fo:table-cell 
/fo:table-row 
/fo:table 

Обратите внимание, что это имеет некоторые недостатки (не будучи в состоянии написать в левой части таблицы без явного форматирования для каждой строки, будучи очень безвкусный), но он работает в качестве решения в Apache FOP.

+0

не изящный и не плавающий, то есть форматирование таблицы из трех столбцов с двумя столбцами содержимого. «Float» означает, что вы плаваете вокруг и позволяете содержимому течь вокруг меня. Таким образом, это не ответ на ваш вопрос, если вы неправильно его сформулировали. –

+0

Я думаю, что это скорее решение моей проблемы, чем реальный ответ на вопрос. Идеальный ответ будет работать для любого случая и разрешить перенос текста (которого я действительно не хочу в этом случае, но я пытался задать вопрос, который мог бы привести к ответу, который будет применяться не только для моего ситуация). – Zibbobz

Смежные вопросы