Domanda

Sto scrivendo un'applicazione di elaborazione testi di base e sto cercando di accontentarmi di un formato "interno" nativo, quello che il mio codice analizza per essere visualizzato sullo schermo.Mi piacerebbe che fosse XML in modo da poter, in futuro, scrivere semplicemente XSLT per convertirlo in ODF o XHTML o altro.

Quando si cercano gli standard esistenti da utilizzare, l’unico che sembra promettente è ODF.Ma sembra un eccesso enorme per quello di cui ho bisogno.Tutto ciò di cui ho bisogno sono i tag dei paragrafi, la selezione del carattere, la dimensione del carattere e la decorazione... praticamente è tutto.Mi occorrerebbe molto tempo per implementare anche un renderer ODF minimo e non sono sicuro che ne valga la pena.

In questo momento sto pensando di creare il mio formato XML, ma non è proprio una buona pratica.Meglio usare uno standard, soprattutto perché allora probabilmente potrò trovare già scritti gli XSLT di cui potrei aver bisogno in futuro.

O dovrei semplicemente stringere i denti e implementare ODF?

MODIFICARE:Per quanto riguarda la risposta

Conoscevo già XSL-FO, ma a causa del peso delle specifiche non l'avevo davvero preso in considerazione.Ma hai ragione, un sottoinsieme mi darebbe tutto ciò di cui ho bisogno per lavorare e spazio per crescere.Grazie mille del promemoria.

Inoltre, includendo una libreria di rendering come FOP o RenderX, ottengo la generazione di PDF gratuitamente.Non male...

È stato utile?

Soluzione

Poiché sei sicuro di dover rappresentare il presentazionale lato delle cose, potrebbe valere la pena dare un'occhiata a XSL-FO Raccomandazione del W3C.Questo è un linguaggio di descrizione della pagina in piena regola e l'altra metà (profondamente fuori moda) del più noto XSLT.

Chiaramente il tutto è tutt'altro che "Lightwight", ma se hai appena incorporato un sottoinsieme molto limitato - che potrebbe anche essere (per abbinare le tue specifiche di "Tag del paragrafo, selezione dei caratteri, dimensioni e decorazioni dei caratteri") fo:blocco e il proprietà comuni dei caratteri, qualcosa di simile a:

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

Questo forse avrebbe alcuni vantaggi rispetto al semplice rotolamento del tuo.C'è una specifica aperta su cui lavorare e tutto ciò che implica.Riutilizza le proprietà CSS come attributi XML (in modo simile a SVG), quindi molti dettagli di formattazione sembreranno in qualche modo familiari.Avresti un percorso di aggiornamento se in seguito decidessi che, ad esempio, il paging intelligente era una funzionalità indispensabile, comprese più sezioni delle specifiche man mano che diventano rilevanti per la tua applicazione.

C'è un'altra cosa che potresti ottenere indagando su XSL-FO: vedere come anche solo fare paragrafi e caratteri può essere terribilmente complicato.Cercare di eseguire il layout del testo e l'interruzione di riga "nel modo giusto" per varie lingue e casi d'uso diversi mi sembra molto scoraggiante.

Altri suggerimenti

Se è solo per l'elaborazione di testi, allora forse DocBook potrebbe essere un po' più leggero di ODF?

Tuttavia, la voce wiki afferma:

DocBook è un linguaggio di markup semantico per la documentazione tecnica.Originariamente era destinato alla scrittura di documenti tecnici relativi all'hardware e al software del computer, ma può essere utilizzato per qualsiasi altro tipo di documentazione.

Quindi potrebbe non essere così adatto per un elaboratore di testi generico?

Il vantaggio di utilizzare DocBook sarebbe il fatto che dovrebbero essere disponibili numerosi convertitori di formato DocBook -> altri?Spero che questo ti aiuti.

Mi piace DocBook, ma non è proprio adatto.Si sforza di essere indipendente dalla presentazione, l'intenzione è quella di utilizzare XSLT per renderlo in un formato di presentazione.

In un elaboratore di testi, l'utente modifica la presentazione insieme al contenuto.Ad esempio, l'utente non vuole necessariamente contrassegnare una "parola chiave", desidera rendere il testo in grassetto.

Un editor DocBook sarebbe una cosa molto carina (non sono sicuro che ne esista uno valido), ma non è proprio quello che sto facendo.

Beh, giusto...Ma dal momento che devo comunque essere in grado di convertire in XML, perché tenere in memoria sia l'albero dei documenti che l'albero del DOM, quando non c'è nulla che mi impedisca di lavorare direttamente dall'albero del DOM?

Soprattutto perché una caratteristica unica del mio programma è che tutto viene sempre salvato durante la digitazione e non voglio eseguire un'intera conversione in XML ogni volta che premo un tasto.È più semplice collegare input e output direttamente al mio albero DOM in memoria.

Modificare:Oh, e l'unico problema con XHTML è che voglio supportare l'impaginazione di base.Anche se immagino che non ci sia nulla che mi impedisca di usare alcuni tag aggiuntivi per questo...

XML è un esterno formato, no interno.

Cosa c'è che non va XHTML?È semplice ed è onnipresente (almeno lo è l'HTML).Sarebbe facile eseguire il debug della tua implementazione e i tuoi utenti saranno eternamente grati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top