Home | History | Annotate | Download | only in libxslt
      1 /*
      2  * Summary: interface for the document handling
      3  * Description: implements document loading and cache (multiple
      4  *              document() reference for the same resources must
      5  *              be equal.
      6  *
      7  * Copy: See Copyright for the status of this software.
      8  *
      9  * Author: Daniel Veillard
     10  */
     11 
     12 #ifndef __XML_XSLT_DOCUMENTS_H__
     13 #define __XML_XSLT_DOCUMENTS_H__
     14 
     15 #include <libxml/tree.h>
     16 #include "xsltexports.h"
     17 #include "xsltInternals.h"
     18 
     19 #ifdef __cplusplus
     20 extern "C" {
     21 #endif
     22 
     23 XSLTPUBFUN xsltDocumentPtr XSLTCALL
     24 		xsltNewDocument		(xsltTransformContextPtr ctxt,
     25 					 xmlDocPtr doc);
     26 XSLTPUBFUN xsltDocumentPtr XSLTCALL
     27     		xsltLoadDocument	(xsltTransformContextPtr ctxt,
     28 					 const xmlChar *URI);
     29 XSLTPUBFUN xsltDocumentPtr XSLTCALL
     30     		xsltFindDocument	(xsltTransformContextPtr ctxt,
     31 					 xmlDocPtr doc);
     32 XSLTPUBFUN void XSLTCALL
     33     		xsltFreeDocuments	(xsltTransformContextPtr ctxt);
     34 
     35 XSLTPUBFUN xsltDocumentPtr XSLTCALL
     36     		xsltLoadStyleDocument	(xsltStylesheetPtr style,
     37 					 const xmlChar *URI);
     38 XSLTPUBFUN xsltDocumentPtr XSLTCALL
     39     		xsltNewStyleDocument	(xsltStylesheetPtr style,
     40 					 xmlDocPtr doc);
     41 XSLTPUBFUN void XSLTCALL
     42     		xsltFreeStyleDocuments	(xsltStylesheetPtr style);
     43 
     44 /*
     45  * Hooks for document loading
     46  */
     47 
     48 /**
     49  * xsltLoadType:
     50  *
     51  * Enum defining the kind of loader requirement.
     52  */
     53 typedef enum {
     54     XSLT_LOAD_START = 0,	/* loading for a top stylesheet */
     55     XSLT_LOAD_STYLESHEET = 1,	/* loading for a stylesheet include/import */
     56     XSLT_LOAD_DOCUMENT = 2	/* loading document at transformation time */
     57 } xsltLoadType;
     58 
     59 /**
     60  * xsltDocLoaderFunc:
     61  * @URI: the URI of the document to load
     62  * @dict: the dictionary to use when parsing that document
     63  * @options: parsing options, a set of xmlParserOption
     64  * @ctxt: the context, either a stylesheet or a transformation context
     65  * @type: the xsltLoadType indicating the kind of loading required
     66  *
     67  * An xsltDocLoaderFunc is a signature for a function which can be
     68  * registered to load document not provided by the compilation or
     69  * transformation API themselve, for example when an xsl:import,
     70  * xsl:include is found at compilation time or when a document()
     71  * call is made at runtime.
     72  *
     73  * Returns the pointer to the document (which will be modified and
     74  * freed by the engine later), or NULL in case of error.
     75  */
     76 typedef xmlDocPtr (*xsltDocLoaderFunc)		(const xmlChar *URI,
     77 						 xmlDictPtr dict,
     78 						 int options,
     79 						 void *ctxt,
     80 						 xsltLoadType type);
     81 
     82 XSLTPUBFUN void XSLTCALL
     83 		xsltSetLoaderFunc		(xsltDocLoaderFunc f);
     84 
     85 /* the loader may be needed by extension libraries so it is exported */
     86 XSLTPUBVAR xsltDocLoaderFunc xsltDocDefaultLoader;
     87 
     88 #ifdef __cplusplus
     89 }
     90 #endif
     91 
     92 #endif /* __XML_XSLT_DOCUMENTS_H__ */
     93 
     94