1 #include "libexslt/libexslt.h"
3 #if defined(WIN32) && !defined (__CYGWIN__)
4 #include <win32config.h>
9 #include <libxml/tree.h>
10 #include <libxml/xpath.h>
11 #include <libxml/xpathInternals.h>
13 #include <libxslt/xsltconfig.h>
14 #include <libxslt/xsltutils.h>
15 #include <libxslt/xsltInternals.h>
16 #include <libxslt/extensions.h>
17 #include <libxslt/transform.h>
18 #include <libxslt/extra.h>
19 #include <libxslt/preproc.h>
24 exsltNodeSetFunction (xmlXPathParserContextPtr ctxt, int nargs) {
27 xmlXPathObjectPtr ret;
30 xmlXPathSetArityError(ctxt);
34 if (xmlXPathStackIsNodeSet (ctxt)) {
35 xsltFunctionNodeSet (ctxt, nargs);
39 strval = xmlXPathPopString (ctxt);
40 retNode = xmlNewDocText (NULL, strval);
41 ret = xmlXPathNewValueTree (retNode);
42 ret->type = XPATH_NODESET;
47 valuePush (ctxt, ret);
51 exsltObjectTypeFunction (xmlXPathParserContextPtr ctxt, int nargs) {
52 xmlXPathObjectPtr obj, ret;
55 xmlXPathSetArityError(ctxt);
63 ret = xmlXPathNewCString("string");
66 ret = xmlXPathNewCString("number");
69 ret = xmlXPathNewCString("boolean");
72 ret = xmlXPathNewCString("node-set");
75 ret = xmlXPathNewCString("RTF");
78 ret = xmlXPathNewCString("external");
81 xsltGenericError(xsltGenericErrorContext,
82 "object-type() invalid arg\n");
83 ctxt->error = XPATH_INVALID_TYPE;
84 xmlXPathFreeObject(obj);
87 xmlXPathFreeObject(obj);
93 * exsltCommonRegister:
95 * Registers the EXSLT - Common module
99 exsltCommonRegister (void) {
100 xsltRegisterExtModuleFunction((const xmlChar *) "node-set",
101 EXSLT_COMMON_NAMESPACE,
102 exsltNodeSetFunction);
103 xsltRegisterExtModuleFunction((const xmlChar *) "object-type",
104 EXSLT_COMMON_NAMESPACE,
105 exsltObjectTypeFunction);
106 xsltRegisterExtModuleElement((const xmlChar *) "document",
107 EXSLT_COMMON_NAMESPACE,
108 (xsltPreComputeFunction) xsltDocumentComp,
109 (xsltTransformFunction) xsltDocumentElem);