XPath Standard Functions
The Publisher supports the following XPath standard functions. In addition, there are the Publisher-specific layout functions and user-defined functions.
Strings
concat(<value>,<value>, ...)- Create a new text by concatenating the values.
contains(<haystack>,<needle>)- True if haystack contains needle. Example:
contains('bana','na')returnstrue(). starts-with(<string>, <string>)- True if the first string starts with the second.
ends-with(<string>, <string>)- True if the first string ends with the second.
substring(<input>,<start>[,<length>])- Return a part of the string.
substring('Goldfarb', 5, 3)returnsfar.startcan be negative (counts from the end). substring-before(<string>,<string>)- Return the part of the first string before the second. Example:
substring-before("tattoo", "attoo")returns"t". substring-after(<string>,<string>)- Return the part of the first string after the second. Example:
substring-after("tattoo", "tat")returns"too". string-length(<string>)- Return the length of the string. Multi-byte UTF-8 sequences count as one.
string-join(<sequence>, <separator>)- Join the elements of the sequence with the separator.
normalize-space(<text>)- Remove leading and trailing whitespace. Multiple spaces and newlines are replaced by a single space.
upper-case(<text>)- Convert text to uppercase.
upper-case('text')returnsTEXT. lower-case(<text>)- Convert text to lowercase.
lower-case('Text')returnstext. translate(<input>,<from>,<to>)- Replace all characters in
inputfound infromwith the corresponding character into. Example:translate('banana','an','uo')returnsbuouou. Iftois shorter thanfrom, extra characters are deleted. matches(<text>,<regexp>[,<flags>])- True if the text matches the regular expression. Flags:
s,i,m(see XPath spec). Example:matches("banana", "^(.a)+$")returns true. replace(<input>,<regexp>,<replacement>)- Replace all matches of the regular expression with the replacement text. Example:
replace('banana', 'a', 'o')returnsbonono. With groups:replace('W151TBH','^[A-Z]([0-9]+)[A-Z]+$', '$1')returns151. tokenize(<input>,<regexp>)- Split the input by the regular expression into a sequence of strings. Example:
tokenize("Go home, Jack!", "\W+")returns the sequence"Go", "home", "Jack", "". string(<sequence>)- Return the text value of the sequence.
codepoints-to-string(<codepoints>)- Convert a sequence of codepoints to a string.
string-to-codepoints(<string>)- Convert a string to a sequence of codepoints.
Numbers
number(<value>)- Convert the value to a number. Returns NaN if conversion fails.
abs(<number>)- Return the absolute value.
abs(-1.34)returns1.34. ceiling(<number>)- Round up to the next integer.
ceiling(1.34)returns2. floor(<number>)- Round down to the next integer.
floor(1.7)returns1. round(<number>[,<decimals>])- Round to the given number of decimal places (default: 0).
round-half-to-even(<number>[,<decimals>])- Banker’s rounding: at .5, round to the nearest even number.
format-number(<number>, <pattern>)- Format the number according to the pattern. Example:
format-number(12345.67, '#,##0.00')returns12,345.67. max(<values>)- Return the maximum.
max(1.1, 2.2, 3.3)returns3.3. min(<values>)- Return the minimum.
min(1.1, 2.2, 3.3)returns1.1.
Boolean Functions
true()- Return true.
false()- Return false.
not(<value>)- Negate the boolean value.
not(true())returnsfalse(). boolean(<sequence>)- Return the effective boolean value.
empty(<sequence>)- True if the sequence is empty (e.g. a non-existing attribute or element).
Sequences and Nodes
count(<nodes>)- Count child elements with the given name. Example:
count(article). position()- Return the position of the current node.
last()- Return the number of same-named sibling elements.
distinct-values(<sequence>)- Return unique values.
distinct-values((1,2,2,3))returns(1,2,3). reverse(<sequence>)- Reverse the order of the sequence.
local-name()- Return the name of the current node (without namespace).
name()- Return the name of the current node (with namespace prefix).
namespace-uri([<nodeset>])- Return the namespace URI of the first node.
root(<element>)- Return the root element.
doc(<filename>)- Open the file and return its content as an XML tree.
unparsed-text(<filename>)- Return the file content as uninterpreted text.
