summaryrefslogtreecommitdiff
path: root/xsl/webpage.xsl
diff options
context:
space:
mode:
Diffstat (limited to 'xsl/webpage.xsl')
-rw-r--r--xsl/webpage.xsl173
1 files changed, 173 insertions, 0 deletions
diff --git a/xsl/webpage.xsl b/xsl/webpage.xsl
new file mode 100644
index 0000000..c6310e2
--- /dev/null
+++ b/xsl/webpage.xsl
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:webpage="webpage"
+ exclude-result-prefixes="webpage">
+ <xsl:output method="html" encoding="utf-8" indent="yes" />
+ <xsl:strip-space elements="*"/>
+ <xsl:preserve-space elements="webpage:text"/>
+
+ <xsl:template match="/">
+ <xsl:apply-templates select="/document/webpage:webpage"/>
+ </xsl:template>
+
+ <xsl:template match="/document/webpage:webpage">
+ <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html&gt;</xsl:text>
+ <html>
+ <head>
+ <meta charset="utf-8"/>
+ <link rel="stylesheet" type="text/css" href="style/style.css"/>
+ <title><xsl:apply-templates select="title/webpage:text"/></title>
+ </head>
+ <body lang="en">
+ <header>
+ <section>
+ <h1>Ousía Framework</h1>
+ <nav>
+ <ul>
+ <li><a href="#">About</a></li>
+ <li><a href="#">Documentation</a></li>
+ <li><a href="#">Download</a></li>
+ </ul>
+ </nav>
+ </section>
+ </header>
+ <main>
+ <xsl:apply-templates select="webpage:*"/>
+ </main>
+ <footer>
+ <section>
+ <nav>
+ <ul>
+ <li><h3>Learn</h3>
+ <ul>
+ <li><a href="index.html">About</a></li>
+ <!--<li><a href="#">Tutorial</a></li>
+ <li><a href="#">FAQ</a></li>
+ <li><a href="#">Examples</a></li>-->
+ </ul>
+ </li>
+ <li><h3>Get Ousía</h3>
+ <ul>
+ <li><a href="download.html">Download</a></li>
+ <!--<li><a href="#">Repository</a></li>-->
+ </ul>
+ </li>
+ <!--<li><h3>Develop</h3>
+ <ul>
+ <li><a href="#">Documentation</a></li>
+ <li><a href="#">Browse source</a></li>
+ <li><a href="#">Bug tracker</a></li>
+ </ul>
+ </li>-->
+ <li><h3>Legal</h3>
+ <ul>
+ <li><a href="impressum.html">Impressum</a></li>
+ <li><a href="license.html">License</a></li>
+ </ul>
+ </li>
+ </ul>
+ </nav>
+ </section>
+ <section id="copyright">
+ <p>Ousía – Extensible Semantic Markup Framework (c) 2015 Andreas Stöckel, Benjamin Paaßen</p>
+ <p>Unless noted otherwise the content of this website (including, but not limited to text, images, markup and stylesheets) is licensed under the <a href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>. The uncompiled source code of the website is available at TODO.
+ </p>
+ <p>
+ This website was made using <a href="http://git-scm.com/">git</a>, <a href="http://lesscss.org/">Less</a>, <a href="http://ousia-framework.org/">Ousía</a> and <a href="http://xmlsoft.org/libxslt/">xsltproc</a>.
+ </p>
+ </section>
+ </footer>
+ <script type="text/javascript" src="script/ousia.js"/>
+ </body>
+ </html>
+ </xsl:template>
+
+ <!-- Transform masthead and section into a section -->
+ <xsl:template match="webpage:masthead|webpage:section">
+ <section>
+ <xsl:if test="self::webpage:masthead">
+ <xsl:attribute name="class">masthead</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="title"/>
+ <xsl:apply-templates select="subtitle"/>
+ <xsl:apply-templates select="webpage:*"/>
+
+ <!-- Gather all footnotes -->
+ <xsl:if test="descendant::webpage:footnote">
+ <ol class="footnotes">
+ <xsl:apply-templates select="descendant::webpage:footnote" mode="footnote"/>
+ </ol>
+ </xsl:if>
+ </section>
+ </xsl:template>
+
+ <!-- Subsections -->
+ <xsl:template match="webpage:pitch|webpage:nav|webpage:subsection">
+ <div>
+ <xsl:variable name="seqNo"><xsl:number level="any" count="webpage:pitch|webpage:nav|webpage:subsection" format="1"/></xsl:variable>
+ <xsl:variable name="class">subsection<xsl:if test="self::webpage:pitch"> pitch</xsl:if><xsl:if test="self::webpage:nav"> nav</xsl:if> <xsl:if test="$seqNo = 1"> first</xsl:if></xsl:variable>
+ <xsl:attribute name="class">
+ <xsl:value-of select="$class"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="webpage:*"/>
+ </div>
+ </xsl:template>
+
+ <!-- Titles and subtitles -->
+ <xsl:template match="title">
+ <xsl:if test="webpage:text">
+ <h1><xsl:apply-templates select="webpage:text"/></h1>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match="subtitle">
+ <xsl:if test="webpage:text">
+ <h2><xsl:apply-templates select="webpage:text"/></h2>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Paragraphs -->
+ <xsl:template match="webpage:paragraph">
+ <p>
+ <xsl:apply-templates select="child::*"/>
+ </p>
+ </xsl:template>
+
+ <!-- Buttons -->
+ <xsl:template match="webpage:button">
+ <a class="button">
+ <xsl:copy-of select="@*" />
+ <xsl:apply-templates select="webpage:text"/>
+ </a>
+ </xsl:template>
+
+ <!-- IPA -->
+ <xsl:template match="webpage:ipa">
+ <xsl:value-of select="webpage:text"/>
+ <span class="ipa"> [<xsl:value-of select="pronunciation"/>] </span>
+ </xsl:template>
+
+ <!-- Footnotes -->
+ <!-- Adapted from: http://www.microhowto.info/howto/create_a_list_of_numbered_footnotes_using_xslt.html -->
+ <xsl:template match="webpage:footnote">
+ <a>
+ <xsl:attribute name="name">footnoteref<xsl:number level="any" count="webpage:footnote" format="1"/></xsl:attribute>
+ <xsl:attribute name="href">#footnote<xsl:number level="any" count="webpage:footnote" format="1"/></xsl:attribute>
+ <sup><xsl:number level="any" count="webpage:footnote" format="[1]"/></sup>
+ </a>
+ </xsl:template>
+ <xsl:template match="webpage:footnote" mode="footnote">
+ <li>
+ <a>
+ <xsl:attribute name="name">footnote<xsl:number level="any" count="webpage:footnote" format="1"/></xsl:attribute>
+ <xsl:attribute name="href">#footnoteref<xsl:number level="any" count="webpage:footnote" format="1"/></xsl:attribute>
+ <xsl:number level="any" count="webpage:footnote" format="[1]"/>
+ </a>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="webpage:*"/>
+ </li>
+ </xsl:template>
+</xsl:stylesheet>
+