Package net.sf.saxon.functions

## Class EncodeForUri

- java.lang.Object
- - net.sf.saxon.functions.AbstractFunction
  - - net.sf.saxon.functions.SystemFunction
    - - net.sf.saxon.functions.ScalarSystemFunction
      - - net.sf.saxon.functions.EncodeForUri

- All Implemented Interfaces:
    `Callable`, `Function`, `GroundedValue`, `Item`, `Sequence`

      public class EncodeForUri
      extends ScalarSystemFunction

  This class supports the function fn:encode-for-uri()

- - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.functions.ScalarSystemFunction

      `ZERO_LENGTH_STRING`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `EncodeForUri()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static void` | `checkPercentEncoding​(java.lang.String uri)` | Check that any percent-encoding within a URI is well-formed.
    `static java.lang.CharSequence` | `escape​(java.lang.CharSequence s, java.lang.String allowedPunctuation)` | Escape special characters in a URI.
    `static void` | `escapeChar​(char c, char c2, FastStringBuffer sb)` | Escape a single character in %HH representation, or a pair of two chars representing a surrogate pair
    `AtomicValue` | `evaluate​(Item arg, XPathContext context)` | Abstract method that must be supplied in subclasses to perform the evaluation
    `ZeroOrOne` | `resultWhenEmpty()` | Method that may be supplied in subclasses, to indicate the result that is returned when an empty sequence is supplied as the argument value.

    - ### Methods inherited from class net.sf.saxon.functions.ScalarSystemFunction

      `call, makeFunctionCall`

    - ### Methods inherited from class net.sf.saxon.functions.SystemFunction

      `dependsOnContextItem, dynamicCall, equals, export, exportAdditionalArguments, exportAttributes, fixArguments, getArity, getCardinality, getCompilerName, getContextNode, getDescription, getDetails, getErrorCodeForTypeErrors, getFunctionItemType, getFunctionName, getIntegerBounds, getNetCost, getOperandRoles, getRequiredType, getResultItemType, getResultItemType, getRetainedStaticContext, getSpecialProperties, getStaticBaseUriString, getStreamerName, importAttributes, isTrustedResultType, makeCall, makeFunction, makeOptimizedFunctionCall, resultIfEmpty, setArity, setDetails, setRetainedStaticContext, supplyTypeInformation, toShortString, toString, typeCheckCaller`

    - ### Methods inherited from class net.sf.saxon.functions.AbstractFunction

      `atomize, deepEquals, effectiveBooleanValue, getAnnotations, getStringValue, getStringValueCS, isArray, isMap, makeNewContext, simplify, typeCheck`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.om.Function

      `getGenre`

    - ### Methods inherited from interface net.sf.saxon.om.GroundedValue

      `asIterable, concatenate, containsNode, materialize`

    - ### Methods inherited from interface net.sf.saxon.om.Item

      `getLength, head, isStreamed, itemAt, iterate, reduce, subsequence`

    - ### Methods inherited from interface net.sf.saxon.om.Sequence

      `makeRepeatable`

- - ### Constructor Detail

    - #### EncodeForUri

          public EncodeForUri()

  - ### Method Detail

    - #### evaluate

          public AtomicValue evaluate​(Item arg,
                                      XPathContext context)
                               throws XPathException

      Description copied from class: `ScalarSystemFunction`
      Abstract method that must be supplied in subclasses to perform the evaluation
      Specified by:
        `evaluate` in class `ScalarSystemFunction`
      Parameters:
        `arg` - the supplied argument
        `context` - the dynamic context
      Returns:
        the result of the evaluation
      Throws:
        `XPathException` - if a dynamic error occurs

    - #### resultWhenEmpty

          public ZeroOrOne resultWhenEmpty()

      Description copied from class: `ScalarSystemFunction`
      Method that may be supplied in subclasses, to indicate the result that is returned when an empty sequence is supplied as the argument value. The default is to return the empty sequence
      Overrides:
        `resultWhenEmpty` in class `ScalarSystemFunction`
      Returns:
        the result of evaluation when the supplied argument is an empty sequence

    - #### escape

          public static java.lang.CharSequence escape​(java.lang.CharSequence s,
                                                      java.lang.String allowedPunctuation)

      Escape special characters in a URI. The characters that are %HH-encoded are all non-ASCII characters, plus all ASCII characters except (a) letter A-Z and a-z, (b) digits 0-9, and (c) characters listed in the allowedPunctuation argument
      Parameters:
        `s` - the URI to be escaped
        `allowedPunctuation` - ASCII characters other than letters and digits that should NOT be %HH-encoded
      Returns:
        the %HH-encoded string

    - #### escapeChar

          public static void escapeChar​(char c,
                                        char c2,
                                        FastStringBuffer sb)

      Escape a single character in %HH representation, or a pair of two chars representing a surrogate pair
      Parameters:
        `c` - the character to be escaped, or the first character of a surrogate pair
        `c2` - the second character of a surrogate pair
        `sb` - the buffer to contain the escaped result

    - #### checkPercentEncoding

          public static void checkPercentEncoding​(java.lang.String uri)
                                           throws XPathException

      Check that any percent-encoding within a URI is well-formed. The method assumes that a percent sign followed by two hex digits represents an octet of the UTF-8 representation of a character; any other percent sign is assumed to represent itself.
      Parameters:
        `uri` - the string to be checked for validity
      Throws:
        `XPathException` - if the string is not validly percent-encoded