keys: interface for the key matching used in key() and template matches.

## keys

keys - interface for the key matching used in key() and template matches.

implementation of the key mechanims.

Author(s): Daniel Veillard

## Synopsis

    #define NODE_IS_KEYED;
    int	xsltAddKey			(xsltStylesheetPtr style,
    					 const xmlChar * name,
    					 const xmlChar * nameURI,
    					 const xmlChar * match,
    					 const xmlChar * use,
    					 xmlNodePtr inst);
    void	xsltFreeDocumentKeys		(xsltDocumentPtr idoc);
    void	xsltFreeKeys			(xsltStylesheetPtr style);
    xmlNodeSetPtr	xsltGetKey		(xsltTransformContextPtr ctxt,
    					 const xmlChar * name,
    					 const xmlChar * nameURI,
    					 const xmlChar * value);
    void	xsltInitCtxtKeys		(xsltTransformContextPtr ctxt,
    					 xsltDocumentPtr idoc);

## Description

## Details

### Macro NODE_IS_KEYED

    #define NODE_IS_KEYED;

check for bit 15 set

### xsltAddKey ()

    int	xsltAddKey			(xsltStylesheetPtr style,
    					 const xmlChar * name,
    					 const xmlChar * nameURI,
    					 const xmlChar * match,
    					 const xmlChar * use,
    					 xmlNodePtr inst)

add a key definition to a stylesheet

`style`: | an XSLT stylesheet
`name`: | the key name or NULL
`nameURI`: | the name URI or NULL
`match`: | the match value
`use`: | the use value
`inst`: | the key instruction
`Returns`: | 0 in case of success, and -1 in case of failure.

### xsltFreeDocumentKeys ()

    void	xsltFreeDocumentKeys		(xsltDocumentPtr idoc)

Free the keys associated to a document

`idoc`: | a XSLT document

### xsltFreeKeys ()

    void	xsltFreeKeys			(xsltStylesheetPtr style)

Free up the memory used by XSLT keys in a stylesheet

`style`: | an XSLT stylesheet

### xsltGetKey ()

    xmlNodeSetPtr	xsltGetKey		(xsltTransformContextPtr ctxt,
    					 const xmlChar * name,
    					 const xmlChar * nameURI,
    					 const xmlChar * value)

Looks up a key of the in current source doc (the document info on @ctxt->document). Computes the key if not already done for the current source doc.

`ctxt`: | an XSLT transformation context
`name`: | the key name or NULL
`nameURI`: | the name URI or NULL
`value`: | the key value to look for
`Returns`: | the nodeset resulting from the query or NULL

### xsltInitCtxtKeys ()

    void	xsltInitCtxtKeys		(xsltTransformContextPtr ctxt,
    					 xsltDocumentPtr idoc)

Computes all the keys tables for the current input document. Should be done before global varibales are initialized. NOTE: Not used anymore in the refactored code.

`ctxt`: | an XSLT transformation context
`idoc`: | a document info