I just checked into GitHub the code for selectable stylesheets.
Until now, a Novelang project could define its own stylesheets, using custom stylesheets. While Novelang can render PDF and HTML with its own, built-in stylesheets, every user probably needs to define his-her own ones. When rendering a document, Novelang attempts to find appropriate stylesheet:
- In the directory given by
novelang.stylesheet.dir
system property, if defined.
- In a
style
directory under the directory from which Novelang was launched (corresponding to user.dir
).
- Inside
Novelang-x.x.x.jar
under the /style
directory.
"Appropriate stylesheet" means a stylesheet corresponding to the MIME type of requested document:
pdf.xsl
for a PDF document,
html.xsl
for a HTML document. That was not flexible enough because the same document of the same MIME type may deserve multiple renderings, like "miser printing", "visually impaired" and "tree-killer". That's where selectable stylesheets come to the rescue.
With selectable stylesheets, you give the name of the stylesheet to use. This can be done at query level, or at book level.
Let's say this is your project layout, with two stylesheets under the
style
directory:
/
book.nlb
chapter-1.nlp
chapter-2.nlp
style/
html-quick.xsl
html-beautiful.xsl
pdf-beautiful.xsl
After launching Novelang HTTP daemon, you can use the
stylesheet
query parameter to override any other stylesheet name:
http://localhost:8080/chapter-1.html?stylesheet=html-beautiful.xsl
Please note the
html-beautiful.xsl
path is
still relative to the directory containing custom stylesheets!
Another place to set stylesheet names is the Book file. Since a Book doesn't know how it will be rendered, you can define a stylesheet for multiple document MIME types. The
book.nlb
would look like this:
mapstylesheets
$html=html-beautiful.xsl
$pdf=pdf-beautiful.xsl
insert file:chapter-1.nlp
insert file:chapter-2.nlp
I've not tested subdirectories yet but they are supposed to work. Keep in mind: they will be relative
to the directory containing your stylesheets. Supporting multiple stylesheets is a necessary step before provinding nice built-in stylesheets to be tried with documents of your own.
No comments:
Post a Comment