Pregunta

Estoy escribiendo una aplicación básica de procesamiento de textos y estoy tratando de elegir un formato "interno" nativo, el que mi código analiza para mostrarlo en la pantalla.Me gustaría que esto fuera XML para poder, en el futuro, simplemente escribir XSLT para convertirlo a ODF o XHTML o lo que sea.

Al buscar estándares existentes para utilizar, el único que parece prometedor es ODF.Pero eso parece una exageración enorme para lo que necesito.Todo lo que necesito son etiquetas de párrafo, selección de fuente, tamaño de fuente y decoración... eso es todo.Me llevaría mucho tiempo implementar incluso un renderizador ODF mínimo y no estoy seguro de que valga la pena.

En este momento estoy pensando en crear mi propio formato XML, pero esa no es una buena práctica.Es mejor usar un estándar, especialmente porque probablemente pueda encontrar ya escritos los XSLT que pueda necesitar en el futuro.

¿O debería simplemente hacer el esfuerzo e implementar ODF?

EDITAR:Respecto a la respuesta

Sabía sobre XSL-FO antes, pero debido al peso de la especificación realmente no lo había considerado.Pero tienes razón, un subconjunto me daría todo lo que necesito para trabajar y espacio para crecer.Muchas gracias por el recordatorio.

Además, al incluir una biblioteca de renderizado como FOP o RenderX, obtengo la generación de PDF de forma gratuita.Nada mal...

¿Fue útil?

Solución

Como estás seguro de que necesitas representar el presentacional lado de las cosas, puede que valga la pena mirar el XSL-FO Recomendación del W3C.Este es un lenguaje de descripción de páginas completo y la otra mitad (profundamente pasada de moda) del más conocido XSLT.

Claramente, todo es cualquier cosa menos "Lightwight", pero si solo incorporas un subconjunto muy limitado, que incluso podría ser solo (para que coincida con tu especificación de "etiquetas de párrafo, selección de fuentes, tamaño de fuente y decoración") para: bloquear y el propiedades de fuente comunes, algo como:

<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>

Esto quizás tenga algunas ventajas sobre simplemente lanzar el tuyo propio.Hay una especificación abierta desde la cual trabajar y todo lo que eso implica.Reutiliza propiedades CSS como atributos XML (de manera similar a SVG), por lo que muchos de los detalles de formato le resultarán algo familiares.Tendría una ruta de actualización si luego decidiera que, por ejemplo, la paginación inteligente era una característica imprescindible, incluyendo más secciones de la especificación a medida que se vuelven relevantes para su aplicación.

Hay otra cosa que podrías aprender al investigar XSL-FO: ver cómo incluso hacer párrafos y fuentes puede ser tremendamente complicado.Intentar hacer el diseño del texto y el salto de línea 'de la manera correcta' para varios idiomas y casos de uso diferentes me parece muy desalentador.

Otros consejos

Si es sólo para procesamiento de textos, entonces quizás DocBook ¿Podría ser un poco más ligero que ODF?

Sin embargo, la entrada de la wiki dice:

DocBook es un lenguaje de marcado semántico para documentación técnica.Originalmente fue pensado para escribir documentos técnicos relacionados con hardware y software de computadora, pero puede usarse para cualquier otro tipo de documentación.

Entonces, ¿podría no ser tan adecuado para un procesador de textos de uso general?

La ventaja de utilizar DocBook sería el hecho de que deberían estar disponibles varios convertidores de DocBook -> otros formatos.Espero que esto ayude.

Me gusta DocBook, pero realmente no encaja.Se esfuerza por ser independiente de la presentación, la intención es que use XSLT para representarlo en un formato de presentación.

En un procesador de textos, el usuario edita la presentación junto con el contenido.Por ejemplo, el usuario no quiere marcar una "palabra clave", necesariamente quiere poner algún texto en negrita.

Un editor DocBook sería algo muy bueno (no estoy seguro de que exista uno bueno), pero en realidad no es lo que estoy haciendo.

Bueno, cierto...Pero dado que de todos modos necesito poder convertir a XML, ¿por qué mantener en la memoria tanto mi árbol de documentos como el árbol DOM, cuando no hay nada que me impida trabajar directamente desde el árbol DOM?

Particularmente porque una característica única de mi programa es que todo siempre se guarda a medida que escribes, y no quiero ejecutar una conversión completa a XML cada vez que presiono una tecla.Es más fácil vincular la entrada y la salida directamente a mi árbol DOM en memoria.

Editar:Ah, y el único problema con XHTML es que quiero soportar la paginación básica.Aunque supongo que no hay nada que me impida usar algunas etiquetas adicionales para eso...

XML es un externo formato, no interno.

Qué hay de malo en HTML?Es simple y omnipresente (al menos HTML lo es).Su implementación sería fácil de depurar y sus usuarios estarán eternamente agradecidos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top