diff options
Diffstat (limited to 'kate/tests/highlight.xsl')
-rw-r--r-- | kate/tests/highlight.xsl | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/kate/tests/highlight.xsl b/kate/tests/highlight.xsl new file mode 100644 index 000000000..f6e0efb12 --- /dev/null +++ b/kate/tests/highlight.xsl @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="iso-8859-15"?> + +<!-- + This file is freely distributable, created by Wilbert Berendsen (wbsoft@xs4all.nl) + + This is just a simple XSLT file that converts some HTML pages to a XBEL bookmarklist. + It is included here to test the new XSLT highlighting by Peter Lammich. + + TODO: add better test file. +--> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" +xmlns:h="http://www.w3.org/1999/xhtml"> +<xsl:output method="xml" encoding="iso-8859-15" indent="yes" + doctype-public="+//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML" + doctype-system="http://www.python.org/topics/xml/dtds/xbel-1.0.dtd" +/> + +<!-- main --> +<xsl:template match="/"> +<xbel><folder><title>Linux at Home Links</title> +<xsl:for-each select="//*[@id='maincontents']//h:li"> + <xsl:variable name="f" select="document(h:a/@href)/h:html"/> + <folder> + <title><xsl:value-of select="h:a/h:strong"/></title> + <desc><xsl:value-of select="normalize-space(h:a/text())"/></desc> + <xsl:for-each select="$f//h:div[@id='maincontents']"> + <xsl:call-template name="getbookmarks"/> + </xsl:for-each> + + </folder> +</xsl:for-each> +</folder></xbel> +</xsl:template> +<!-- end of main --> + +<!-- get bookmarks from a page --> +<xsl:template name="getbookmarks"> + +<xsl:choose> + <!-- harvest links from p or li elements --> + <xsl:when test="self::h:li or self::h:p"> + <xsl:variable name="t" select="normalize-space()"/> + <xsl:for-each select=".//h:a[1]"> + <xsl:call-template name="bookmark"> + <xsl:with-param name="desc" select="$t"/> + </xsl:call-template> + </xsl:for-each> + <xsl:for-each select=".//h:a[position()!=1]"> + <xsl:call-template name="bookmark"/> + </xsl:for-each> + </xsl:when> + + + <xsl:otherwise> + <xsl:for-each select="*"> + <xsl:call-template name="getbookmarks"/> + </xsl:for-each> + </xsl:otherwise> + +</xsl:choose> + +</xsl:template> + + +<xsl:template name="bookmark"> + <xsl:param name="href" select="@href"/> + <xsl:param name="desc" select="''"/> + <xsl:param name="title" select="normalize-space()"/> + + <xsl:variable name="realdesc"> + <xsl:choose> + <xsl:when test="starts-with($desc,$title)"> + <xsl:choose> + <xsl:when test="starts-with(translate(substring-after($desc,$title),',.;','...'),'.')"> + <xsl:value-of select="substring($desc,string-length($title) + 2)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="substring-after($desc,$title)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$desc"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <bookmark> + <xsl:attribute name="href"> + <xsl:choose> + <xsl:when test="starts-with($href,'http://') or starts-with($href,'ftp://') or starts-with($href,'mailto:')"> + <xsl:value-of select="$href"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('http://www.xs4all.nl/~wbsoft/linux/links/',$href)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <title><xsl:value-of select="normalize-space($title)"/></title> + <xsl:if test="normalize-space($realdesc) != ''"> + <desc><xsl:value-of select="normalize-space($realdesc)"/></desc> + </xsl:if> + </bookmark> +</xsl:template> + + + +</xsl:stylesheet> |