All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.askjadev.xml.extfunctions.marklogic.MarkLogicQueryURI Maven / Gradle / Ivy

There is a newer version: 1.4.0-98
Show newest version
/*
 * The MIT License
 *
 * Copyright 2017 Axel Court.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package fr.askjadev.xml.extfunctions.marklogic;

import net.sf.saxon.lib.ExtensionFunctionCall;
import net.sf.saxon.om.StructuredQName;

/**
 * This class is an extension function for Saxon. It must be declared by
 * configuration.registerExtensionFunction(new MarkLogicQueryURI());, or
 * via Saxon Configuration file
 * (Saxon
 * documentation). In gaulois-pipe, it just has to be in the classpath.
 *
 * The first argument (xs:string) is the URI (absolute or relative) of an XQuery file that must be run on the MarkLogic Server instance.
 * The second argument is an XPath 3.0 map containing the server and database configuration.
 * The third argument is an XPath 3.0 map containing the external variables values.
 * 
 * Use as :
 * Use as :
 * <xsl:sequence xmlns:mkl-ext="fr:askjadev:xml:extfunctions" select="
 *   mkl-ext:marklogic-query-uri(
 *     'for $i in 1 to 10 return {$i}',
 *     map{
 *       'server':'localhost',
 *       'port':8004,
 *       'user':'admin',
 *       'password':'admin'
 *     },
 *     map{
 *       QName('http://namespace','pre:string'):'string value'
 *     }
 *   )"
 * />
 *
 * @author Axel Court
 */
public class MarkLogicQueryURI extends AbstractMLExtensionFunction {

    public static final String EXT_NAMESPACE_URI = "fr:askjadev:xml:extfunctions";
    public static final String FUNCTION_NAME = "marklogic-query-uri";
    public static final String EXT_NS_COMMON_PREFIX = "mkl-ext";

    @Override
    public StructuredQName getFunctionQName() {
        return new StructuredQName(EXT_NS_COMMON_PREFIX, EXT_NAMESPACE_URI, FUNCTION_NAME);
    }

    @Override
    public ExtensionFunctionCall makeCallExpression() {
        return constructExtensionFunctionCall(ExtentionType.XQUERY_URI);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy