Язык форматирования с плавающим элементом, похожим на div - PullRequest
2 голосов
/ 01 июня 2011

У меня есть данные, хранящиеся в структурированном XML, которые я хочу сделать более читабельными, используя XSLT (или другую альтернативу). В целевом документе должно быть много экземпляров текста, выровненных как по левому, так и по правому краю одной и той же строки, и мне нужно иметь поведение, подобное div float:

<div style="float: left;">
  <p align=left>
    Left text. Left text. Left text. Left text. Left text. Left text. 
  </p>
</div>

<div style="float: right;">
  <p align=right>
    Right text. Right text. Right text. Right text. Right text. Right text. 
  </p>
</div>
<div style="clear: both;" />

Таким образом, когда длина обоих текстов превышает ширину контейнера, записывается DIV «Левый текст», а затем DIV «Правый текст» пишущий НИЖЕ it.

Я не могу использовать XSLT для создания HTML-файла, потому что он будет использоваться в печати, и мне также нужен язык, который имеет некоторую функцию «держать вместе» при разрывах страниц (если разрыв страницы происходит в середине элемент, он должен сломаться перед элементом). Наличие таблиц, поддерживающих автоматическое изменение размеров столбцов (например, таблицы HTML), было бы огромным плюсом, но не обязательно.

Я изучал XSL-FO, но не смог найти бесплатный рендер, поддерживающий эти функции. Я думал об использовании XSL для создания файла WordML, но я не нашел никаких руководств по нему. Было бы здорово иметь документ Word (или Open Office), потому что я мог бы внести небольшие изменения. Также я рассматриваю возможность использования LaTex.

Что вы можете мне предложить?

РЕДАКТИРОВАТЬ: Я проверял некоторые функции CSS, о которых я не знал (не сталкивался с этим в течение многих лет), и у него действительно есть некоторые функции, связанные с печатью (разрыв страницы: избегать , @page и т. д.), кроме отличной поддержки поплавков и автоматического размещения таблиц. Несмотря на то, что функции печати широко не поддерживаются, Opera и IE поддерживают его, и я провел несколько тестов в IE9, и он отрисовался очень хорошо. Поэтому я попробую XSLT с HTML / CSS, поскольку в нем есть все, что мне нужно, и у меня будет более плавная кривая обучения (я уже знаю немного CSS и использую HTML годами).

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Я думаю, вам следует выбрать более общий подход к вашей проблеме, выбрав известную стандартную XML-схему, такую ​​как DITA или DOCBOOK.

Преимущество этих схем состоит в том, что вы можете написать свой собственный XML и отрисоватьэто как вам нужно в соответствии с форматом вывода, который они поддерживают.Более того, они бесплатны, и вы можете легко получить PDF, RTF, WebHelp, HTML и т. Д., Если у вас есть правильные исходные документы.

Итак, вам необходимо:

  • сделатьваше решение, DITA или DOCBOOK?
  • написать преобразование, которое получает ваш XML, и преобразовать его в конкретный стандарт DITA или DOCBOOK
  • решить, какой инструмент использовать для управления выбранным вами стандартом и протестироватьвсе выходные данные, которые вы можете получить из него, и посмотрите, какой из них подходит лучше.

Если вы решите выбрать DITA, у вас есть два варианта free :

  • DITA-OT
  • DITAC

Лично я бы пошел с DITA и DITA-OT, потому что он имеет гибкость плагинов на основе XSLT и пользовательских сборок на основе ANT.Но у обоих есть свои причины.Я начал с DITA-OT и закончил с использованием DITA-OT и DITAC.

Я не стал здесь указывать, потому что вы можете легко найти то, что вам нужно, с помощью Google.


О FLOAT

DITA-OT предоставляет специальный трансстип XSL-FO, который называется PDF2 и процессор XSL-FO которого является RenderX.RenderX в настоящее время поддерживает fo: float, так что я думаю, вы сможете найти свой путь.Возможно, вам потребуется переопределить какой-нибудь шаблон PDF2, что, безусловно, проще, чем реализация собственного преобразования PDF.

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

0 голосов
/ 01 июня 2011

Я бы определенно придерживался XSL-FO и Apache Fop . Я был очень доволен результатами, которые смог получить, и единственное, что я вижу, это борьба, когда кто-то думает, что это хорошая идея - попытаться заставить его создавать документы Word. Я никогда не видел, чтобы это дало хорошие результаты. Фактически, я был доволен результатами, которые он производит в формате PDF или PS.

Пожалуйста, опишите, как FOP не дотягивает до плаваний и разрывов страниц? Трудно понять, является ли это проблемой, специфичной для этих функций, или она была специфической для этих функций с выходным форматом Word / RTF / HTML.

Наконец, я бы избежал настройки в менталитете «Работа / Открытый офис». Если вы собираетесь автоматизировать создание документов, потратьте время на то, чтобы все было правильно, чтобы не было ручных действий.

...