/* $RCSfile: xmlxsl.h $ $Date: 21-may-2004.04:17:05 $ Copyright (c) 2001, 2003, Oracle. All Rights Reserved. FILE NAME xmlxsl.h - Oracle XML XSLT APIs FILE DESCRIPTION This file defines the XSLT and XPath interfaces. */ #ifndef XMLXSL_ORACLE # define XMLXSL_ORACLE #ifndef STDIO_ORACLE # define STDIO_ORACLE # include #endif #ifndef STDARG_ORACLE # define STDARG_ORACLE # include #endif #ifndef ORATYPES_ORACLE # define ORATYPES_ORACLE # include #endif #ifndef XMLERR_ORACLE # include #endif #ifndef XMLPROC_ORACLE # include #endif /*--------------------------------------------------------------------------- PUBLIC TYPES AND CONSTANTS ---------------------------------------------------------------------------*/ /* DATATYPE xslctx - XSL top-level context SEE ALSO XmlXslCreate, XmlXslDestroy XSLT context */ struct xslctx; #ifndef ORAXML_ORACLE typedef struct xslctx xslctx; #endif /* DATATYPE xpctx - XPath top-level context SEE ALSO XmlXPathCreateCtx, XmlXPathDestroyCtx XPath context */ struct xpctx; #ifndef ORAXML_ORACLE typedef struct xpctx xpctx; #endif /* DATATYPE xpexpr - XPath expression SEE ALSO XmlXPathParse, XmlXPathEval XPath expression */ struct xpexpr; #ifndef ORAXML_ORACLE typedef struct xpexpr xpexpr; #endif /* DATATYPE xpobj - XPath object SEE ALSO XmlXPathEval, XmlXPathGetObjectType XPath object */ struct xpobj; #ifndef ORAXML_ORACLE typedef struct xpobj xpobj; #endif /*--------------------------------------------------------------------------- DEPRECATED User-Defined Stream ---------------------------------------------------------------------------*/ /* DATATYPE xmlostream - DEPRECATED User-defined output stream SEE ALSO XmlDomGetNodeValueStream, XmlDomGetAttrValueStream, XmlXslSetOutputStream, XmlXvmSetOutputStream DEPRECATED Generic user-defined output stream. The three function pointers are required (but may be stubs). The context pointer is entirely user-defined; point it to whatever state information is required to manage the stream; it will be passed as first argument to the user functions. DEPRECATED, use orastream interfaces instead. */ typedef struct xmlostream { XML_STREAM_OPEN_F((*open_xmlostream), xctx, sctx, path, parts, length); XML_STREAM_WRITE_F((*write_xmlostream), xctx, sctx, path, src, size); XML_STREAM_CLOSE_F((*close_xmlostream), xctx, sctx); void *ctx_xmlostream; /* user's stream context */ } xmlostream; /*--------------------------------------------------------------------------- Package XPath - XPath APIs ---------------------------------------------------------------------------*/ /* DATATYPE xmlxslobjtype - XSL processor object type SEE ALSO XmlXPathGetObjectType, XmlXvmGetObjectType Type of XSLT object that may be returned. */ typedef enum xmlxslobjtype { XMLXSL_TYPE_UNKNOWN = 0, /* Not a defined type */ XMLXSL_TYPE_NDSET = 1, /* Node-set */ XMLXSL_TYPE_BOOL = 2, /* Boolean value */ XMLXSL_TYPE_NUM = 3, /* Numeric value (double) */ XMLXSL_TYPE_STR = 4, /* String */ XMLXSL_TYPE_FRAG = 5 /* Document Fragment */ } xmlxslobjtype; /**************************************************************************** Interface XPath ****************************************************************************/ /*--------------------------------------------------------------------------- NAME XmlXPathCreateCtx PURPOSE Create an XPath context DESCRIPTION Create an XPath context RETURNS (xpctx *) XPath context or NULL on error ARGUMENTS xsl (IN) XSL stylesheet as xmldoc object. baseuri (IN) base URI used by document [if any] ctxpos (IN) current context position. ctxsize (IN) current context size ctxnode (IN) current context node */ xpctx* XmlXPathCreateCtx(xmlctx *xsl, oratext *baseuri, xmlnode *ctxnode, ub4 ctxpos, ub4 ctxsize); /*--------------------------------------------------------------------------- NAME XmlXPathDestroyCtx PURPOSE Destroy an XPath context DESCRIPTION Destroy an XPath context. RETURNS (void) ARGUMENTS xslxpctx (IN) XPath context object. */ void XmlXPathDestroyCtx(xpctx *xslxpctx); /*--------------------------------------------------------------------------- NAME XmlXPathParse PURPOSE Parse XPath expression DESCRIPTION Parse XPath expression. RETURNS (xpexpr *) XPath expression parse tree or NULL on error ARGUMENTS xpctx (IN) XPath context object expr (IN) XPath expression err (OUT) error code */ xpexpr* XmlXPathParse(xpctx *xctx, oratext *expr, xmlerr * err); /*--------------------------------------------------------------------------- NAME XmlXPathEval PURPOSE Evaluate XPath expression DESCRIPTION Evaluate XPath expression. RETURNS (xpobj *) result XPath object or NULL on error ARGUMENTS xpctx (IN) XPath context exprtree (IN) Parsed XPath expression tree err (OUT) error code */ xpobj *XmlXPathEval(xpctx *xctx, xpexpr *exprtree, xmlerr *err); /*--------------------------------------------------------------------------- NAME XmlXPathGetObjectType PURPOSE Get XPath object type DESCRIPTION Get XPath object type RETURNS (xmlxslobjtype) type-code for object ARGUMENTS xobj (IN) XPath object SEE ALSO XmlXPathGetObjectNSetNum, XmlXPathGetObjectNSetNode, XmlXPathGetObjectString, XmlXPathGetObjectNumber, XmlXPathGetObjectBoolean */ xmlxslobjtype XmlXPathGetObjectType(xpobj *obj); /*--------------------------------------------------------------------------- NAME XmlXPathGetObjectNSetNum PURPOSE Get number of of nodes in nodeset-type XPath object DESCRIPTION Get number of of nodes in nodeset-type XPath object RETURNS (ub4) number of nodes in nodeset ARGUMENTS xobj (IN) XPath object (nodeset) SEE ALSO XmlXPathGetObjectType, XmlXPathGetObjectNSetNode, XmlXPathGetObjectString, XmlXPathGetObjectNumber, XmlXPathGetObjectBoolean */ ub4 XmlXPathGetObjectNSetNum(xpobj *obj); /*--------------------------------------------------------------------------- NAME XmlXPathGetObjectNSetNode PURPOSE Get node from nodeset-type XPath object DESCRIPTION Get node from nodeset-type XPath object RETURNS (xmlnode *) The object type or values. ARGUMENTS xobj (IN) XPath object i (IN) node index in nodeset SEE ALSO XmlXPathGetObjectType, XmlXPathGetObjectNSetNum, XmlXPathGetObjectString, XmlXPathGetObjectNumber, XmlXPathGetObjectBoolean */ xmlnode *XmlXPathGetObjectNSetNode(xpobj *obj, ub4 i); /*--------------------------------------------------------------------------- NAME XmlXPathGetObjectString PURPOSE Get string from XPath object DESCRIPTION Get string from XPath object RETURNS (oratext *) string ARGUMENTS xobj (IN) XPath object. SEE ALSO XmlXPathGetObjectType, XmlXPathGetObjectNSetNum, XmlXPathGetObjectNSetNode, XmlXPathGetObjectNumber, XmlXPathGetObjectBoolean */ oratext *XmlXPathGetObjectString(xpobj *obj); /*--------------------------------------------------------------------------- NAME XmlXPathGetObjectNumber PURPOSE Get number from XPath object DESCRIPTION Get number from XPath object RETURNS (double) number ARGUMENTS xobj (IN) XPath object. SEE ALSO XmlXPathGetObjectType, XmlXPathGetObjectNSetNum, XmlXPathGetObjectNSetNode, XmlXPathGetObjectString, XmlXPathGetObjectBoolean */ double XmlXPathGetObjectNumber(xpobj *obj); /*--------------------------------------------------------------------------- NAME XmlXPathGetObjectBoolean PURPOSE Get boolean value of XPath object DESCRIPTION Get boolean value of XPath object RETURNS (boolean) truth value ARGUMENTS xobj (IN) XPath object. SEE ALSO XmlXPathGetObjectType, XmlXPathGetObjectNSetNum, XmlXPathGetObjectNSetNode, XmlXPathGetObjectNumber, XmlXPathGetObjectBoolean */ boolean XmlXPathGetObjectBoolean(xpobj *obj); /*--------------------------------------------------------------------------- NAME XmlXPathGetObjectFragment PURPOSE Get fragment value of XPath object DESCRIPTION Get boolean value of XPath object RETURNS (boolean) truth value ARGUMENTS xobj (IN) XPath object. SEE ALSO XmlXPathGetObjectType, XmlXPathGetObjectNSetNum, XmlXPathGetObjectNSetNode, XmlXPathGetObjectNumber, XmlXPathGetObjectBoolean */ xmlnode* XmlXPathGetObjectFragment(xpobj *obj); /*--------------------------------------------------------------------------- Package XSLT - XSLT APIs ---------------------------------------------------------------------------*/ /* DATATYPE xmlxslomethod - XSL processor output method SEE ALSO XmlXslSetOutputMethod Type of output to be produced by the XSLT processor. */ typedef enum xmlxslomethod { XMLXSL_OUTPUT_UNKNOWN = 0, /* Not defined */ XMLXSL_OUTPUT_XML = 1, /* Produce a Document Fragment */ XMLXSL_OUTPUT_STREAM = 2, /* Stream out formatted result */ XMLXSL_OUTPUT_HTML = 3 /* Stream out HTML-ized formatted result */ } xmlxslomethod; /**************************************************************************** Interface XSLT ****************************************************************************/ /*--------------------------------------------------------------------------- NAME XmlXslCreate PURPOSE Create an XSLT context DESCRIPTION Create an XSLT context RETURNS (xslctx *) XSLT context ARGUMENTS ctx (IN) XML context object. xsl (IN) XSL stylesheet document object. baseuri (IN) baseuri for include/import/document(). err (I/O) the error returned. SEE ALSO XmlXslDestroy */ xslctx *XmlXslCreate(xmlctx *ctx, xmldocnode *xsl, oratext *baseuri, xmlerr *err); /*--------------------------------------------------------------------------- NAME XmlXslDestroy PURPOSE Destroy an XSL context DESCRIPTION Destroy an XSL context RETURNS (xmlerr) error code ARGUMENTS ctx (IN) XSL context SEE ALSO XmlXslCreate */ xmlerr XmlXslDestroy(xslctx *ctx); /*--------------------------------------------------------------------------- NAME XmlXslSetFlags PURPOSE Set FLAGs to process XSL on an instance document using different behaviour. DESCRIPTION Do XSL processing on an instance document. xsl:output is supported only if XmlXslSetOutputStream has been called previously. RETURNS ARGUMENTS ctx (IN) XSL context object. flags (IN) XMLXSL_FALG_EVALPARAMS */ void XmlXslSetFlags(xslctx *ctx, ub4 flags); /* While processing with-params for xsl:apply-templates, * current behaviour doesnt treat source node as current node. * instead it process with-params using the node selected by * xsl:apply-templates. This will be fixed in later version. * Till then support is provided to acheive correct behaviour * by setting flags using XmlXslSetFlags(ctx, XMLXSL_FLAG_EVALPARAMS). */ #define XMLXSL_FLAG_EVALPARAMS 1 /*--------------------------------------------------------------------------- NAME XmlXslProcess PURPOSE Do XSL processing on an instance document DESCRIPTION Do XSL processing on an instance document. xsl:output is supported only if XmlXslSetOutputStream has been called previously. RETURNS (xmlerr) error code ARGUMENTS ctx (IN) XSL context object. xml (IN) instance document to process normalize (IN) if TRUE forces the XSL processor to normalize the doc. */ xmlerr XmlXslProcess(xslctx *ctx, xmldocnode *xml, boolean normalize); /*--------------------------------------------------------------------------- NAME XmlXslSetOutputMethod PURPOSE Set the xslctx output method DESCRIPTION Set the xslctx output method RETURNS (xmlerr) error code, XMLERR_SUCC [0] on success. ARGUMENTS ctx (IN) XSL context object method (IN) XSL output metod (xmlxslomethod) */ xmlerr XmlXslSetOutputMethod(xslctx *ctx, xmlxslomethod method); /*--------------------------------------------------------------------------- NAME XmlXslSetOutputEncoding PURPOSE Set the xslctx output encoding DESCRIPTION Set the xslctx output encoding RETURNS (xmlerr) error code, XMLERR_SUCC [0] on success. ARGUMENTS ctx (IN) XSL context object encoding (IN) output encoding */ xmlerr XmlXslSetOutputEncoding(xslctx *ctx, oratext* encoding); /*--------------------------------------------------------------------------- NAME XmlXslSetOutputSax PURPOSE Set the xslctx output SAX DESCRIPTION Set the xslctx output SAX RETURNS (xmlerr) error code, XMLERR_SUCC [0] on success. ARGUMENTS ctx (IN) XSL context object saxcb (IN) SAX callback object saxctx (IN) SAX callback context */ xmlerr XmlXslSetOutputSax(xslctx *ctx, xmlsaxcb* saxcb, void *saxctx); /*--------------------------------------------------------------------------- NAME XmlXslSetOutputStream PURPOSE DEPRECATED Set the xslctx output stream DESCRIPTION Deprecated, do not use. See XmlXslSetOutputOraStream() RETURNS (xmlxsl) error code, XMLXSL_SUCC (0) on success. ARGUMENTS ctx (IN) - XSL context object. stream (IN) - output stream object. */ xmlerr XmlXslSetOutputStream(xslctx *ctx, xmlostream *stream); /*--------------------------------------------------------------------------- NAME XmlXslSetOutputOraStream PURPOSE Set the xslctx output stream. DESCRIPTION RETURNS (xmlxsl) error code, XMLXSL_SUCC (0) on success. ARGUMENTS ctx (IN) - XSL context object. stream (IN) - output stream object. */ xmlerr XmlXslSetOutputOraStream(xslctx *ctx, orastream *stream); /*--------------------------------------------------------------------------- NAME XmlXslSetOutputDom PURPOSE Set the xslctx output DOM DESCRIPTION Set the xslctx output DOM RETURNS (xmlerr) error code, XMLERR_SUCC [0] on success. ARGUMENTS ctx (IN) XSL context object stream (IN) output stream object */ xmlerr XmlXslSetOutputDom(xslctx *ctx, xmldocnode *doc); /*--------------------------------------------------------------------------- NAME XmlXslGetTextParam PURPOSE Get the XSL text parameter value DESCRIPTION Get the XSL text parameter value RETURNS (oratext *) parameter value ARGUMENTS ctx (IN) XSL context name (IN) name of the top-level param SEE ALSO XmlXslSetTextParam */ oratext *XmlXslGetTextParam(xslctx *ctx, oratext *name); /*--------------------------------------------------------------------------- NAME XmlXslResetAllParams PURPOSE Reset XSL processor parameters. DESCRIPTION Reset all the top level parameters added RETURNS (xmlerr) error code, XMLERR_SUCC [0] on success. ARGUMENTS ctx (IN) XSL context object SEE ALSO XmlXslSetTextParam */ xmlerr XmlXslResetAllParams(xslctx *ctx); /*--------------------------------------------------------------------------- NAME XmlXslSetTextParam PURPOSE Set the xslctx output text param. DESCRIPTION Set the xslctx output text param. RETURNS (xmlerr) error code, XMLERR_SUCC [0] on success. ARGUMENTS ctx (IN) XSL context object name (IN) name of top-level param value (IN) value of top-level param SEE ALSO XmlXslGetTextParam */ xmlerr XmlXslSetTextParam(xslctx *ctx, oratext *name, oratext *value); /*--------------------------------------------------------------------------- NAME XmlXslGetStylesheetDom PURPOSE Get the XSL stylesheet document DESCRIPTION Get the XSL stylesheet document RETURNS (xmldocnode *) stylesheet document ARGUMENTS ctx (IN) XSL context */ xmldocnode *XmlXslGetStylesheetDom(xslctx *ctx); /*--------------------------------------------------------------------------- NAME XmlXslGetOutput PURPOSE Get the XSL result fragment DESCRIPTION Get the XSL result fragment RETURNS (xmlfragnode *) result fragment ARGUMENTS ctx (IN) XSL context */ xmlfragnode *XmlXslGetOutput(xslctx *ctx); /*--------------------------------------------------------------------------- NAME XmlXslGetBaseURI PURPOSE Get the XSL processor base URI DESCRIPTION Get the XSL processor base URI RETURNS (oratext *) base URI ARGUMENTS ctx (IN) XSL context */ oratext *XmlXslGetBaseURI(xslctx *ctx); #endif /* XMLXSL_ORACLE */