2 #include "libexslt/libexslt.h"
4 #if defined(WIN32) && !defined (__CYGWIN__)
5 #include <win32config.h>
10 #include <libxml/tree.h>
11 #include <libxml/xpath.h>
12 #include <libxml/xpathInternals.h>
14 #include <libxslt/xsltconfig.h>
15 #include <libxslt/xsltutils.h>
16 #include <libxslt/xsltInternals.h>
17 #include <libxslt/extensions.h>
18 #include <libxslt/transform.h>
19 #include <libxslt/extra.h>
20 #include <libxslt/preproc.h>
25 exsltNodeSetFunction (xmlXPathParserContextPtr ctxt, int nargs) {
28 xmlXPathObjectPtr ret;
31 xmlXPathSetArityError(ctxt);
35 if (xmlXPathStackIsNodeSet (ctxt)) {
36 xsltFunctionNodeSet (ctxt, nargs);
40 strval = xmlXPathPopString (ctxt);
41 retNode = xmlNewDocText (NULL, strval);
42 ret = xmlXPathNewValueTree (retNode);
43 ret->type = XPATH_NODESET;
48 valuePush (ctxt, ret);
52 exsltObjectTypeFunction (xmlXPathParserContextPtr ctxt, int nargs) {
53 xmlXPathObjectPtr obj, ret;
56 xmlXPathSetArityError(ctxt);
64 ret = xmlXPathNewCString("string");
67 ret = xmlXPathNewCString("number");
70 ret = xmlXPathNewCString("boolean");
73 ret = xmlXPathNewCString("node-set");
76 ret = xmlXPathNewCString("RTF");
79 ret = xmlXPathNewCString("external");
82 xsltGenericError(xsltGenericErrorContext,
83 "object-type() invalid arg\n");
84 ctxt->error = XPATH_INVALID_TYPE;
85 xmlXPathFreeObject(obj);
88 xmlXPathFreeObject(obj);
94 * exsltCommonRegister:
96 * Registers the EXSLT - Common module
100 exsltCommonRegister (void) {
101 xsltRegisterExtModuleFunction((const xmlChar *) "node-set",
102 EXSLT_COMMON_NAMESPACE,
103 exsltNodeSetFunction);
104 xsltRegisterExtModuleFunction((const xmlChar *) "object-type",
105 EXSLT_COMMON_NAMESPACE,
106 exsltObjectTypeFunction);
107 xsltRegisterExtModuleElement((const xmlChar *) "document",
108 EXSLT_COMMON_NAMESPACE,
109 (xsltPreComputeFunction) xsltDocumentComp,
110 (xsltTransformFunction) xsltDocumentElem);