[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [xml] registering a extension module in libxslt



hi again,

more information comming. I just found
  http://mail.gnome.org/archives/xslt/2002-December/msg00040.html
but that does not help.

Another suggestion for the help-page. It does not mention
  xsltUnregisterExtModule()
as the counterpart of xsltRegisterExtModule().


More reading in the source makes me think that probably
xsltGetExtData() is not called or not called with all extension URIs etc.
It is not so easy to find as WITH_XSLT_DEBUG_EXTENSIONS is not active and there
seems to .c/onfigure option that turns it one (will probably manually do that).

Stefan

Stefan Kost wrote:
> hi all,
> 
> below is a code snippet, when executing it and loading the stylesheet the
> extension module initialisation gets not triggered and later I get:
> 
> libxslt-error: xsltValueOf: text copy failed
> [gitk-core:gitkerrors.c:95] : libxml-error: xmlXPathCompOpEval: function gettext
> not found
> [gitk-core:gitkerrors.c:95] : libxml-error: Unregistered function
> 
> The URI does definitely match (it uses the same constant definition).
> I had a look at the libxslt source, but e.g. things like
> xsltRegisterExtFunction() are not called verbatim anymore (params come from hashes).
> 
> @daniel could you please extend the example at
> http://xmlsoft.org/XSLT/extensions.html
> with example calls to xsltRegisterExtModule() and xsltRegisterExtFunction() and
> a xslt snipped that is using the extension?
> 
> Many thanks
>   Stefan
> 
> --------------
> 
> ...
> if(xsltRegisterExtModule(I18N_NS_URL,xsltExtInit_i18n,xsltExtShutdown_i18n)) {
>   gitk_err("failed to register extension modules (i18n)");
>   result=FALSE;
> }
> ...
> if(!(xsl_i18n=xsltParseStylesheetFile(XSL_PATH"i18n.xsl"))) {
>   gitk_err("failed to load stylesheet (i18n.xsl)");
>   result=FALSE;
> }
> ...
> 
> void *xsltExtInit_i18n(xsltTransformContextPtr ctxt, const xmlChar *URI) {
>   gitk_log_intro();
>   gitk_log1(">>>>>>>>>> URI=\"%s\"",URI);
>   if(xsltRegisterExtFunction(
>     ctxt,"gettext",URI,xmlXPathEvalFunc_i18n_gettext)
>   ) {
>     gitk_err("failed to register extension function (i18n)");
>   }
>   gitk_log_outro();
>   return(NULL);
> }
> 
> void xsltExtShutdown_i18n(xsltTransformContextPtr ctxt,const xmlChar *URI,void
> *data) {
> }
> 
> void xmlXPathEvalFunc_i18n_gettext(xmlXPathParserContextPtr ctxt, int nargs) {
>   gitk_log_intro();
>   gitk_log1(">>>>>>>>>> nargs=%d",nargs);
>   gitk_log_outro();
> }
> 
> -----------------
> 
> <xsl:stylesheet version="1.0"
>   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>   xmlns:giml="http://gitk.sourceforge.net/";
>   xmlns:i18n="<I18N_NS_URL>"
>   xmlns="http://gitk.sourceforge.net/";
>   exclude-result-prefixes="giml">
> 
> <xsl:output method="xml" doctype-system="http://gitk.sourceforge.net/giml.dtd"/>
> 
> <xsl:template match="i18n:text">
>   <xsl:value-of select="i18n:gettext(.)"/>
> </xsl:template>
> ...
> 

-- 
      \|/            Stefan Kost
     <@ @>           private            business
+-oOO-(_)-OOo------------------------------------------------------ - - -  -   -
|       __  Address  Simildenstr. 5     HTWK Leipzig, Fb IMN, Postfach 301166
|      ///           04277 Leipzig      04251 Leipzig
| __  ///            Germany            Germany
| \\\///    Phone    +49341 2253538     +49341 30766101
|  \__/     EMail    st_kost_at_gmx.net kost_at_imn.htwk-leipzig.de
|           WWW      www.sonicpulse.de  www.imn.htwk-leipzig.de/~kost/about.html
===-=-=--=---=---------------------------------- - - -  -    -
begin:vcard
fn:Stefan Kost
n:Kost;Stefan
org:HTWK Leipzig;FB. IMN
adr:;;Postfach 301166;Leipzig;;04251;Germany
email;internet:kost imn htwk-leipzig de
title:Dipl. Informatiker
tel;work:+49341 30766440
tel;home:+49341 2253538
tel;cell:+49178 3183742
x-mozilla-html:FALSE
url:http://www.imn.htwk-leipzig.de/~kost/about.html
version:2.1
end:vcard



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]