xsltInternals

Name

xsltInternals -- 

Synopsis



enum        xsltElem;
struct      xsltStackElem;
typedef     xsltStackElemPtr;
#define     XSLT_PAT_NO_PRIORITY
struct      xsltTemplate;
typedef     xsltTemplatePtr;
struct      xsltDecimalFormat;
enum        xsltOutputType;
enum        xsltTransformState;
struct      xsltTransformContext;
typedef     xsltTransformContextPtr;
#define     CHECK_STOPPED
#define     CHECK_STOPPEDE
#define     CHECK_STOPPED0
xsltStylesheetPtr xsltParseStylesheetFile   (const xmlChar *filename);
void        xsltFreeStylesheet              (xsltStylesheetPtr sheet);
int         xsltIsBlank                     (xmlChar *str);
void        xsltFreeStackElemList           (xsltStackElemPtr elem);
xsltStylesheetPtr xsltParseStylesheetProcess
                                            (xsltStylesheetPtr ret,
                                             xmlDocPtr doc);
xsltStylesheetPtr xsltParseStylesheetDoc    (xmlDocPtr doc);

Description

Details

enum xsltElem

typedef enum {
    XSLT_ELEM_VARIABLE=1,
    XSLT_ELEM_PARAM
} xsltElem;


struct xsltStackElem

struct xsltStackElem {
    struct _xsltStackElem *next;/* chained list */
    xsltElem type;	/* type of the element */
    int computed;	/* was the evaluation done */
    xmlChar *name;	/* the local part of the name QName */
    xmlChar *nameURI;	/* the URI part of the name QName */
    xmlChar *select;	/* the eval string */
    xmlNodePtr tree;	/* the tree if no eval string */
    xmlXPathObjectPtr value; /* The value if computed */
};


xsltStackElemPtr

typedef xsltStackElem *xsltStackElemPtr;


XSLT_PAT_NO_PRIORITY

#define XSLT_PAT_NO_PRIORITY -12345789


struct xsltTemplate

struct xsltTemplate {
    struct _xsltTemplate *next;/* chained list sorted by priority */
    xmlChar *match;	/* the matching string */
    int priority;	/* as given from the stylesheet, not computed */
    xmlChar *name;	/* the local part of the name QName */
    xmlChar *nameURI;	/* the URI part of the name QName */
    xmlChar *mode;	/* the local part of the mode QName */
    xmlChar *modeURI;	/* the URI part of the mode QName */
    xmlNodePtr content;	/* the template replacement value */
};


xsltTemplatePtr

typedef xsltTemplate *xsltTemplatePtr;


struct xsltDecimalFormat

struct xsltDecimalFormat *next; /* chained list */
    xmlChar *name;
    /* Used for interpretation of pattern */
    xmlChar *digit;
    xmlChar *patternSeparator;
    /* May appear in result */
    xmlChar *minusSign;
    xmlChar *infinity;
    xmlChar *noNumber; /* Not-a-number */
    /* Used for interpretation of pattern and may appear in result */
    xmlChar *decimalPoint;
    xmlChar *grouping;
    xmlChar *percent;
    xmlChar *permille;
    xmlChar *zeroDigit;
} xsltDecimalFormat, *xsltDecimalFormatPtr;

/*
 * The in-memory structure corresponding to an XSLT Stylesheet
 * NOTE: most of the content is simply linked from the doc tree
 *       structure, no specific allocation is made.
 */
typedef struct _xsltStylesheet xsltStylesheet;
typedef xsltStylesheet *xsltStylesheetPtr;
struct _xsltStylesheet {
    /*
     * The stylesheet import relation is kept as a tree
     */
    struct _xsltStylesheet *parent;
    struct _xsltStylesheet *next;
    struct _xsltStylesheet *imports;

    /*
     * General data on the style sheet document
     */
    xmlDocPtr doc;		/* the parsed XML stylesheet */
    xmlHashTablePtr stripSpaces;/* the hash table of the strip-space
				   preserve space and cdata-section elements */

    /*
     * Global variable or parameters
     */
    xsltStackElemPtr variables; /* linked list of param and variables */

    /*
     * Template descriptions
     */
    xsltTemplatePtr templates;	/* the ordered list of templates */
    void *templatesHash;	/* hash table or wherever compiled templates
				   informations are stored */
    void *rootMatch;		/* template based on / */
    void *elemMatch;		/* template based on * */
    void *attrMatch;		/* template based on @* */
    void *parentMatch;		/* template based on .. */
    void *textMatch;		/* template based on text() */
    void *piMatch;		/* template based on processing-instruction() */
    void *commentMatch;		/* template based on comment() */
    
    /*
     * Namespace aliases
     */
    xmlHashTablePtr nsAliases;	/* the namespace alias hash tables */

    /*
     * Attribute sets
     */
    xmlHashTablePtr attributeSets;/* the attribute sets hash tables */

    /*
     * Output related stuff.
     */
    xmlChar *method;		/* the output method */
    xmlChar *methodURI;		/* associated namespace if any */
    xmlChar *version;		/* version string */
    xmlChar *encoding;		/* encoding string */
    int omitXmlDeclaration;     /* omit-xml-declaration = "yes" | "no" */

    /* Number formatting */
    xsltDecimalFormatPtr decimalFormat;
    int standalone;             /* standalone = "yes" | "no" */
    xmlChar *doctypePublic;     /* doctype-public string */
    xmlChar *doctypeSystem;     /* doctype-system string */
    int indent;			/* should output being indented */
    xmlChar *mediaType;		/* media-type string */
};


enum xsltOutputType

typedef enum {
    XSLT_OUTPUT_XML = 0,
    XSLT_OUTPUT_HTML,
    XSLT_OUTPUT_TEXT
} xsltOutputType;


enum xsltTransformState

typedef enum {
    XSLT_STATE_OK = 0,
    XSLT_STATE_ERROR,
    XSLT_STATE_STOPPED
} xsltTransformState;


struct xsltTransformContext

struct xsltTransformContext {
    xsltStylesheetPtr style;		/* the stylesheet used */
    xsltOutputType type;		/* the type of output */

    xmlDocPtr doc;			/* the current doc */
    xmlNodePtr node;			/* the current node */
    xmlNodeSetPtr nodeList;		/* the current node list */

    xmlDocPtr output;			/* the resulting document */
    xmlNodePtr insert;			/* the insertion node */

    xmlXPathContextPtr xpathCtxt;	/* the XPath context */
    void *variablesHash;		/* hash table or wherever variables
				   	   informations are stored */
    xmlDocPtr extraDocs;		/* extra docs parsed by document() */
    xsltTransformState state;		/* the current state */
};


xsltTransformContextPtr

typedef xsltTransformContext *xsltTransformContextPtr;


CHECK_STOPPED

#define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return;


CHECK_STOPPEDE

#define CHECK_STOPPEDE if (ctxt->state == XSLT_STATE_STOPPED) goto error;


CHECK_STOPPED0

#define CHECK_STOPPED0 if (ctxt->state == XSLT_STATE_STOPPED) return(0);


xsltParseStylesheetFile ()

xsltStylesheetPtr xsltParseStylesheetFile   (const xmlChar *filename);

Load and parse an XSLT stylesheet

filename : the filename/URL to the stylesheet
Returns :a new XSLT stylesheet structure.


xsltFreeStylesheet ()

void        xsltFreeStylesheet              (xsltStylesheetPtr sheet);

Free up the memory allocated by sheet

sheet : an XSLT stylesheet


xsltIsBlank ()

int         xsltIsBlank                     (xmlChar *str);

str : a string
Returns :1 if the string is NULL or made of blanks chars, 0 otherwise


xsltFreeStackElemList ()

void        xsltFreeStackElemList           (xsltStackElemPtr elem);

Free up the memory allocated by elem

elem : an XSLT stack element


xsltParseStylesheetProcess ()

xsltStylesheetPtr xsltParseStylesheetProcess
                                            (xsltStylesheetPtr ret,
                                             xmlDocPtr doc);

parse an XSLT stylesheet adding the associated structures

ret : the XSLT stylesheet
doc : and xmlDoc parsed XML
Returns :a new XSLT stylesheet structure.


xsltParseStylesheetDoc ()

xsltStylesheetPtr xsltParseStylesheetDoc    (xmlDocPtr doc);

parse an XSLT stylesheet building the associated structures

doc : and xmlDoc parsed XML
Returns :a new XSLT stylesheet structure.