Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.xmlcalabash.functions;
  
 
 import java.net.URI;
 
 //
 // The contents of this file are subject to the Mozilla Public License Version 1.0 (the "License");
 // you may not use this file except in compliance with the License. You may obtain a copy of the
 // License at http://www.mozilla.org/MPL/
 //
 // Software distributed under the License is distributed on an "AS IS" basis,
 // WITHOUT WARRANTY OF ANY KIND, either express or implied.
 // See the License for the specific language governing rights and limitations under the License.
 //
 // The Original Code is: all this file.
 //
 // The Initial Developer of the Original Code is Michael H. Kay.
 //
 // Portions created by Norman Walsh are Copyright (C) Mark Logic Corporation. All Rights Reserved.
 //
 // Contributor(s): Norman Walsh.
 //
 
Implementation of the XSLT system-property() function
 
 
 public class ResolveURI extends XProcExtensionFunctionDefinition {
     private static StructuredQName funcname = new StructuredQName("p"."resolve-uri");
 
     protected ResolveURI() {
         // you can't call this one
     }
 
     public ResolveURI(XProcRuntime runtime) {
         .set(runtime);
     }
 
     public StructuredQName getFunctionQName() {
         return ;
     }
 
     public int getMinimumNumberOfArguments() {
         return 1;
     }
 
     public int getMaximumNumberOfArguments() {
         return 2;
     }
 
     public SequenceType[] getArgumentTypes() {
     }
 
     public SequenceType getResultType(SequenceType[] suppliedArgumentTypes) {
         return .;
     }
 
     public boolean dependsOnFocus() {
         return true;
     }
 
         return new ResolveURICall();
     }
 
     private class ResolveURICall extends ExtensionFunctionCall {
         public SequenceIterator call(SequenceIterator[] argumentsXPathContext contextthrows XPathException {
             SequenceIterator iter = arguments[0];
             String relativeURI = iter.next().getStringValue();
 
             XProcRuntime runtime = .get();
             XStep step = runtime.getXProcData().getStep();
             // FIXME: this can't be the best way to do this...
             // step == null in use-when
             if (step != null && !(step instanceof XCompoundStep)) {
                 throw XProcException.dynamicError(23);
             }
 
             String baseURI = null;
             if (arguments.length > 1) {
                 iter = arguments[1];
                baseURI = iter.next().getStringValue();
            } else {
                baseURI = runtime.getStaticBaseURI().toASCIIString();
                try {
                    // FIXME: TinyDocumentImpl? Surely we can do better than that!
                    Item item = context.getContextItem();
                    baseURI = ((TinyDocumentImplitem).getBaseURI();
                } catch (Exception e) {
                    // nop
                }
            }
            // Michael Kay's done the heavy lifting and made the method public, so let's just
            // do that!
            try {
                URI abs = net.sf.saxon.functions.ResolveURI.makeAbsolute(relativeURIbaseURI);
                String resolvedURI = abs.toASCIIString();
                return SingletonIterator.makeIterator(new AnyURIValue(resolvedURI));
            } catch (URISyntaxException use) {
                throw new XProcException(use);
            }
        }
    }
New to GrepCode? Check out our FAQ X