<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:s="http://www.w3.org/2005/sparql-results#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xhtml="http://www.w3.org/1999/xhtml" 
    exclude-result-prefixes="s xsl rdf xhtml">
    
    <xsl:output method="xml" encoding="UTF-8" />
    
    <xsl:template match="/s:sparql">
        <opml version="2.0">
            <head>
                <title>SPARQL Query Result</title>
            </head>
            <body>
                <xsl:apply-templates select="s:results" />
            </body>
        </opml>
    </xsl:template>
    
    <xsl:template match="/s:sparql/s:results">
        <xsl:for-each select="s:result">
            <xsl:sort select="./s:binding[@name='text']/literal" />
            <xsl:element name="outline">
                <xsl:if test="s:binding[@name='text']">
                    <xsl:attribute name="text">
                        <xsl:value-of select="s:binding[@name='text']/*" />
                    </xsl:attribute>
                </xsl:if>
                <xsl:if test="s:binding[@name='xmlUrl']">
                    <xsl:attribute name="type">
                        <xsl:text>rss</xsl:text>
                    </xsl:attribute>
                    <xsl:attribute name="xmlUrl">
                        <xsl:value-of select="s:binding[@name='xmlUrl']/*" />
                    </xsl:attribute>
                    <xsl:if test="s:binding[@name='htmlUrl']">
                        <xsl:attribute name="htmlUrl">
                            <xsl:value-of select="s:binding[@name='htmlUrl']/*" />
                        </xsl:attribute>
                    </xsl:if>
                </xsl:if>
                <xsl:if test="s:binding[@name='includeUrl']">
                    <xsl:attribute name="type">
                        <xsl:text>include</xsl:text>
                    </xsl:attribute>
                    <xsl:attribute name="url">
                        <xsl:value-of select="s:binding[@name='includeUrl']/*" />
                    </xsl:attribute>
                </xsl:if>
                <xsl:if test="s:binding[@name='linkUrl']">
                    <xsl:attribute name="type">
                        <xsl:text>link</xsl:text>
                    </xsl:attribute>
                    <xsl:attribute name="url">
                        <xsl:value-of select="s:binding[@name='linkUrl']/*" />
                    </xsl:attribute>
                </xsl:if>
            </xsl:element>
        </xsl:for-each>
    </xsl:template>
    
    <xsl:template match="text()"/>
</xsl:stylesheet>
