diff options
author | Luca Falavigna <dktrkranz@debian.org> | 2014-04-26 15:11:58 +0200 |
---|---|---|
committer | Luca Falavigna <dktrkranz@debian.org> | 2014-04-26 15:11:58 +0200 |
commit | a3a0ab66f0da855e75e3a0e2acfb8aa106b46510 (patch) | |
tree | 5352edff1387c3d7e5a8b49ec56524f085c22782 /src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl | |
parent | 51fa4e4acb6fc8fc7a2af0fbdc21fd1e8feddb3a (diff) | |
parent | 140d836e9cd54fb67b969fd82ef7ed19ba574d40 (diff) |
Merge tag 'upstream/2.3.1'
Upstream version 2.3.1
Diffstat (limited to 'src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl')
-rw-r--r-- | src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl | 580 |
1 files changed, 580 insertions, 0 deletions
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl new file mode 100644 index 0000000..df1f738 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl @@ -0,0 +1,580 @@ +<?xml version="1.0"?> + +<xsl:stylesheet + version="1.0" + extension-element-prefixes="doc" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://xsltsl.org/xsl/documentation/1.0" + xmlns:uri="http://xsltsl.org/uri" +> + + <doc:reference xmlns=""> + <referenceinfo> + <releaseinfo role="meta"> + $Id: uri.xsl 3991 2004-11-10 06:51:55Z balls $ + </releaseinfo> + <author> + <surname>Diamond</surname> + <firstname>Jason</firstname> + </author> + <copyright> + <year>2001</year> + <holder>Jason Diamond</holder> + </copyright> + </referenceinfo> + + <title>URI (Uniform Resource Identifier) Processing</title> + + <partintro> + <section> + <title>Introduction</title> + <para>This module provides templates for processing URIs (Uniform Resource Identifers).</para> + </section> + </partintro> + + </doc:reference> + + <doc:template name="uri:is-absolute-uri" xmlns=""> + <refpurpose>Determines if a URI is absolute or relative.</refpurpose> + + <refdescription> + <para>Absolute URIs start with a scheme (like "http:" or "mailto:").</para> + </refdescription> + + <refparameter> + <variablelist> + <varlistentry> + <term>uri</term> + <listitem> + <para>An absolute or relative URI.</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + + <refreturn> + <para>Returns 'true' if the URI is absolute or '' if it's not.</para> + </refreturn> + </doc:template> + + <xsl:template name="uri:is-absolute-uri"> + <xsl:param name="uri"/> + + <xsl:if test="contains($uri, ':')"> + <xsl:value-of select="true()"/> + </xsl:if> + + </xsl:template> + + <doc:template name="uri:get-uri-scheme" xmlns=""> + <refpurpose>Gets the scheme part of a URI.</refpurpose> + + <refdescription> + <para>The ':' is not part of the scheme.</para> + </refdescription> + + <refparameter> + <variablelist> + <varlistentry> + <term>uri</term> + <listitem> + <para>An absolute or relative URI.</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + + <refreturn> + <para>Returns the scheme (without the ':') or '' if the URI is relative.</para> + </refreturn> + </doc:template> + + <xsl:template name="uri:get-uri-scheme"> + <xsl:param name="uri"/> + <xsl:if test="contains($uri, ':')"> + <xsl:value-of select="substring-before($uri, ':')"/> + </xsl:if> + </xsl:template> + + <doc:template name="uri:get-uri-authority" xmlns=""> + <refpurpose>Gets the authority part of a URI.</refpurpose> + + <refdescription> + <para>The authority usually specifies the host machine for a resource. It always follows '//' in a typical URI.</para> + </refdescription> + + <refparameter> + <variablelist> + <varlistentry> + <term>uri</term> + <listitem> + <para>An absolute or relative URI.</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + + <refreturn> + <para>Returns the authority (without the '//') or '' if the URI has no authority.</para> + </refreturn> + </doc:template> + + <xsl:template name="uri:get-uri-authority"> + <xsl:param name="uri"/> + + <xsl:variable name="a"> + <xsl:choose> + <xsl:when test="contains($uri, ':')"> + <xsl:if test="substring(substring-after($uri, ':'), 1, 2) = '//'"> + <xsl:value-of select="substring(substring-after($uri, ':'), 3)"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:if test="substring($uri, 1, 2) = '//'"> + <xsl:value-of select="substring($uri, 3)"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="contains($a, '/')"> + <xsl:value-of select="substring-before($a, '/')" /> + </xsl:when> + <xsl:when test="contains($a, '?')"> + <xsl:value-of select="substring-before($a, '?')" /> + </xsl:when> + <xsl:when test="contains($a, '#')"> + <xsl:value-of select="substring-before($a, '#')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$a" /> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <doc:template name="uri:get-uri-path" xmlns=""> + <refpurpose>Gets the path part of a URI.</refpurpose> + + <refdescription> + <para>The path usually comes after the '/' in a URI.</para> + </refdescription> + + <refparameter> + <variablelist> + <varlistentry> + <term>uri</term> + <listitem> + <para>An absolute or relative URI.</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + + <refreturn> + <para>Returns the path (with any leading '/') or '' if the URI has no path.</para> + </refreturn> + </doc:template> + + <xsl:template name="uri:get-uri-path"> + <xsl:param name="uri"/> + + <xsl:variable name="p"> + <xsl:choose> + <xsl:when test="contains($uri, '//')"> + <xsl:if test="contains(substring-after($uri, '//'), '/')"> + <xsl:value-of select="concat('/', substring-after(substring-after($uri, '//'), '/'))"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="contains($uri, ':')"> + <xsl:value-of select="substring-after($uri, ':')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$uri"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="contains($p, '?')"> + <xsl:value-of select="substring-before($p, '?')" /> + </xsl:when> + <xsl:when test="contains($p, '#')"> + <xsl:value-of select="substring-before($p, '#')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$p" /> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <doc:template name="uri:get-uri-query" xmlns=""> + <refpurpose>Gets the query part of a URI.</refpurpose> + + <refdescription> + <para>The query comes after the '?' in a URI.</para> + </refdescription> + + <refparameter> + <variablelist> + <varlistentry> + <term>uri</term> + <listitem> + <para>An absolute or relative URI.</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + + <refreturn> + <para>Returns the query (without the '?') or '' if the URI has no query.</para> + </refreturn> + </doc:template> + + <xsl:template name="uri:get-uri-query"> + <xsl:param name="uri"/> + + <xsl:variable name="q" select="substring-after($uri, '?')"/> + + <xsl:choose> + <xsl:when test="contains($q, '#')"> + <xsl:value-of select="substring-before($q, '#')"/> + </xsl:when> + <xsl:otherwise><xsl:value-of select="$q"/></xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <doc:template name="uri:get-uri-fragment" xmlns=""> + <refpurpose>Gets the fragment part of a URI.</refpurpose> + + <refdescription> + <para>The fragment comes after the '#' in a URI.</para> + </refdescription> + + <refparameter> + <variablelist> + <varlistentry> + <term>uri</term> + <listitem> + <para>An absolute or relative URI.</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + + <refreturn> + <para>Returns the fragment (without the '#') or '' if the URI has no fragment.</para> + </refreturn> + </doc:template> + + <xsl:template name="uri:get-uri-fragment"> + <xsl:param name="uri"/> + + <xsl:value-of select="substring-after($uri, '#')"/> + + </xsl:template> + + <doc:template name="uri:resolve-uri" xmlns=""> + <refpurpose>Resolves a URI reference against a base URI.</refpurpose> + + <refdescription> + <para>This template follows the guidelines specified by <ulink url="ftp://ftp.isi.edu/in-notes/rfc2396.txt">RFC 2396</ulink>.</para> + </refdescription> + + <refparameter> + <variablelist> + <varlistentry> + <term>reference</term> + <listitem> + <para>A (potentially relative) URI reference.</para> + </listitem> + </varlistentry> + <varlistentry> + <term>base</term> + <listitem> + <para>The base URI.</para> + </listitem> + </varlistentry> + <varlistentry> + <term>document</term> + <listitem> + <para>The URI of the current document. This defaults to the value of the base URI if not specified.</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + + <refreturn> + <para>The "combined" URI.</para> + </refreturn> + </doc:template> + + <xsl:template name="uri:resolve-uri"> + <xsl:param name="reference"/> + <xsl:param name="base"/> + <xsl:param name="document" select="$base"/> + + <xsl:variable name="reference-scheme"> + <xsl:call-template name="uri:get-uri-scheme"> + <xsl:with-param name="uri" select="$reference"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="reference-authority"> + <xsl:call-template name="uri:get-uri-authority"> + <xsl:with-param name="uri" select="$reference"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="reference-path"> + <xsl:call-template name="uri:get-uri-path"> + <xsl:with-param name="uri" select="$reference"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="reference-query"> + <xsl:call-template name="uri:get-uri-query"> + <xsl:with-param name="uri" select="$reference"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="reference-fragment"> + <xsl:call-template name="uri:get-uri-fragment"> + <xsl:with-param name="uri" select="$reference"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + + <xsl:when test=" + not(string-length($reference-scheme)) and + not(string-length($reference-authority)) and + not(string-length($reference-path)) and + not(string-length($reference-query))" + > + + <xsl:choose> + <xsl:when test="contains($document, '?')"> + <xsl:value-of select="substring-before($document, '?')"/> + </xsl:when> + <xsl:when test="contains($document, '#')"> + <xsl:value-of select="substring-before($document, '#')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$document"/> + </xsl:otherwise> + </xsl:choose> + + <xsl:if test="string-length($reference-fragment)"> + <xsl:value-of select="concat('#', $reference-fragment)"/> + </xsl:if> + + </xsl:when> + + <xsl:when test="string-length($reference-scheme)"> + + <xsl:value-of select="$reference"/> + + </xsl:when> + + <xsl:otherwise> + + <xsl:variable name="base-scheme"> + <xsl:call-template name="uri:get-uri-scheme"> + <xsl:with-param name="uri" select="$base"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="base-authority"> + <xsl:call-template name="uri:get-uri-authority"> + <xsl:with-param name="uri" select="$base"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="base-path"> + <xsl:call-template name="uri:get-uri-path"> + <xsl:with-param name="uri" select="$base"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="base-query"> + <xsl:call-template name="uri:get-uri-query"> + <xsl:with-param name="uri" select="$base"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="base-fragment"> + <xsl:call-template name="uri:get-uri-fragment"> + <xsl:with-param name="uri" select="$base"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="result-authority"> + <xsl:choose> + <xsl:when test="string-length($reference-authority)"> + <xsl:value-of select="$reference-authority"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$base-authority"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="result-path"> + <xsl:choose> + <!-- don't normalize absolute paths --> + <xsl:when test="starts-with($reference-path, '/')"> + <xsl:value-of select="$reference-path" /> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="uri:normalize-path"> + <xsl:with-param name="path"> + <xsl:if test="string-length($reference-authority) = 0 and substring($reference-path, 1, 1) != '/'"> + <xsl:call-template name="uri:get-path-without-file"> + <xsl:with-param name="path-with-file" select="$base-path"/> + </xsl:call-template> + <xsl:value-of select="'/'"/> + </xsl:if> + <xsl:value-of select="$reference-path"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:value-of select="concat($base-scheme, '://', $result-authority, $result-path)"/> + + <xsl:if test="string-length($reference-query)"> + <xsl:value-of select="concat('?', $reference-query)"/> + </xsl:if> + + <xsl:if test="string-length($reference-fragment)"> + <xsl:value-of select="concat('#', $reference-fragment)"/> + </xsl:if> + + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <xsl:template name="uri:get-path-without-file"> + <xsl:param name="path-with-file" /> + <xsl:param name="path-without-file" /> + + <xsl:choose> + <xsl:when test="contains($path-with-file, '/')"> + <xsl:call-template name="uri:get-path-without-file"> + <xsl:with-param name="path-with-file" select="substring-after($path-with-file, '/')" /> + <xsl:with-param name="path-without-file"> + <xsl:choose> + <xsl:when test="$path-without-file"> + <xsl:value-of select="concat($path-without-file, '/', substring-before($path-with-file, '/'))" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="substring-before($path-with-file, '/')" /> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$path-without-file" /> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <xsl:template name="uri:normalize-path"> + <xsl:param name="path"/> + <xsl:param name="result" select="''"/> + + <xsl:choose> + <xsl:when test="string-length($path)"> + <xsl:choose> + <xsl:when test="$path = '/'"> + <xsl:value-of select="concat($result, '/')"/> + </xsl:when> + <xsl:when test="$path = '.'"> + <xsl:value-of select="concat($result, '/')"/> + </xsl:when> + <xsl:when test="$path = '..'"> + <xsl:call-template name="uri:get-path-without-file"> + <xsl:with-param name="path-with-file" select="$result"/> + </xsl:call-template> + <xsl:value-of select="'/'"/> + </xsl:when> + <xsl:when test="contains($path, '/')"> + <!-- the current segment --> + <xsl:variable name="s" select="substring-before($path, '/')"/> + <!-- the remaining path --> + <xsl:variable name="p"> + <xsl:choose> + <xsl:when test="substring-after($path, '/') = ''"> + <xsl:value-of select="'/'"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="substring-after($path, '/')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$s = ''"> + <xsl:call-template name="uri:normalize-path"> + <xsl:with-param name="path" select="$p"/> + <xsl:with-param name="result" select="$result"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$s = '.'"> + <xsl:call-template name="uri:normalize-path"> + <xsl:with-param name="path" select="$p"/> + <xsl:with-param name="result" select="$result"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$s = '..'"> + <xsl:choose> + <xsl:when test="string-length($result) and (substring($result, string-length($result) - 2) != '/..')"> + <xsl:call-template name="uri:normalize-path"> + <xsl:with-param name="path" select="$p"/> + <xsl:with-param name="result"> + <xsl:call-template name="uri:get-path-without-file"> + <xsl:with-param name="path-with-file" select="$result"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="uri:normalize-path"> + <xsl:with-param name="path" select="$p"/> + <xsl:with-param name="result" select="concat($result, '/..')"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="uri:normalize-path"> + <xsl:with-param name="path" select="$p"/> + <xsl:with-param name="result" select="concat($result, '/', $s)"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($result, '/', $path)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$result"/> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + +</xsl:stylesheet> |