<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:len="http://www.xfront.com/owl/ontologies/Length/#"
                xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                version="2.0">
 
    <xsl:function name="len:Length" as="element()">
        <xsl:param name="length" as="item()"/>

        <xsl:choose>
            <xsl:when test="$length/len:units/@rdf:resource='http://www.xfront.com/owl/ontologies/Length/#Kilometre'">
                <Length xmlns="http://www.xfront.com/owl/ontologies/Length/#">
                    <value><xsl:value-of select="$length/len:value * 1000"/></value>
                    <units rdf:resource="http://www.xfront.com/owl/ontologies/Length/#Metre"/>
                </Length>
            </xsl:when>
            <xsl:when test="$length/len:units/@rdf:resource='http://www.xfront.com/owl/ontologies/Length/#Mile'">
                <Length xmlns="http://www.xfront.com/owl/ontologies/Length/#">
                    <value><xsl:value-of select="$length/len:value * 1609.344"/></value>
                    <units rdf:resource="http://www.xfront.com/owl/ontologies/Length/#Metre"/>
                </Length>
            </xsl:when>
            <xsl:when test="$length/len:units/@rdf:resource='http://www.xfront.com/owl/ontologies/Length/#Furlong'">
                <Length xmlns="http://www.xfront.com/owl/ontologies/Length/#">
                    <value><xsl:value-of select="$length/len:value * 201.168"/></value>
                    <units rdf:resource="http://www.xfront.com/owl/ontologies/Length/#Metre"/>
                </Length>
            </xsl:when>
            <xsl:otherwise>
                <xsl:sequence select="$length"/>
            </xsl:otherwise>
        </xsl:choose>

    </xsl:function>


</xsl:stylesheet>
