1. Extension functions
Prev | Chapter 7. XPath functions | Next

## 1. Extension functions

node-set copy(node-set)

  Returns a deep copy of specified node set.

node-set difference(node-set1, node-set2)

  Returns a node-set containing all nodes found in `node-set1` but not in `node-set2`.

boolean ends-with(string1, string2)

  Returns true if string `string1` ends with string `string2`. Returns false otherwise.

number index-of-node(node-set1, node-set2)

  Returns the rank of a node in `node-set1`. The node which is searched in `node-set1` is specified using `node-set2`: it is first node in `node-set2` (which generally contains a single node). The index of first node in `node-set1` is 1 and not 0. Returns -1 if the searched node is not found in `node-set1`.

object if(boolean `test1`, object `value1`, ..., boolean `testN`, object `valueN`, ...., object `fallback`)

  Evaluates each `testi` in turn as a boolean. If the result of evaluating `testi` is true, returns corresponding `valuei`. Otherwise, if all `testi` evaluate to false, returns `fallback`.

  Example:

      if(@x=1,"One",@x=2,"Two",@x=3,"Three","Other than one two three")

node-set intersection(node-set1, node-set2)

  Returns a node-set containing all nodes found in both `node-set1` and `node-set2`.

string join(node-set `node-set`, string `separator`)

  Converts each node in `node-set` to a string and joins all these strings using `separator`. Returns the resulting string.

  Example: `join(//h1, ', ')` returns `"Introduction, Conclusion"` if the document contains 2 `h1` elements, one containing `"Introduction"` and the other `"Conclusion"`.

boolean matches(string `input`, string `pattern`, string `flags`?)

  Similar to XPath 2.0 function `matches`. Returns true if `input` matches the regular expression `pattern`; otherwise, it returns false.

  Note that unless ^ and $ are used, the string is considered to match the pattern if any substring matches the pattern.

  Optional `flags` may be used to parametrize the behavior of the regular expression:

  m

    Operate in multiline mode.

  i

    Operate in case-insensitive mode.

  Examples: `matches("foobar", "^f.+r$")` returns true. `matches("CamelCase", "ca", "i")` returns true.

number max(node-set), number max(number, ..., number)

  The first form returns the maximum value of all nodes of specified node set, after converting each node to a number.

  Nodes which cannot be converted to a number are ignored. If all nodes cannot be converted to a number, returns `NaN`.

  The second form returns the maximum value of all specified numbers (at least 2 numbers).

  Arguments which cannot be converted to a number are ignored. If all arguments cannot be converted to a number, returns `NaN`.

number min(node-set), number min(number, ..., number)

  Same as max() but returns the minimum value of specified arguments.

number pow(number1, number2)

  Returns `number1` raised to the power of `number2`.

string property(string property-name), string property(node-set, string property-name)

  Returns the application-level property having specified XML qualified name attached to specified XML node.

  The XML qualified name of the property must have one of the following forms: `prefix`:`local_part`, where `prefix` has been defined in the document being edited, or {`namespace_URI`}`local_part`. Examples:

  - ``foo``,

  - `bar:foo`, where prefix `bar` is bound to "`http://www.bar.com/ns`" in the document being edited,

  - `{}foo`,

  - `{http://www.xmlmind.com/xmleditor/namespace/property}sourceURL`,

  - `{http://www.xmlmind.com/xmleditor/namespace/property}readOnly`,

  - `{http://www.xmlmind.com/xmleditor/namespace/property}configurationName`.

  Returns the empty string if the specified node set is empty or if the first node in the node set does not have specified property.

string replace(string `input`, string `pattern`, string `replacement`, string `flags`?)

  Similar to XPath 2.0 function `replace`. Returns the string that is obtained by replacing all non-overlapping substrings of `input` that match the given `pattern` with an occurrence of the `replacement` string.

  The `replacement` string may use $1 to $9 to refer to captured groups.

  Optional `flags` may be used to parametrize the behavior of the regular expression:

  m

    Operate in multiline mode.

  i

    Operate in case-insensitive mode.

  Example: `replace("foobargeebar", "b(.+)r", "B$1R")` returns `"fooBaRgeeBaR"`.

string resolve-uri(string `uri`, ?string `base`?)

  If `uri` is an absolute URL, returns `uri`.

  If `base` is specified, it must be a valid absolute URL, otherwise an error is reported.

  If `uri` is a relative URL,

  - if `base` is specified, returns `uri` resolved using `base`;

  - if `base` is not specified, returns `uri` resolved using the base URL of the context node.

  If `uri` is the empty string,

  - if `base` is specified, returns `base`;

  - if `base` is not specified, returns the base URL of the context node.

string relativize-uri(string `uri`, ?string `base`?)

  Converts absolute URL uri to an URL which is relative to specified base URL base. If base is not specified, the base URL of the context node is used instead.

  Uri must be a valid absolute URL, otherwise an error is reported. If `base` is specified, it must be a valid absolute URL, otherwise an error is reported.

  Example: returns "`../john/.profile`" for uri="`file:///home/john/.profile`" and base="`file:///home/bob/.cshrc`".

  If uri cannot be made relative to base (example: uri="`file:///home/john/public_html/index.html`" and base="`http://www.xmlmind.com/index.html`"), uri is returned as is.

string serialize(node-set)

  Serializes specified node-set and returns a well-formed, parseable, XML string. This string is not nicely indented. It is intended to be directly consumed by other commands such as `paste`.

  Note that some node-sets cannot be serialized: the empty node-set, node-sets containing attribute nodes, node-sets mixing a document node with other kind of nodes, etc. In such cases, an error is reported.

  If multiple nodes are to be serialized (as opposed to a single element node or to a document node), these nodes are first wrapped in a `{http://www.xmlmind.com/xmleditor/namespace/clipboard}clipboard` element.

string uri-or-file-name(string)

  Converts specified string to an URL. Specified string may be an (absolute) URL supported by XMLmind XML Editor or the absolute or relative filename of a file or of a directory. An error is reported if the argument cannot be converted to an URL.

string uri-to-file-name(string)

  Converts specified argument, a "`file://`" URL, to a native file name. Returns the empty string if argument is not a "`file://`" URL.

Prev | Up | Next
Chapter 7. XPath functions | Home | 2. Java™ methods as extension functions