net.sf.saxon.functions
Class EscapeURI

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.expr.FunctionCall
          extended by net.sf.saxon.functions.SystemFunction
              extended by net.sf.saxon.functions.EscapeURI
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, CallableExpression, InstructionInfo, Locator

public class EscapeURI
extends SystemFunction
implements CallableExpression

This class supports the functions encode-for-uri() and iri-to-uri()

See Also:
Serialized Form

Field Summary
static boolean[] allowedASCII
           
static int ENCODE_FOR_URI
           
static int HTML_URI
           
static int IRI_TO_URI
           
 
Fields inherited from class net.sf.saxon.functions.SystemFunction
operation
 
Fields inherited from class net.sf.saxon.expr.FunctionCall
argument
 
Fields inherited from class net.sf.saxon.expr.Expression
EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, WATCH_METHOD
 
Constructor Summary
EscapeURI()
           
 
Method Summary
 SequenceIterator call(SequenceIterator[] arguments, XPathContext context)
          Evaluate the expression
static void checkPercentEncoding(String uri)
          Check that any percent-encoding within a URI is well-formed.
static CharSequence escape(CharSequence s, String allowedPunctuation)
          Escape special characters in a URI.
 Item evaluateItem(XPathContext c)
          Evaluate the function
static CharSequence iriToUri(CharSequence s)
          Escape special characters in a URI.
 
Methods inherited from class net.sf.saxon.functions.SystemFunction
addContextDocumentArgument, addDocToPathMap, checkArguments, computeCardinality, computeSpecialProperties, copy, equals, getDetails, getErrorCodeForTypeErrors, getImplementationMethod, getItemType, getOperation, getRequiredType, makeSystemFunction, optimize, setDetails, useContextItemAsDefault
 
Methods inherited from class net.sf.saxon.expr.FunctionCall
addExternalFunctionCallToPathMap, checkArgumentCount, explain, getArguments, getDisplayName, getExpressionName, getFunctionName, getNumberOfArguments, hashCode, iterateSubExpressions, preEvaluate, promote, replaceSubExpression, setArguments, setFunctionName, simplify, simplifyArguments, toString, typeCheck
 
Methods inherited from class net.sf.saxon.expr.Expression
addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getEvaluationMethod, getExecutable, getHostLanguage, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasLoopingSubexpression, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterate, iterateEvents, iterateSameFocusSubExpressions, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, typeError
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.saxon.expr.CallableExpression
getArguments
 

Field Detail

ENCODE_FOR_URI

public static final int ENCODE_FOR_URI
See Also:
Constant Field Values

IRI_TO_URI

public static final int IRI_TO_URI
See Also:
Constant Field Values

HTML_URI

public static final int HTML_URI
See Also:
Constant Field Values

allowedASCII

public static boolean[] allowedASCII
Constructor Detail

EscapeURI

public EscapeURI()
Method Detail

evaluateItem

public Item evaluateItem(XPathContext c)
                  throws XPathException
Evaluate the function

Overrides:
evaluateItem in class Expression
Parameters:
c - The context in which the expression is to be evaluated
Returns:
the node or atomic value that results from evaluating the expression; or null to indicate that the result is an empty sequence
Throws:
XPathException - if any dynamic error occurs evaluating the expression

call

public SequenceIterator call(SequenceIterator[] arguments,
                             XPathContext context)
                      throws XPathException
Evaluate the expression

Specified by:
call in interface CallableExpression
Parameters:
arguments - the values of the arguments, supplied as SequenceIterators
context - the dynamic evaluation context
Returns:
the result of the evaluation, in the form of a SequenceIterator
Throws:
XPathException - if a dynamic error occurs during the evaluation of the expression

iriToUri

public static CharSequence iriToUri(CharSequence s)
Escape special characters in a URI. The characters that are %HH-encoded are all non-ASCII characters

Parameters:
s - the URI to be escaped
Returns:
the %HH-encoded string

escape

public static CharSequence escape(CharSequence s,
                                  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

checkPercentEncoding

public static void checkPercentEncoding(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


Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.