Вопрос

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

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

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

Или я должен просто стиснуть зубы и внедрить ODF?

Редактировать:Что касается Ответа

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

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

Это было полезно?

Решение

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

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

<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 - увидеть, как даже простое выполнение абзацев и шрифтов может быть ужасно сложным.Попытка сделать разметку текста и разбивку строк "Правильным способом" для разных языков и вариантов использования кажется мне очень сложной.

Другие советы

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

Однако в статье вики говорится:

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top