Novelang has no semantic markup, insteads it creates an AST (Abstract Syntax Tree) to feed a stylesheet with. This allows creating document-specific idioms, to be handled at stylesheet level. Here is one.
Starting from source document like this:
<< [INFO] This is an info block. >> << [WARNING] Beware of "this" paragraph. (This warning spreads on several paragraphs.) >>
We want lines of literal to appear in a special manner (like within a frame and with a special icon in the margin). Here is how to achieve this:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:n="http://novelang.org/book-xml/1.0"
>
<xsl:import href="default-html.xsl" />
<xsl:import href="punctuation-FR.xsl" />
<xsl:template match="/" >
<xsl:apply-imports/>
</xsl:template>
<xsl:template match="n:paragraphs-inside-angled-bracket-pairs" >
<xsl:choose>
<xsl:when
test="n:paragraph-regular[1]/n:block-inside-square-brackets[1]='WARNING'"
>
<blockquote>
<b>WARNING</b><br/>
<xsl:apply-templates />
</blockquote>
</xsl:when>
<xsl:when
test="n:paragraph-regular[1]/n:block-inside-square-brackets[1]='INFO'"
>
<blockquote>
<b>INFO</b><br/>
<xsl:apply-templates />
</blockquote>
</xsl:when>
<xsl:otherwise>
<blockquote>
<xsl:apply-templates />
</blockquote>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template
match="n:block-inside-square-brackets[ text()='WARNING' or text()='INFO' ]"
/>
</xsl:stylesheet>
No comments:
Post a Comment