Class Extensions


  • public class Extensions
    extends java.lang.Object
    This class implements functions that are supplied as standard with SAXON, but which are not defined in the XSLT or XPath specifications.

    To invoke these functions, use a function call of the form prefix:name() where name is the method name, and prefix maps to a URI such as http://saxon.sf.net/net.sf.saxon.functions.Extensions (only the part of the URI after the last slash is important).

    • Method Detail

      • pauseTracing

        public static void pauseTracing​(XPathContext c)
        Switch tracing off. Only works if tracing was enabled at compile time.
      • resumeTracing

        public static void resumeTracing​(XPathContext c)
        Resume tracing. Only works if tracing was originally enabled but is currently paused.
      • generateId

        public static java.lang.String generateId​(NodeInfo node)
        The function saxon:generate-id() is equivalent to the standard XSLT function generate-id(). It is provided as an extension function to make it available in non-XSLT environments, for example in XQuery.
        Parameters:
        node - the node whose identifier is required
        Returns:
        as ASCII alphanumeric string that uniquely identifies this node
      • lineNumber

        public static int lineNumber​(XPathContext c)
        Return the line number of the context node.
      • lineNumber

        public static int lineNumber​(NodeInfo node)
        Return the line number of the specified node.
      • discardDocument

        public static DocumentInfo discardDocument​(XPathContext context,
                                                   DocumentInfo doc)
        Remove a document from the document pool. The effect is that the document becomes eligible for garbage collection, allowing memory to be released when processing of the document has finished. The downside is that a subsequent call on document() with the same URI causes the document to be reloaded and reparsed, and the new nodes will have different node identity from the old.
        Parameters:
        context - the evaluation context (supplied implicitly by the call mechanism)
        doc - the document to be released from the document pool
        Returns:
        the document that was released. This allows a call such as select="saxon:discard-document(document('a.xml'))"
      • hasSameNodes

        public static boolean hasSameNodes​(SequenceIterator p1,
                                           SequenceIterator p2)
                                    throws XPathException
        Determine whether two node-sets contain the same nodes
        Parameters:
        p1 - The first node-set. The iterator must be correctly ordered.
        p2 - The second node-set. The iterator must be correctly ordered.
        Returns:
        true if p1 and p2 contain the same set of nodes
        Throws:
        XPathException
      • tokenize

        public static SequenceIterator tokenize​(java.lang.String s)
        Return a node-set by tokenizing a supplied string. Tokens are delimited by any sequence of whitespace characters.
      • tokenize

        public static SequenceIterator tokenize​(java.lang.String s,
                                                java.lang.String delim)
        Return a sequence by tokenizing a supplied string. The argument delim is a String, any character in this string is considered to be a delimiter character, and any sequence of delimiter characters acts as a separator between tokens.
      • typeAnnotation

        public static java.lang.String typeAnnotation​(XPathContext context,
                                                      NodeInfo node)
        Display the value of the type annotation of a node
      • getPseudoAttribute

        public static java.lang.String getPseudoAttribute​(XPathContext c,
                                                          java.lang.String name)
                                                   throws XPathException
        Get a pseudo-attribute of a processing instruction. Return an empty string if the pseudo-attribute is not present. Character references and built-in entity references are expanded
        Throws:
        XPathException
      • yearMonthDurationFromMonths

        public static MonthDurationValue yearMonthDurationFromMonths​(int arg)
        Get a yearMonthDuration value corresponding to a given number of months
      • decimalDivide

        public static java.math.BigDecimal decimalDivide​(java.math.BigDecimal arg1,
                                                         java.math.BigDecimal arg2,
                                                         int scale)
        Perform decimal division to a user-specified precision
      • stringToUtf8

        public static java.util.List stringToUtf8​(java.lang.String in)
        Get the UTF-8 encoding of a string
        Parameters:
        in - the supplied string
        Returns:
        a sequence of integers, each in the range 0-255, representing the octets of the UTF-8 encoding of the given string
      • octetsToBase64Binary

        public static Base64BinaryValue octetsToBase64Binary​(byte[] in)
        Convert a sequence of integers in the range 0-255, representing a sequence of octets, to a base64Binary value
      • octetsToHexBinary

        public static HexBinaryValue octetsToHexBinary​(byte[] in)
        Convert a sequence of integers in the range 0-255, representing a sequence of octets, to a hexBinary value
      • base64BinaryToOctets

        public static byte[] base64BinaryToOctets​(Base64BinaryValue in)
        Convert a base64Binary value to a sequence of integers representing the octets contained in the value
      • hexBinaryToOctets

        public static byte[] hexBinaryToOctets​(HexBinaryValue in)
        Convert a hexBinary value to a sequence of integers representing the octets contained in the value
      • base64BinaryToString

        public static java.lang.String base64BinaryToString​(XPathContext context,
                                                            Base64BinaryValue in,
                                                            java.lang.String encoding)
                                                     throws java.lang.Exception
        Convert a base64Binary value to a String, assuming a particular encoding
        Throws:
        java.lang.Exception
      • stringToBase64Binary

        public static Base64BinaryValue stringToBase64Binary​(java.lang.String in,
                                                             java.lang.String encoding)
                                                      throws java.io.UnsupportedEncodingException,
                                                             java.io.IOException
        Convert a string to a base64Binary value in a given encoding
        Throws:
        java.io.UnsupportedEncodingException
        java.io.IOException
      • hexBinaryToString

        public static java.lang.String hexBinaryToString​(XPathContext context,
                                                         HexBinaryValue in,
                                                         java.lang.String encoding)
                                                  throws java.lang.Exception
        Convert a hexBinary value to a String, assuming a particular encoding
        Throws:
        java.lang.Exception
      • stringToHexBinary

        public static HexBinaryValue stringToHexBinary​(java.lang.String in,
                                                       java.lang.String encoding)
                                                throws java.lang.Exception
        Convert a string to a hexBinary value in a given encoding
        Throws:
        java.lang.Exception
      • validCharacter

        public static boolean validCharacter​(XPathContext c,
                                             int in)
        Test whether a given integer is the codepoint of a valid XML character
      • namespaceNode

        public static NodeInfo namespaceNode​(XPathContext context,
                                             java.lang.String prefix,
                                             java.lang.String uri)
                                      throws XPathException
        Create a parentless namespace node. This function is useful in XQuery when namespaces need to be created dynamically. The effect is the same as that of the xsl:namespace instruction in XSLT.
        Throws:
        XPathException
      • deepEqual

        public static boolean deepEqual​(XPathContext context,
                                        SequenceIterator arg1,
                                        SequenceIterator arg2,
                                        java.lang.String collation,
                                        java.lang.String flags)
                                 throws XPathException
        Perform a parameterized deep-equals() test
        Parameters:
        context - The evaluation context
        arg1 - The first sequence to be compared
        arg2 - The second sequence to be compared
        collation - The collation to be used (null if the default collation is to be used)
        flags - A string whose characters select options that cause the comparison to vary from the standard fn:deep-equals() function. The flags are:
        • N - take namespace nodes into account
        • A - compare type annotations
        • C - take comments into account
        • F - take namespace prefixes into account
        • P - take processing instructions into account
        • S - compare string values, not typed values
        • w - don't take whitespace-only text nodes into account
        Returns:
        true if the sequences are deep equal, otherwise false
        Throws:
        XPathException
      • compileStylesheet

        public static javax.xml.transform.Templates compileStylesheet​(XPathContext context,
                                                                      DocumentInfo doc)
                                                               throws XPathException
        Compile a document containing a stylesheet module into a stylesheet that can be used to perform transformations
        Throws:
        XPathException
      • transform

        public static DocumentInfo transform​(XPathContext context,
                                             javax.xml.transform.Templates templates,
                                             NodeInfo source)
                                      throws XPathException
        Run a transformation to convert an input tree to an output document
        Parameters:
        context - The dynamic context
        templates - The compiled stylesheet
        source - The initial context node representing the document to be transformed
        Throws:
        XPathException