Облегченный формат RTF? - PullRequest
       19

Облегченный формат RTF?

4 голосов
/ 28 августа 2008

Я пишу базовое приложение для обработки текста и пытаюсь установить собственный «внутренний» формат, который мой код анализирует для отображения на экране. Мне бы хотелось, чтобы это был XML, чтобы в будущем я мог просто написать XSLT, чтобы преобразовать его в ODF, XHTML или что-то еще.

При поиске существующих стандартов для использования единственно перспективным является ODF. Но это выглядит как огромное излишество для того, что мне нужно. Все, что мне нужно, это теги абзаца, выбор шрифта, размер шрифта и оформление ... вот и все. Мне потребовалось бы много времени, чтобы реализовать даже минимальный ODF-рендеринг, и я не уверен, что это стоит того.

Сейчас я думаю о создании собственного формата XML, но это не очень хорошая практика. Лучше использовать стандарт, тем более что тогда я, вероятно, смогу найти XSLT, которые мне могут понадобиться в будущем, уже написано.

Или я должен просто укусить пулю и внедрить ODF?

РЕДАКТИРОВАТЬ: Относительно ответа

Я знал о XSL-FO раньше, но из-за веса спецификации на самом деле его не осудил. Но вы правы, подмножество даст мне все, с чем мне нужно работать, и место для роста. Большое спасибо за напоминание.

Кроме того, благодаря использованию библиотеки рендеринга, такой как FOP или RenderX, я получаю генерацию PDF бесплатно. Неплохо ...

Ответы [ 5 ]

4 голосов
/ 30 августа 2008

Поскольку вы уверены в необходимости представлять презентационную сторону вещей, возможно, стоит взглянуть на рекомендацию XSL-FO W3C. Это полноценный язык описания страниц и (глубоко немодная) другая половина более известного XSLT.

Ясно, что все это совсем не "легковес", но если вы только что включили очень ограниченное подмножество - которое может быть даже (в соответствии с вашей спецификацией «теги абзаца, выбор шрифта, размер шрифта и оформление») fo: block и общих свойств шрифта , что-то как:

<yourcontainer xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:block font-family="Arial, sans-serif" font-weight="bold"
        font-size="16pt">Example Heading</fo:block>
    <fo:block font-family="Times, serif"
        font-size="12pt">Paragraph text here etc etc...</fo:block>
</yourcontainer>

Это, возможно, будет иметь несколько преимуществ по сравнению с тем, чтобы просто кататься. Есть открытая спецификация для работы, и все это подразумевает. Он повторно использует свойства CSS в качестве атрибутов XML (аналогично SVG), поэтому многие детали форматирования покажутся вам знакомыми. У вас будет путь обновления, если вы позже решите, что, скажем, интеллектуальная подкачка страниц является обязательной функцией, включая дополнительные разделы спецификации, которые становятся релевантными для вашего приложения.

Есть еще одна вещь, которую вы можете получить от исследования XSL-FO - увидеть, как даже просто делать абзацы и шрифты могут быть ужасно сложными. Попытка сделать разметку текста и разрыв строки «Правильный путь» для разных языков и вариантов использования кажется мне очень сложной.

1 голос
/ 28 августа 2008

Мне нравится DocBook, но он не совсем подходит. Он стремится быть независимым от представления, при этом вы намерены использовать XSLT для его отображения в формате представления.

В текстовом редакторе пользователь редактирует презентацию вместе с контентом. Например, пользователь не хочет помечать «ключевое слово», он обязательно должен сделать текст жирным.

Редактор DocBook был бы очень приятной вещью (я не уверен, что хороший существует), но это не совсем то, что я делаю.

1 голос
/ 28 августа 2008

Если это только для обработки текста, то, возможно, DocBook может быть немного легче, чем ODF?

Тем не менее, запись в вики гласит:

DocBook - это язык семантической разметки для технической документации. Первоначально он предназначался для написания технических документов, связанных с компьютерным оборудованием и программным обеспечением, но может использоваться для любой другой документации.

Так что, возможно, он не подходит для текстового процессора общего назначения?

Преимущество использования DocBook заключается в том, что должно быть доступно несколько DocBook -> конвертеров других форматов? Надеюсь, это поможет.

0 голосов
/ 28 августа 2008

Хорошо, верно ... Но так как мне все равно нужно иметь возможность конвертировать в XML, зачем хранить в памяти и мое дерево документов, и дерево DOM, когда ничто не мешает мне работать прямо из дерева DOM? *

В особенности потому, что одна уникальная особенность моей программы заключается в том, что все сохраняется всегда, когда вы печатаете, и я не хочу выполнять полное преобразование в XML каждый раз, когда я нажимаю клавишу. Проще просто связать ввод и вывод непосредственно с моим DOM-деревом в памяти.

Edit: Да, и единственная проблема с XHTML состоит в том, что я хочу поддерживать базовую нумерацию страниц. Хотя, думаю, ничто не мешает мне использовать для этого некоторые дополнительные теги ...

0 голосов
/ 28 августа 2008

XML - это внешний формат, а не внутренний .

Что не так с XHTML ? Это просто и вездесуще (по крайней мере, HTML есть). Ваша реализация будет легко отлаживаться, а ваши пользователи будут вечно благодарны.

...