Class StringLengthFunction

  • All Implemented Interfaces:
    Function

    public class StringLengthFunction
    extends Object
    implements Function

    4.2 number string-length(string)

    The string-length function returns the number of Unicode characters in its argument. This is not necessarily the same as the number Java chars in the corresponding Java string. In particular, if the Java String contains surrogate pairs each such pair will be counted as only one character by this function. If the argument is omitted, it returns the length of the string-value of the context node.

    Author:
    bob mcwhirter (bob @ werken.com)
    See Also:
    Section 4.2 of the XPath Specification
    • Constructor Detail

      • StringLengthFunction

        public StringLengthFunction()
        Create a new StringLengthFunction object.
    • Method Detail

      • call

        public Object call​(Context context,
                           List args)
                    throws FunctionCallException

        Returns the number of Unicode characters in the string-value of the argument.

        Specified by:
        call in interface Function
        Parameters:
        context - the context at the point in the expression when the function is called
        args - a list containing the item whose string-value is to be counted. If empty, the length of the context node's string-value is returned.
        Returns:
        a Double giving the number of Unicode characters
        Throws:
        FunctionCallException - if args has more than one item
      • evaluate

        public static Double evaluate​(Object obj,
                                      Navigator nav)
                               throws FunctionCallException

        Returns the number of Unicode characters in the string-value of an object.

        Parameters:
        obj - the object whose string-value is counted
        nav - used to calculate the string-values of the first two arguments
        Returns:
        a Double giving the number of Unicode characters
        Throws:
        FunctionCallException - if the string contains mismatched surrogates