Extension Module - XPathBuiltins


The namespace for extensions defined in this document are:

Prefix Namespace
f http://xmlns.4suite.org/ext

The prefix is given for this document only. Any other prefix can be used within a particular stylesheet.


Function Syntax
f:base-uri string f:base-uri(node-set)
f:bin-path string f:bin-path()
f:cos number f:cos(number)
f:decode object f:decode(object, string)
f:degrees-to-rads number f:degrees-to-rads(number)
f:encode object f:encode(object, string)
f:ends-with boolean f:ends-with(string, string)
f:escape-xml string f:escape-xml(string)
f:fact number f:fact(number)
f:generate-uuid string f:generate-uuid()
f:if object f:if(boolean, object, object)
f:import-string string f:import-string(object)
f:indent string f:indent(string, number, string)
f:join string f:join(node-set, string)
f:match string f:match(string, string)
f:normalize-eol string f:normalize-eol(string)
f:ospath2uri string f:ospath2uri(string)
f:parse-date string f:parse-date(string, string)
f:parse-xml node-set f:parse-xml(string, object)
f:pytime-to-exslt string f:pytime-to-exslt(number)
f:random number f:random(number, boolean)
f:range node-set f:range(number, number)
f:replace string f:replace(string, string, string)
f:resolve-path string f:resolve-path(string, string)
f:resolve-url string f:resolve-url(string, string)
f:sha-hash string f:sha-hash(string)
f:share-path string f:share-path()
f:sin number f:sin(number)
f:strftime string f:strftime(string, string)
f:uri2ospath string f:uri2ospath(string)
f:version string f:version()
f:wrap string f:wrap(string, number)


Function - f:base-uri

Function Syntax

string f:base-uri(node-set)

Returns the base URI of the first node in the given node-set, or of the context node if no argument is given. If the given node-set is empty, an empty string is returned.

Function - f:bin-path

Function Syntax

string f:bin-path()

Returns the system-dependent path of Fourthought binaries

Function - f:cos

Function Syntax

number f:cos(number)


Function - f:decode

Function Syntax

object f:decode(object, string)

f:decode mirrors the Python decode function/method. It takes a foreign object that is a Python byte string, and an encoding, and returns another foreign object which is a Unicode object.

Function - f:degrees-to-rads

Function Syntax

number f:degrees-to-rads(number)

Convert degrees to radians

Function - f:encode

Function Syntax

object f:encode(object, string)

f:encode mirrors the Python encode function/method. It takes a foreign object that is a Unicode object, and an encoding, and returns another foreign object which is a Python byte string.

Function - f:ends-with

Function Syntax

boolean f:ends-with(string, string)

Returns true if the string given in the first argument ends with the substring given in the second argument.

Function - f:escape-xml

Function Syntax

string f:escape-xml(string)

Returns the given string with XML markup characters "&", "<" and ">" escaped as "&amp;", "&lt;" and "&gt;", respectively.

Function - f:fact

Function Syntax

number f:fact(number)


Function - f:generate-uuid

Function Syntax

string f:generate-uuid()

Returns a random UUID string.

Function - f:if

Function Syntax

object f:if(boolean, object, object)

If the first argument, when converted to a boolean, is true, returns the second argument. Otherwise, returns the third argument, or if the third argument is not given, returns an empty node-set.

Function - f:import-string

Function Syntax

string f:import-string(object)

f:import-string takes a Unicode FO and returns an XPath string. It is an error if the FO contains illegal XML chars. (although eventually this function might be extended to recover from this error)

Function - f:indent

Function Syntax

string f:indent(string, number, string)

f:indent() returns a string with each line of the text indented the given number of levels. For each level, the indent string, normally 2 spaces by default, is prepended to each line.

Function - f:join

Function Syntax

string f:join(node-set, string)

Concatenates the string-values of the nodes in the given node-set, inserting the delimiter given in the optional second argument in between each string-value. The delimiter defaults to a space. See also: EXSLT's str:concat()

Function - f:match

Function Syntax

string f:match(string, string)

Returns true if the string given in the optional second argument (or the string-value of the context node if no second argument is given) matches the regular expression given in the first argument. See also: EXSLT's regexp:test() This function does differ from XSLT 2.0 match() function

Function - f:normalize-eol

Function Syntax

string f:normalize-eol(string)

Normalizes end-of-line characters in input string, returning the normalized string. Normalization involves replacing " ", " " or " " with " "

Function - f:ospath2uri

Function Syntax

string f:ospath2uri(string)

Returns the given OS path as a URI. The result varies depending on the underlying operating system.

Function - f:parse-date

Function Syntax

string f:parse-date(string, string)

This function is similar to EXSLT's date:parse-date() except that it uses Python rather than Java conventions for the date formatting.

Function - f:parse-xml

Function Syntax

node-set f:parse-xml(string, object)

f:parse-xml() parses the string-value of the given object as XML and returns a node-set whose sole item is the resulting parsed document's root node. The XML must be a well-formed document. src - the string or object to be parsed as XML. parameters - the name of a parameter set for the operation. The parameters argument is ignored for now. In the future, it will provide a way to specify a base URI for the resolution of relative URIs in entity declarations and XIncludes. Also for now, if the XML contains an encoding declaration, the declaration must specify UTF-8. An example: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:f="http://xmlns.4suite.org/ext" version="1.0" > <xsl:output method="text"/> <xsl:variable name="doc" select="'&lt;spam>eggs&lt;monty>python&lt;/monty>&lt;/spam>'"/> <xsl:template match="/"> <xsl:value-of select="f:parse-xml($doc)/spam/monty"/> </xsl:template> </xsl:stylesheet> ...run against any XML source should yield: python See also: XSLT (not XPath) extension function f:serialize-xml()

Function - f:pytime-to-exslt

Function Syntax

string f:pytime-to-exslt(number)

Takes a Python time value as a number and returns a date/time as if from EXSLT date-time() t - a time stamp number, as from Python's time.time() if omitted, use the current time

Function - f:random

Function Syntax

number f:random(number, boolean)

Returns a random number between 0 (inclusive) and max (exclusive). max defaults to 1. The first optional argument is a different value for max, and the second argument is a flag that, if set, causes the random number to be rounded to an integer. See also: EXSLT's math:random()

Function - f:range

Function Syntax

node-set f:range(number, number)

Returns a node-set consisting of text nodes encapsulating integers in the numeric range bounded by the given low and high values.

Function - f:replace

Function Syntax

string f:replace(string, string, string)

Returns the third argument string, which defaults to the string-value of the context node, with occurrences of the substring given in the first argument replaced by the string given in the second argument. See also: EXSLT's str:replace()

Function - f:resolve-path

Function Syntax

string f:resolve-path(string, string)

Resolves a Posix-style path, such as the path portion of a URL, against a base. Similar to f:resolve-url, but allows the base to be just a path, not necessarily a full URL.

Function - f:resolve-url

Function Syntax

string f:resolve-url(string, string)

Returns the relative URL ref given in the second argument resolved against the base given in the first argument. In case of URI processing error an empty string is returned

Function - f:sha-hash

Function Syntax

string f:sha-hash(string)

Returns a SHA message digest of the given string, as a string of several groups of hex digits separated by '-'. See http://www.itl.nist.gov/fipspubs/fip180-1.htm for info on SHA.

Function - f:share-path

Function Syntax

string f:share-path()

Returns the system-dependent path to modifiable data

Function - f:sin

Function Syntax

number f:sin(number)


Function - f:strftime

Function Syntax

string f:strftime(string, string)

Returns the given ISO 8601 UTC date-time formatted according to the given format string as would be used by Python's time.strftime(). If no date-time string is given, the current time is used.

Function - f:uri2ospath

Function Syntax

string f:uri2ospath(string)

Returns the given URI as an OS path. The result varies depending on the underlying operating system.

Function - f:version

Function Syntax

string f:version()

Returns the 4Suite version number as a string.

Function - f:wrap

Function Syntax

string f:wrap(string, number)

f:wrap() returns a string with the text reflowed so that each line fits within the given width. Existing linefeeds are preserved, but spaces are considered inter-word separators that can be collapsed. To reflow without preserving existing linefeeds, strip them first, e.g. with translate(text, '&#10;', ''). http://lists.fourthought.com/pipermail/4suite-dev/2002-December/000878.html