2010-08-02 8 views
5

Ich bearbeite Bücher/Artikel in HTML. Diese Texte wurden einmal gedruckt und ich scanne sie, konvertiere sie in ein intermediäres XML-Format und wandle sie dann in HTML (per XSLT) um. Da einige dieser Texte heute vom Markt ausgestorben sind und nur über die großen Bibliotheken verfügbar sind, möchte ich sie so veröffentlichen, dass sie möglicherweise durch Verweis auf die Seitenzahlen im Originaldokument zitiert werden können. Zu diesem Zweck hat mein intermediäres XML-Format ein Element, das einen Seitenumbruch markiert. Im Moment arbeite ich an den XML-> HTML-Transformationen und frage mich, wie ich diese Seitenumbrüche in HTML umwandeln kann. Sie sollten nicht standardmäßig im endgültigen HTML erscheinen (also passt ein einfaches | nicht), aber ich plane, diese Dokumente mit leichtem JavaScript zu umhüllen, das die Markierungen bei Bedarf anzeigt. Ich dachte über <span> s mit einem | in diesem sind standardmäßig ausgeblendet.Wie kann ein Seitenumbruch semantisch korrekt in HTML ausgedrückt werden?

Gibt es einen besseren, möglicherweise 'semantischen' Weg zu diesem Problem?

Antwort

3

Seitenumbrüche sind sehr viel eine Sache von Layout und HTML ist nicht zu beschreiben Layout entworfen, so dass Sie nichts finden werden, das ist semantisch dafür in der Sprache.

Das Beste, auf das Sie hoffen können, ist eine Art Kludge.

Da ein Seitenumbruch in der Mitte eines Absatzes auftreten kann und <p> Elemente nur Inline-Elemente enthalten können, können Sie die meisten Optionen von Anfang an eliminieren.

Die beiden Möglichkeiten, die sich mir vorschlagen, sind <span> und <a>. Ersteres hat keine Semantik, mit der Letzteres verknüpft werden soll (mit einem Namensattribut) oder von (mit einem href-Attribut), und Sie könnten eine Seite aus einem Originaldokument betrachten, mit der Sie vielleicht verlinken möchten.

Egal welches Element Sie verwenden, ich würde keine Markierung darin einschließen und es dann mit CSS verstecken. Diese Art von Präsentations-Flagge ist etwas, was ich über :before in einem Stylesheet (mit einem Nachkommenselektor für einen Körper Klasse kombiniert, die mit JS umgeschaltet werden können, da Sie das Toggle wollen) Zugabe in Betracht ziehen würde

Alternativ, wenn Sie eine nehmen wollen (sehr) breite Sicht auf die Bedeutung von "HTML" könnte man die l element (aus den nicht existierenden XHTML 2-Entwürfen) betrachten und jede Zeile des Originaldokuments markieren. Das Hinzufügen einer Klasse würde anzeigen, wo eine neue Seite begonnen hat (und Sie könnten CSS-Zähler und Rahmen verwenden, um jede Seite und Nummer eindeutig anzugeben, wenn Sie dies wünschen). Schade, dass die Browser-Anbieter sich weigerten, hinter eine echte semantische Markup-Sprache zu kommen und stattdessen HTML 5 bevorzugten.

+0

Ich denke, ich muss etwas in die Spannweite bringen oder ein, weil Chrome keine leeren mag (es saugt die nächsten Elemente nach einer leeren Spanne hinein, bis die nächste Spanne erscheint [Ja ist es geschlossen!] - das ist was ich kann mit den Entwicklertools sehen ...) Danke trotzdem. Ich werde wegen der Verknüpfung etwas mit "a" machen ... könnte später einen Nutzen haben. – Struce

0

Vielleicht können Sie ein XML-Tag nicht geparst/interpretiert von HTML wie <pagebreak/>.

Auf diese Weise HTML angezeigt wird das Tag nicht gerendert aber mit jQuery oder andere Javascript-Bibliothek, transformiert, wenn gefragt, diese bestimmten Tags in Standard
oder was auch immer visuelle Markierung.

Ich denke, dies ist ein semantischer Ansatz sein kann ...

+0

... aber keine HTML-Ansatz. – Quentin

+0

Kann ich diese Validierung durchführen, indem ich einen separaten Namespace für dieses eine Element verwende? (Wie Word beim Export in HTML). Kann ich dann noch etwas mit diesem Element mit Javascript machen? – Struce

+0

Ja, kein HTML-Ansatz, sondern vielleicht ein XHTML-Ansatz. @Struce: Sie können einen Namespace für Ihre speziellen Tags verwenden und Javascript damit umgehen und sie in andere standardmäßige und sichtbare XHTML-Tags umwandeln. – Impiastro

2

ein <div class="Page"> für jede Seite verwenden, und haben einen Stylesheet enthält:

.Page { 
    page-break-after: always; 
} 
+1

... und wenn ein Seitenumbruch im mittleren Absatz erscheint? – Quentin

Verwandte Themen