Mercurial > geeqie
diff doc/wiki2docbook/headingsNormalizer/headingsNormalizer.xsl @ 1773:2ae81598b254
scripts for converting wiki documentation to docbook
author | nadvornik |
---|---|
date | Sun, 22 Nov 2009 09:12:22 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/wiki2docbook/headingsNormalizer/headingsNormalizer.xsl Sun Nov 22 09:12:22 2009 +0000 @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xhtml="http://www.w3.org/1999/xhtml" + xmlns="http://www.w3.org/1999/xhtml"> + <xsl:output method="xml" indent="yes"/> + + <!-- + This stylesheet can be applied to xhtml documents. It ensures one one + h1 element exists per document. If the input document has only one h1 + element it just copies all nodes to the output, otherwise it adds a + new top level (h1) heading and depromotes every existing heading to a + lower level (ie, h1s turn into h2s, h2s turn into h3s, etc). + --> + + <xsl:param name="defaultHeading" select="'Chapter'"/> + + <xsl:template match="xhtml:html" mode="addtoplevelheading"> + <html> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </html> + </xsl:template> + + <xsl:template match="xhtml:body" mode="addtoplevelheading"> + <body><h1><xsl:value-of select="$defaultTopHeading"/></h1> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </body> + </xsl:template> + + <xsl:template match="xhtml:h1" mode="addtoplevelheading"> + <h2> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </h2> + </xsl:template> + + <xsl:template match="xhtml:h2" mode="addtoplevelheading"> + <h3> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </h3> + </xsl:template> + + <xsl:template match="xhtml:h3" mode="addtoplevelheading"> + <h4> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </h4> + </xsl:template> + + <xsl:template match="xhtml:h4" mode="addtoplevelheading"> + <h5> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </h5> + </xsl:template> + + <xsl:template match="xhtml:h5" mode="addtoplevelheading"> + <h6> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </h6> + </xsl:template> + + <xsl:template match="xhtml:h6" mode="addtoplevelheading"> + <section> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </section> + </xsl:template> + + <xsl:template match="@*|node()|text()|comment()|processing-instruction()" priority="-1" mode="addtoplevelheading"> + <xsl:copy> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </xsl:copy> + </xsl:template> + + <xsl:template match="img[@alt]" priority="-1"> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" /> + </xsl:template> + + <xsl:template match="@*|node()|text()|comment()|processing-instruction()" priority="-1"> + <xsl:choose> + <xsl:when test="count(//*[local-name()='h1'])=1"> + <xsl:copy> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" /> + </xsl:copy> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates select="@*|node()|text()|comment()|processing-instruction()" mode="addtoplevelheading"/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> + </xsl:template> +</xsl:stylesheet>