Index: third_party/libxslt/libexslt/saxon.c |
diff --git a/third_party/libxslt/libexslt/saxon.c b/third_party/libxslt/libexslt/saxon.c |
deleted file mode 100644 |
index 7a2f63bead2cd4f2d105b45affbf1145d1a3d208..0000000000000000000000000000000000000000 |
--- a/third_party/libxslt/libexslt/saxon.c |
+++ /dev/null |
@@ -1,313 +0,0 @@ |
-#define IN_LIBEXSLT |
-#include "libexslt/libexslt.h" |
- |
-#if defined(WIN32) && !defined (__CYGWIN__) && (!__MINGW32__) |
-#include <win32config.h> |
-#else |
-#include "config.h" |
-#endif |
- |
-#include <libxml/tree.h> |
-#include <libxml/xpath.h> |
-#include <libxml/xpathInternals.h> |
-#include <libxml/parser.h> |
-#include <libxml/hash.h> |
- |
-#include <libxslt/xsltconfig.h> |
-#include <libxslt/xsltutils.h> |
-#include <libxslt/xsltInternals.h> |
-#include <libxslt/extensions.h> |
- |
-#include "exslt.h" |
- |
-/** |
- * exsltSaxonInit: |
- * @ctxt: an XSLT transformation context |
- * @URI: the namespace URI for the extension |
- * |
- * Initializes the SAXON module. |
- * |
- * Returns the data for this transformation |
- */ |
-static xmlHashTablePtr |
-exsltSaxonInit (xsltTransformContextPtr ctxt ATTRIBUTE_UNUSED, |
- const xmlChar *URI ATTRIBUTE_UNUSED) { |
- return xmlHashCreate(1); |
-} |
- |
-/** |
- * exsltSaxonShutdown: |
- * @ctxt: an XSLT transformation context |
- * @URI: the namespace URI for the extension |
- * @data: the module data to free up |
- * |
- * Shutdown the SAXON extension module |
- */ |
-static void |
-exsltSaxonShutdown (xsltTransformContextPtr ctxt ATTRIBUTE_UNUSED, |
- const xmlChar *URI ATTRIBUTE_UNUSED, |
- xmlHashTablePtr data) { |
- xmlHashFree(data, (xmlHashDeallocator) xmlXPathFreeCompExpr); |
-} |
- |
- |
-/** |
- * exsltSaxonExpressionFunction: |
- * @ctxt: an XPath parser context |
- * @nargs: the number of arguments |
- * |
- * The supplied string must contain an XPath expression. The result of |
- * the function is a stored expression, which may be supplied as an |
- * argument to other extension functions such as saxon:eval(), |
- * saxon:sum() and saxon:distinct(). The result of the expression will |
- * usually depend on the current node. The expression may contain |
- * references to variables that are in scope at the point where |
- * saxon:expression() is called: these variables will be replaced in |
- * the stored expression with the values they take at the time |
- * saxon:expression() is called, not the values of the variables at |
- * the time the stored expression is evaluated. Similarly, if the |
- * expression contains namespace prefixes, these are interpreted in |
- * terms of the namespace declarations in scope at the point where the |
- * saxon:expression() function is called, not those in scope where the |
- * stored expression is evaluated. |
- * |
- * TODO: current implementation doesn't conform to SAXON behaviour |
- * regarding context and namespaces. |
- */ |
-static void |
-exsltSaxonExpressionFunction (xmlXPathParserContextPtr ctxt, int nargs) { |
- xmlChar *arg; |
- xmlXPathCompExprPtr ret; |
- xmlHashTablePtr hash; |
- xsltTransformContextPtr tctxt = xsltXPathGetTransformContext(ctxt); |
- |
- if (nargs != 1) { |
- xmlXPathSetArityError(ctxt); |
- return; |
- } |
- |
- arg = xmlXPathPopString(ctxt); |
- if (xmlXPathCheckError(ctxt) || (arg == NULL)) { |
- xmlXPathSetTypeError(ctxt); |
- return; |
- } |
- |
- hash = (xmlHashTablePtr) xsltGetExtData(tctxt, |
- ctxt->context->functionURI); |
- |
- ret = xmlHashLookup(hash, arg); |
- |
- if (ret == NULL) { |
- ret = xmlXPathCompile(arg); |
- if (ret == NULL) { |
- xmlFree(arg); |
- xmlXPathSetError(ctxt, XPATH_EXPR_ERROR); |
- return; |
- } |
- xmlHashAddEntry(hash, arg, (void *) ret); |
- } |
- |
- xmlFree(arg); |
- |
- xmlXPathReturnExternal(ctxt, ret); |
-} |
- |
-/** |
- * exsltSaxonEvalFunction: |
- * @ctxt: an XPath parser context |
- * @nargs: number of arguments |
- * |
- * Implements de SAXON eval() function: |
- * object saxon:eval (saxon:stored-expression) |
- * Returns the result of evaluating the supplied stored expression. |
- * A stored expression may be obtained as the result of calling |
- * the saxon:expression() function. |
- * The stored expression is evaluated in the current context, that |
- * is, the context node is the current node, and the context position |
- * and context size are the same as the result of calling position() |
- * or last() respectively. |
- */ |
-static void |
-exsltSaxonEvalFunction (xmlXPathParserContextPtr ctxt, int nargs) { |
- xmlXPathCompExprPtr expr; |
- xmlXPathObjectPtr ret; |
- |
- if (nargs != 1) { |
- xmlXPathSetArityError(ctxt); |
- return; |
- } |
- |
- if (!xmlXPathStackIsExternal(ctxt)) { |
- xmlXPathSetTypeError(ctxt); |
- return; |
- } |
- |
- expr = (xmlXPathCompExprPtr) xmlXPathPopExternal(ctxt); |
- |
- ret = xmlXPathCompiledEval(expr, ctxt->context); |
- if (ret == NULL) { |
- xmlXPathSetError(ctxt, XPATH_EXPR_ERROR); |
- return; |
- } |
- |
- valuePush(ctxt, ret); |
-} |
- |
-/** |
- * exsltSaxonEvaluateFunction: |
- * @ctxt: an XPath parser context |
- * @nargs: number of arguments |
- * |
- * Implements the SAXON evaluate() function |
- * object saxon:evaluate (string) |
- * The supplied string must contain an XPath expression. The result of |
- * the function is the result of evaluating the XPath expression. This |
- * is useful where an expression needs to be constructed at run-time or |
- * passed to the stylesheet as a parameter, for example where the sort |
- * key is determined dynamically. The context for the expression (e.g. |
- * which variables and namespaces are available) is exactly the same as |
- * if the expression were written explicitly at this point in the |
- * stylesheet. The function saxon:evaluate(string) is shorthand for |
- * saxon:eval(saxon:expression(string)). |
- */ |
-static void |
-exsltSaxonEvaluateFunction (xmlXPathParserContextPtr ctxt, int nargs) { |
- if (nargs != 1) { |
- xmlXPathSetArityError(ctxt); |
- return; |
- } |
- |
- exsltSaxonExpressionFunction(ctxt, 1); |
- exsltSaxonEvalFunction(ctxt, 1); |
-} |
- |
-/** |
- * exsltSaxonSystemIdFunction: |
- * @ctxt: an XPath parser context |
- * @nargs: number of arguments |
- * |
- * Implements the SAXON systemId() function |
- * string saxon:systemId () |
- * This function returns the system ID of the document being styled. |
- */ |
-static void |
-exsltSaxonSystemIdFunction(xmlXPathParserContextPtr ctxt, int nargs) |
-{ |
- if (ctxt == NULL) |
- return; |
- if (nargs != 0) { |
- xmlXPathSetArityError(ctxt); |
- return; |
- } |
- |
- if ((ctxt->context) && (ctxt->context->doc) && |
- (ctxt->context->doc->URL)) |
- valuePush(ctxt, xmlXPathNewString(ctxt->context->doc->URL)); |
- else |
- valuePush(ctxt, xmlXPathNewString(BAD_CAST "")); |
-} |
- |
-/** |
- * exsltSaxonLineNumberFunction: |
- * @ctxt: an XPath parser context |
- * @nargs: number of arguments |
- * |
- * Implements the SAXON line-number() function |
- * integer saxon:line-number() |
- * |
- * This returns the line number of the context node in the source document |
- * within the entity that contains it. There are no arguments. If line numbers |
- * are not maintained for the current document, the function returns -1. (To |
- * ensure that line numbers are maintained, use the -l option on the command |
- * line) |
- * |
- * The extension has been extended to have the following form: |
- * integer saxon:line-number([node-set-1]) |
- * If a node-set is given, this extension will return the line number of the |
- * node in the argument node-set that is first in document order. |
- */ |
-static void |
-exsltSaxonLineNumberFunction(xmlXPathParserContextPtr ctxt, int nargs) { |
- xmlNodePtr cur = NULL; |
- xmlXPathObjectPtr obj = NULL; |
- long lineNo = -1; |
- |
- if (nargs == 0) { |
- cur = ctxt->context->node; |
- } else if (nargs == 1) { |
- xmlNodeSetPtr nodelist; |
- int i; |
- |
- if ((ctxt->value == NULL) || (ctxt->value->type != XPATH_NODESET)) { |
- xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL, |
- "saxon:line-number() : invalid arg expecting a node-set\n"); |
- ctxt->error = XPATH_INVALID_TYPE; |
- return; |
- } |
- |
- obj = valuePop(ctxt); |
- nodelist = obj->nodesetval; |
- if ((nodelist != NULL) && (nodelist->nodeNr > 0)) { |
- cur = nodelist->nodeTab[0]; |
- for (i = 1;i < nodelist->nodeNr;i++) { |
- int ret = xmlXPathCmpNodes(cur, nodelist->nodeTab[i]); |
- if (ret == -1) |
- cur = nodelist->nodeTab[i]; |
- } |
- } |
- } else { |
- xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL, |
- "saxon:line-number() : invalid number of args %d\n", |
- nargs); |
- ctxt->error = XPATH_INVALID_ARITY; |
- return; |
- } |
- |
- if ((cur != NULL) && (cur->type == XML_NAMESPACE_DECL)) { |
- /* |
- * The XPath module sets the owner element of a ns-node on |
- * the ns->next field. |
- */ |
- cur = (xmlNodePtr) ((xmlNsPtr) cur)->next; |
- if (cur == NULL || cur->type != XML_ELEMENT_NODE) { |
- xsltGenericError(xsltGenericErrorContext, |
- "Internal error in exsltSaxonLineNumberFunction: " |
- "Cannot retrieve the doc of a namespace node.\n"); |
- cur = NULL; |
- } |
- } |
- |
- if (cur != NULL) |
- lineNo = xmlGetLineNo(cur); |
- |
- valuePush(ctxt, xmlXPathNewFloat(lineNo)); |
- |
- xmlXPathFreeObject(obj); |
-} |
- |
-/** |
- * exsltSaxonRegister: |
- * |
- * Registers the SAXON extension module |
- */ |
-void |
-exsltSaxonRegister (void) { |
- xsltRegisterExtModule (SAXON_NAMESPACE, |
- (xsltExtInitFunction) exsltSaxonInit, |
- (xsltExtShutdownFunction) exsltSaxonShutdown); |
- xsltRegisterExtModuleFunction((const xmlChar *) "expression", |
- SAXON_NAMESPACE, |
- exsltSaxonExpressionFunction); |
- xsltRegisterExtModuleFunction((const xmlChar *) "eval", |
- SAXON_NAMESPACE, |
- exsltSaxonEvalFunction); |
- xsltRegisterExtModuleFunction((const xmlChar *) "evaluate", |
- SAXON_NAMESPACE, |
- exsltSaxonEvaluateFunction); |
- xsltRegisterExtModuleFunction ((const xmlChar *) "line-number", |
- SAXON_NAMESPACE, |
- exsltSaxonLineNumberFunction); |
- xsltRegisterExtModuleFunction ((const xmlChar *) "systemId", |
- SAXON_NAMESPACE, |
- exsltSaxonSystemIdFunction); |
-} |