mirror of
https://gitlab.gnome.org/GNOME/libxslt
synced 2025-07-31 02:43:06 +03:00
updated the docs, made release 1.1.1 Daniel
* configure.in NEWS doc/*: updated the docs, made release 1.1.1 Daniel
This commit is contained in:
@ -1,3 +1,7 @@
|
||||
Wed Dec 10 17:20:27 CET 2003 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* configure.in NEWS doc/*: updated the docs, made release 1.1.1
|
||||
|
||||
Wed Dec 10 16:13:38 CET 2003 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* configure.in: upp'ed the dependancy to libxml2-2.6.3
|
||||
|
15
NEWS
15
NEWS
@ -10,6 +10,21 @@ http://cvs.gnome.org/lxr/source/libxslt/ChangeLog
|
||||
file
|
||||
for a really accurate description:
|
||||
|
||||
1.1.1: Dec 10 2003:
|
||||
- code cleanup (William Brack)
|
||||
- Windows: Makefile improvements (Igor Zlatkovic)
|
||||
- documentation improvements: William Brack, libexslt man page (Jonathan
|
||||
Wakely)
|
||||
- param in EXSLT functions (Shaun McCance)
|
||||
- XSLT debugging improvements (Mark Vakoc)
|
||||
- bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William
|
||||
Brack), key selector parsing with | reported by Oleg Paraschenko,
|
||||
xsl:element with computed namespaces (William Brack), xslt:import/include
|
||||
recursion detection (William Brack), exslt:function used in keys (William
|
||||
Brack), bug when CDATA_SECTION are foun in the tree (William Brack),
|
||||
entities handling when using XInclude.
|
||||
|
||||
|
||||
1.1.0: Nov 4 2003:
|
||||
- Removed DocBook SGML broken support
|
||||
- fix xsl:key to work with PIs
|
||||
|
@ -6,11 +6,11 @@ dnl libexslt is an extension
|
||||
dnl
|
||||
LIBXSLT_MAJOR_VERSION=1
|
||||
LIBXSLT_MINOR_VERSION=1
|
||||
LIBXSLT_MICRO_VERSION=0
|
||||
LIBXSLT_MICRO_VERSION=1
|
||||
PACKAGE=libxslt
|
||||
LIBEXSLT_MAJOR_VERSION=0
|
||||
LIBEXSLT_MINOR_VERSION=8
|
||||
LIBEXSLT_MICRO_VERSION=0
|
||||
LIBEXSLT_MICRO_VERSION=1
|
||||
LIBXML_REQUIRED_VERSION=2.6.3
|
||||
|
||||
|
||||
|
10
doc/FAQ.html
10
doc/FAQ.html
@ -24,15 +24,15 @@ A:link, A:visited, A:active { text-decoration: underline }
|
||||
</li>
|
||||
<li><em>passing parameters on the xsltproc command line doesn't work</em>
|
||||
<p><em>xsltproc --param test alpha foo.xsl foo.xml</em></p>
|
||||
<p><em>the param does not get passed and ends up as ""</em></p>
|
||||
<p><em>the param does not get passed and ends up as ""</em></p>
|
||||
<p>In a nutshell do a double escaping at the shell prompt:</p>
|
||||
<p>xsltproc --param test "'alpha'" foo.xsl foo.xml</p>
|
||||
<p>i.e. the string value is surrounded by " and ' then terminated by '
|
||||
and ". Libxslt interpret the parameter values as XPath expressions, so
|
||||
<p>xsltproc --param test "'alpha'" foo.xsl foo.xml</p>
|
||||
<p>i.e. the string value is surrounded by " and ' then terminated by '
|
||||
and ". Libxslt interpret the parameter values as XPath expressions, so
|
||||
the string -><code>alpha</code><- is intepreted as the node set
|
||||
matching this string. You really want -><code>'alpha'</code><- to
|
||||
be passed to the processor. And to allow this you need to escape the
|
||||
quotes at the shell level using -><code>"'alpha'"</code><- .</p>
|
||||
quotes at the shell level using -><code>"'alpha'"</code><- .</p>
|
||||
<p>or use</p>
|
||||
<p>xsltproc --stringparam test alpha foo.xsl foo.xml</p>
|
||||
</li>
|
||||
|
@ -20,13 +20,13 @@ useful resources:</p><ul><li>I strongly suggest to subscribe to <a href="http://
|
||||
XSLT</a> pages provide links to a lot of answers</li>
|
||||
<li>the <a href="http://incrementaldevelopment.com/xsltrick/">Gallery of
|
||||
XSLT Tricks</a> provides non-standard use case of XSLT</li>
|
||||
<li>And I suggest to buy Michael Kay "XSLT Programmer's Reference" book
|
||||
<li>And I suggest to buy Michael Kay "XSLT Programmer's Reference" book
|
||||
published by <a href="http://www.wrox.com/">Wrox</a> if you plan to work
|
||||
seriously with XSLT in the future.</li>
|
||||
</ul><p>Well, bugs or missing features are always possible, and I will make a
|
||||
point of fixing them in a timely fashion. The best way to report a bug is to
|
||||
use the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Gnome
|
||||
bug tracking database</a> (make sure to use the "libxslt" module name). I
|
||||
bug tracking database</a> (make sure to use the "libxslt" module name). I
|
||||
look at reports there regularly and it's good to have a reminder when a bug
|
||||
is still open. Be sure to specify that the bug is for the package libxslt.</p><p>For small problems you can try to get help on IRC, the #xml channel on
|
||||
irc.gnome.org (port 6667) usually have a few person subscribed which may help
|
||||
@ -59,16 +59,16 @@ things really hard to track and in some cases I am not the best person to
|
||||
answer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul><li>Support or help <span style="color: #E50000">request MUST be sent to
|
||||
the list or on bugzilla</span> in case of problems, so that the Question
|
||||
and Answers can be shared publicly. Failing to do so carries the implicit
|
||||
message "I want free support but I don't want to share the benefits with
|
||||
others" and is not welcome. I will automatically Carbon-Copy the
|
||||
message "I want free support but I don't want to share the benefits with
|
||||
others" and is not welcome. I will automatically Carbon-Copy the
|
||||
xslt@gnome.org mailing list for any technical reply made about libxml2 or
|
||||
libxslt.</li>
|
||||
<li>There is <span style="color: #E50000">no garantee for support</span>,
|
||||
if your question remains unanswered after a week, repost it, making sure
|
||||
you gave all the detail needed and the informations requested.</li>
|
||||
<li>Failing to provide informations as requested or double checking first
|
||||
for prior feedback also carries the implicit message "the time of the
|
||||
library maintainers is less valuable than my time" and might not be
|
||||
for prior feedback also carries the implicit message "the time of the
|
||||
library maintainers is less valuable than my time" and might not be
|
||||
welcome.</li>
|
||||
</ul><p>Of course, bugs reports with a suggested patch for fixing them will
|
||||
probably be processed faster.</p><p>If you're looking for help, a quick look at <a href="http://mail.gnome.org/archives/xslt/">the list archive</a> may actually
|
||||
|
@ -37,11 +37,11 @@ two <a href="http://www.w3.org/TR/xslt">ways to extend an XSLT engine</a>:</p><u
|
||||
</ul><p>In both cases the extensions need to be associated to a new namespace,
|
||||
i.e. an URI used as the name for the extension's namespace (there is no need
|
||||
to have a resource there for this to work).</p><p>libxslt provides a few extensions itself, either in libxslt namespace
|
||||
"http://xmlsoft.org/XSLT/" or in other namespace for well known extensions
|
||||
"http://xmlsoft.org/XSLT/" or in other namespace for well known extensions
|
||||
provided by other XSLT processors like Saxon, Xalan or XT.</p><h3><a name="Keep" id="Keep">Extension modules</a></h3><p>Since extensions are bound to a namespace name, usually sets of extensions
|
||||
coming from a given source are using the same namespace name defining in
|
||||
practice a group of extensions providing elements, functions or both. From
|
||||
libxslt point of view those are considered as an "extension module", and most
|
||||
libxslt point of view those are considered as an "extension module", and most
|
||||
of the APIs work at a module point of view.</p><p>Registration of new functions or elements are bound to the activation of
|
||||
the module, this is currently done by declaring the namespace as an extension
|
||||
by using the attribute <code>extension-element-prefixes</code> on the
|
||||
@ -156,18 +156,18 @@ xsltExtFunctionTest(xmlXPathParserContextPtr ctxt, int nargs)
|
||||
tctxt = xsltXPathGetTransformContext(ctxt);
|
||||
if (tctxt == NULL) {
|
||||
xsltGenericError(xsltGenericErrorContext,
|
||||
"xsltExtFunctionTest: failed to get the transformation context\n");
|
||||
"xsltExtFunctionTest: failed to get the transformation context\n");
|
||||
return;
|
||||
}
|
||||
data = xsltGetExtData(tctxt, (const xmlChar *) XSLT_DEFAULT_URL);
|
||||
if (data == NULL) {
|
||||
xsltGenericError(xsltGenericErrorContext,
|
||||
"xsltExtFunctionTest: failed to get module data\n");
|
||||
"xsltExtFunctionTest: failed to get module data\n");
|
||||
return;
|
||||
}
|
||||
#ifdef WITH_XSLT_DEBUG_FUNCTION
|
||||
xsltGenericDebug(xsltGenericDebugContext,
|
||||
"libxslt:test() called with %d args\n", nargs);
|
||||
"libxslt:test() called with %d args\n", nargs);
|
||||
#endif
|
||||
}</pre><h3><a name="Registerin2" id="Registerin2">Registering an extension element</a></h3><p>There is a single call to do this registration:</p><pre>int xsltRegisterExtElement(xsltTransformContextPtr ctxt,
|
||||
const xmlChar *name,
|
||||
@ -230,27 +230,27 @@ xsltExtElementTest(xsltTransformContextPtr ctxt, xmlNodePtr node,
|
||||
|
||||
if (ctxt == NULL) {
|
||||
xsltGenericError(xsltGenericErrorContext,
|
||||
"xsltExtElementTest: no transformation context\n");
|
||||
"xsltExtElementTest: no transformation context\n");
|
||||
return;
|
||||
}
|
||||
if (node == NULL) {
|
||||
xsltGenericError(xsltGenericErrorContext,
|
||||
"xsltExtElementTest: no current node\n");
|
||||
"xsltExtElementTest: no current node\n");
|
||||
return;
|
||||
}
|
||||
if (inst == NULL) {
|
||||
xsltGenericError(xsltGenericErrorContext,
|
||||
"xsltExtElementTest: no instruction\n");
|
||||
"xsltExtElementTest: no instruction\n");
|
||||
return;
|
||||
}
|
||||
if (ctxt->insert == NULL) {
|
||||
xsltGenericError(xsltGenericErrorContext,
|
||||
"xsltExtElementTest: no insertion point\n");
|
||||
"xsltExtElementTest: no insertion point\n");
|
||||
return;
|
||||
}
|
||||
comment =
|
||||
xmlNewComment((const xmlChar *)
|
||||
"libxslt:test element test worked");
|
||||
"libxslt:test element test worked");
|
||||
xmlAddChild(ctxt->insert, comment);
|
||||
}</pre><h3><a name="shutdown" id="shutdown">The shutdown of a module</a></h3><p>When the XSLT processor ends a transformation, the shutdown function (if
|
||||
it exists) of all the modules initialized are called.The
|
||||
|
@ -61,7 +61,7 @@ indicates the kind of node it represents, the most common ones are:</p><ul><li>d
|
||||
<li>text nodes</li>
|
||||
</ul><p>For the XSLT processing, entity nodes should not be generated (i.e. they
|
||||
should be replaced by their content). Most nodes also contains the following
|
||||
"navigation" informations:</p><ul><li>the containing <strong>doc</strong>ument</li>
|
||||
"navigation" informations:</p><ul><li>the containing <strong>doc</strong>ument</li>
|
||||
<li>the <strong>parent</strong> node</li>
|
||||
<li>the first <strong>children</strong> node</li>
|
||||
<li>the <strong>last</strong> children node</li>
|
||||
@ -89,7 +89,7 @@ level:</p><ol><li>parse the stylesheet and generate a DOM tree</li>
|
||||
<li>the input tree 4/ is not modified except the _private field which may
|
||||
be used for labelling keys if used by the stylesheet</li>
|
||||
</ul><h3><a name="XSLT1" id="XSLT1">The XSLT stylesheet compilation</a></h3><p>This is the second step described. It takes a stylesheet tree, and
|
||||
"compiles" it. This associates to each node a structure stored in the
|
||||
"compiles" it. This associates to each node a structure stored in the
|
||||
_private field and containing information computed in the stylesheet:</p><p align="center"><img src="stylesheet.gif" alt="a compiled XSLT stylesheet" /></p><p>One xsltStylesheet structure is generated per document parsed for the
|
||||
stylesheet. XSLT documents allow includes and imports of other documents,
|
||||
imports are stored in the <strong>imports</strong> list (hence keeping the
|
||||
@ -119,7 +119,7 @@ the match. As a result libxslt builds a relatively more complex set of
|
||||
structures for the templates:</p><p align="center"><img src="templates.gif" alt="The templates related structure" /></p><p>Let's describe a bit more closely what is built. First the xsltStylesheet
|
||||
structure holds a pointer to the template hash table. All the XSLT patterns
|
||||
compiled in this stylesheet are indexed by the value of the the target
|
||||
element (or attribute, pi ...) name, so when a element or an attribute "foo"
|
||||
element (or attribute, pi ...) name, so when a element or an attribute "foo"
|
||||
needs to be processed the lookup is done using the name as a key.</p><p>Each of the patterns is compiled into an xsltCompMatch structure. It holds
|
||||
the set of rules based on the tokenization of the pattern stored in reverse
|
||||
order (matching is easier this way). It also holds some information about the
|
||||
@ -129,7 +129,7 @@ threaded computation, it's unclear that this is a big deal in practice.)
|
||||
Predicate expressions are not compiled at this stage, they may be at run-time
|
||||
if needed, but in this case they are compiled as full XPath expressions (the
|
||||
use of some fixed predicate can probably be optimized, they are not yet).</p><p>The xsltCompMatch are then stored in the hash table, the clash list is
|
||||
itself sorted by priority of the template to implement "naturally" the XSLT
|
||||
itself sorted by priority of the template to implement "naturally" the XSLT
|
||||
priority rules.</p><p>Associated to the compiled pattern is the xsltTemplate itself containing
|
||||
the information required for the processing of the pattern including, of
|
||||
course, a pointer to the list of elements used for building the pattern
|
||||
|
@ -8,29 +8,21 @@
|
||||
</vendor>
|
||||
<product id="libxslt">
|
||||
<name>libxslt</name>
|
||||
<version>1.1.0</version>
|
||||
<last-release> Nov 4 2003</last-release>
|
||||
<version>1.1.1</version>
|
||||
<last-release> Dec 10 2003</last-release>
|
||||
<info-url>http://xmlsoft.org/XSLT/</info-url>
|
||||
<changes> - Removed DocBook SGML broken support
|
||||
- fix xsl:key to work with PIs
|
||||
- Makefile and build improvement (Graham Wilson), build cleanup (William
|
||||
Brack), macro fix (Justin Fletcher), build outside of source tree (Roumen
|
||||
Petrov)
|
||||
- xsltproc option display fix (Alexey Efimov), --load-trace (Crutcher
|
||||
Dunnavant)
|
||||
- Python: never use stdout for error
|
||||
- extension memory error fix (Karl Eichwalder)
|
||||
- header path fixes (Steve Ball)
|
||||
- added saxon:line-number() to libexslt (Brett Kail)
|
||||
- Fix some tortuous template problems when using predicates (William
|
||||
Brack)
|
||||
- Debugger status patch (Kasimier Buchcik)
|
||||
- Use new libxml2-2.6.x APIs for faster processing
|
||||
- Make sure xsl:sort is empty
|
||||
- Fixed a bug in default processing of attributes
|
||||
- Removes the deprecated breakpoint library
|
||||
- detect invalid names on templates (William Brack)
|
||||
- fix exslt:document (and similar) base handling problem
|
||||
<changes> - code cleanup (William Brack)
|
||||
- Windows: Makefile improvements (Igor Zlatkovic)
|
||||
- documentation improvements: William Brack, libexslt man page (Jonathan
|
||||
Wakely)
|
||||
- param in EXSLT functions (Shaun McCance)
|
||||
- XSLT debugging improvements (Mark Vakoc)
|
||||
- bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William
|
||||
Brack), key selector parsing with | reported by Oleg Paraschenko,
|
||||
xsl:element with computed namespaces (William Brack), xslt:import/include
|
||||
recursion detection (William Brack), exslt:function used in keys (William
|
||||
Brack), bug when CDATA_SECTION are foun in the tree (William Brack),
|
||||
entities handling when using XInclude.
|
||||
|
||||
</changes>
|
||||
</product>
|
||||
|
@ -8,7 +8,19 @@ H2 {font-family: Verdana,Arial,Helvetica}
|
||||
H3 {font-family: Verdana,Arial,Helvetica}
|
||||
A:link, A:visited, A:active { text-decoration: underline }
|
||||
</style><title>News</title></head><body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="100"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>News</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li><li><a href="http://www.mod-xslt.com/mod-xslt/">Apache module</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h3>CVS only : check the <a href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog">Changelog</a> file
|
||||
for a really accurate description</h3><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed DocBook SGML broken support</li>
|
||||
for a really accurate description</h3><h3>1.1.1: Dec 10 2003</h3><ul><li>code cleanup (William Brack)</li>
|
||||
<li>Windows: Makefile improvements (Igor Zlatkovic)</li>
|
||||
<li>documentation improvements: William Brack, libexslt man page (Jonathan
|
||||
Wakely)</li>
|
||||
<li>param in EXSLT functions (Shaun McCance)</li>
|
||||
<li>XSLT debugging improvements (Mark Vakoc)</li>
|
||||
<li>bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William
|
||||
Brack), key selector parsing with | reported by Oleg Paraschenko,
|
||||
xsl:element with computed namespaces (William Brack), xslt:import/include
|
||||
recursion detection (William Brack), exslt:function used in keys (William
|
||||
Brack), bug when CDATA_SECTION are foun in the tree (William Brack),
|
||||
entities handling when using XInclude.</li>
|
||||
</ul><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed DocBook SGML broken support</li>
|
||||
<li>fix xsl:key to work with PIs</li>
|
||||
<li>Makefile and build improvement (Graham Wilson), build cleanup (William
|
||||
Brack), macro fix (Justin Fletcher), build outside of source tree (Roumen
|
||||
@ -80,7 +92,7 @@ for a really accurate description</h3><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed
|
||||
<li>fixed stack overflow in recursive global variable or params</li>
|
||||
<li>cleaned up Result Value Tree handling, and fixed a couple of old bugs
|
||||
in the process</li>
|
||||
</ul><h3>1.0.27: Feb 24 2003</h3><ul><li>bug fixes: spurious xmlns:nsX="" generation, serialization bug (in
|
||||
</ul><h3>1.0.27: Feb 24 2003</h3><ul><li>bug fixes: spurious xmlns:nsX="" generation, serialization bug (in
|
||||
libxml2), a namespace copy problem, errors in the RPM spec prereqs</li>
|
||||
<li>Windows path canonicalization and document cache fix (Igor)</li>
|
||||
</ul><h3>1.0.26: Feb 10 2003</h3><ul><li>Fixed 3 serious bugs in document() and stylesheet compilation which
|
||||
@ -120,7 +132,7 @@ for a really accurate description</h3><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed
|
||||
<li>Allowed per transformation error handler.</li>
|
||||
<li>Fixed a few bugs: node() semantic, URI escaping, media-type, attribute
|
||||
lists</li>
|
||||
</ul><h3>1.0.21: Sep 26 2002</h3><ul><li>Bug fixes: match="node()", date:difference() (Igor and Charlie
|
||||
</ul><h3>1.0.21: Sep 26 2002</h3><ul><li>Bug fixes: match="node()", date:difference() (Igor and Charlie
|
||||
Bozeman), disable-output-escaping</li>
|
||||
<li>Python bindings: style.saveResultToString() from Ralf Mattes</li>
|
||||
<li>Logos from Marc Liyanage</li>
|
||||
@ -139,7 +151,7 @@ for a really accurate description</h3><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed
|
||||
<li>xsl:number fix: Richard Jinks</li>
|
||||
<li>xsl:format-numbers fix: Ken Neighbors</li>
|
||||
<li>document('') fix: bug pointed by Eric van der Vlist</li>
|
||||
<li>xsl:message with terminate="yes" fixes: William Brack</li>
|
||||
<li>xsl:message with terminate="yes" fixes: William Brack</li>
|
||||
<li>xsl:sort order support added: Ken Neighbors</li>
|
||||
<li>a few other bug fixes, some of them requiring the latest version of
|
||||
libxml2</li>
|
||||
@ -170,7 +182,7 @@ for a really accurate description</h3><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed
|
||||
<li>Nasty bug fix related to exslt:node-set</li>
|
||||
<li>Fixed the python Makefiles, cleanup of doc comments, Windows
|
||||
portability fixes</li>
|
||||
</ul><h3>1.0.13: Mar 8 2002</h3><ul><li>a number of bug fixes including "namespace node have no parents"</li>
|
||||
</ul><h3>1.0.13: Mar 8 2002</h3><ul><li>a number of bug fixes including "namespace node have no parents"</li>
|
||||
<li>Improvement of the Python bindings</li>
|
||||
<li>Charles Bozeman provided fixes and regression tests for exslt date
|
||||
functions.</li>
|
||||
@ -207,7 +219,7 @@ for a really accurate description</h3><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed
|
||||
informations</li>
|
||||
</ul><h3>1.0.7: Nov 10 2001</h3><ul><li>remove a compilation problem with LIBXSLT_PUBLIC</li>
|
||||
<li>Finishing the integration steps for Keith Isdale debugger</li>
|
||||
<li>fixes the handling of indent="no" on HTML output</li>
|
||||
<li>fixes the handling of indent="no" on HTML output</li>
|
||||
<li>fixes on the configure script and RPM spec file</li>
|
||||
</ul><h3>1.0.6: Oct 30 2001</h3><ul><li>bug fixes on number formatting (Thomas), date/time functions (Bruce
|
||||
Miller)</li>
|
||||
@ -352,7 +364,7 @@ for a really accurate description</h3><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed
|
||||
<li>Still misses extension element/function/prefixes support. Support of
|
||||
key() and document() is not complete</li>
|
||||
</ul><h3>0.1.0: Feb 8 2001</h3><ul><li>first beta version, released at the same time as libxml2-2.3.0</li>
|
||||
<li>lots of bug fixes, first "testing" version, but incomplete</li>
|
||||
<li>lots of bug fixes, first "testing" version, but incomplete</li>
|
||||
</ul><h3>0.0.1: Jan 25 2001</h3><ul><li>first alpha version released at the same time as libxml2-2.2.12</li>
|
||||
<li>Framework in place, should work on simple examples, but far from being
|
||||
feature complete</li>
|
||||
|
@ -18,7 +18,7 @@ or libxslt wrappers or bindings:</p><ul><li><a href="http://mail.gnome.org/archi
|
||||
earlier version of the libxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers for Python</a></li>
|
||||
<li>Petr Kozelka provides <a href="http://sourceforge.net/projects/libxml2-pas">Pascal units to glue
|
||||
libxml2</a> with Kylix, Delphi and other Pascal compilers</li>
|
||||
<li>Wai-Sun "Squidster" Chia provides <a href="http://www.rubycolor.org/arc/redist/">bindings for Ruby</a> and
|
||||
<li>Wai-Sun "Squidster" Chia provides <a href="http://www.rubycolor.org/arc/redist/">bindings for Ruby</a> and
|
||||
libxml2 bindings are also available in Ruby through the <a href="http://libgdome-ruby.berlios.de/">libgdome-ruby</a> module
|
||||
maintained by Tobias Peters.</li>
|
||||
<li>Steve Ball and contributors maintains <a href="http://tclxml.sourceforge.net/">libxml2 and libxslt bindings for
|
||||
@ -47,7 +47,7 @@ build the bindings is python/generator.py in the source distribution.</p><p>To i
|
||||
<li>Otherwise use the <a href="ftp://xmlsoft.org/python/">libxml2-python
|
||||
module distribution</a> corresponding to your installed version of
|
||||
libxml2 and libxslt. Note that to install it you will need both libxml2
|
||||
and libxslt installed and run "python setup.py build install" in the
|
||||
and libxslt installed and run "python setup.py build install" in the
|
||||
module tree.</li>
|
||||
</ul><p>The distribution includes a set of examples and regression tests for the
|
||||
python bindings in the <code>python/tests</code> directory. Here are some
|
||||
@ -55,17 +55,17 @@ excepts from those tests:</p><h3>basic.py:</h3><p>This is a basic test of XSLT i
|
||||
document, transforming the document and saving the result.</p><pre>import libxml2
|
||||
import libxslt
|
||||
|
||||
styledoc = libxml2.parseFile("test.xsl")
|
||||
styledoc = libxml2.parseFile("test.xsl")
|
||||
style = libxslt.parseStylesheetDoc(styledoc)
|
||||
doc = libxml2.parseFile("test.xml")
|
||||
doc = libxml2.parseFile("test.xml")
|
||||
result = style.applyStylesheet(doc, None)
|
||||
style.saveResultToFilename("foo", result, 0)
|
||||
style.saveResultToFilename("foo", result, 0)
|
||||
style.freeStylesheet()
|
||||
doc.freeDoc()
|
||||
result.freeDoc()</pre><p>The Python module is called libxslt, you will also need the libxml2 module
|
||||
for the operations on XML trees. Let's have a look at the objects manipulated
|
||||
in that example and how is the processing done:</p><ul><li><code>styledoc</code> : is a libxml2 document tree. It is obtained by
|
||||
parsing the XML file "test.xsl" containing the stylesheet.</li>
|
||||
parsing the XML file "test.xsl" containing the stylesheet.</li>
|
||||
<li><code>style</code> : this is a precompiled stylesheet ready to be used
|
||||
by the following transformations (note the plural form, multiple
|
||||
transformations can resuse the same stylesheet).</li>
|
||||
@ -78,7 +78,7 @@ in that example and how is the processing done:</p><ul><li><code>styledoc</code>
|
||||
stylesheet to the document. Note that some of the stylesheet informations
|
||||
may be related to the serialization of that document and as in this
|
||||
example a specific saveResultToFilename() method of the stylesheet should
|
||||
be used to save it to a file (in that case to "foo").</li>
|
||||
be used to save it to a file (in that case to "foo").</li>
|
||||
</ul><p>Also note the need to explicitely deallocate documents with freeDoc()
|
||||
except for the stylesheet document which is freed when its compiled form is
|
||||
garbage collected.</p><h3>extfunc.py:</h3><p>This one is a far more complex test. It shows how to modify the behaviour
|
||||
@ -104,9 +104,9 @@ def f(ctx, str):
|
||||
|
||||
return string.upper(str)
|
||||
|
||||
libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)</pre><p>This code defines and register an extension function. Note that the
|
||||
libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)</pre><p>This code defines and register an extension function. Note that the
|
||||
function can be bound to any name (foo) and how the binding is also
|
||||
associated to a namespace name "http://example.com/foo". From an XSLT point
|
||||
associated to a namespace name "http://example.com/foo". From an XSLT point
|
||||
of view the function just returns an upper case version of the string passed
|
||||
as a parameter. But the first part of the function also read some contextual
|
||||
information from the current XSLT processing environement, in that case it
|
||||
@ -117,7 +117,7 @@ objects check the <a href="internals.html">libray internals description</a>.
|
||||
The pctxt is actually an object from a class derived from the
|
||||
libxml2.xpathParserContext() with just a couple more properties including the
|
||||
possibility to look up the XSLT transformation context from the XPath
|
||||
context.</p><pre>styledoc = libxml2.parseDoc("""
|
||||
context.</p><pre>styledoc = libxml2.parseDoc("""
|
||||
<xsl:stylesheet version='1.0'
|
||||
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
|
||||
xmlns:foo='http://example.com/foo'
|
||||
@ -128,29 +128,29 @@ context.</p><pre>styledoc = libxml2.parseDoc("""
|
||||
<article><xsl:value-of select='foo:foo($bar)'/></article>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
""")</pre><p>Here is a simple example of how to read an XML document from a python
|
||||
""")</pre><p>Here is a simple example of how to read an XML document from a python
|
||||
string with libxml2. Note how this stylesheet:</p><ul><li>Uses a global parameter <code>bar</code></li>
|
||||
<li>Reference the extension function f</li>
|
||||
<li>how the Namespace name "http://example.com/foo" has to be bound to a
|
||||
<li>how the Namespace name "http://example.com/foo" has to be bound to a
|
||||
prefix</li>
|
||||
<li>how that prefix is excluded from the output</li>
|
||||
<li>how the function is called from the select</li>
|
||||
</ul><pre>style = libxslt.parseStylesheetDoc(styledoc)
|
||||
doc = libxml2.parseDoc("<doc/>")
|
||||
result = style.applyStylesheet(doc, { "bar": "'success'" })
|
||||
doc = libxml2.parseDoc("<doc/>")
|
||||
result = style.applyStylesheet(doc, { "bar": "'success'" })
|
||||
style.freeStylesheet()
|
||||
doc.freeDoc()</pre><p>that part is identical, to the basic example except that the
|
||||
transformation is passed a dictionnary of parameters. Note that the string
|
||||
passed "success" had to be quoted, otherwise it is interpreted as an XPath
|
||||
query for the childs of root named "success".</p><pre>root = result.children
|
||||
if root.name != "article":
|
||||
print "Unexpected root node name"
|
||||
passed "success" had to be quoted, otherwise it is interpreted as an XPath
|
||||
query for the childs of root named "success".</p><pre>root = result.children
|
||||
if root.name != "article":
|
||||
print "Unexpected root node name"
|
||||
sys.exit(1)
|
||||
if root.content != "SUCCESS":
|
||||
print "Unexpected root node content, extension function failed"
|
||||
if root.content != "SUCCESS":
|
||||
print "Unexpected root node content, extension function failed"
|
||||
sys.exit(1)
|
||||
if nodeName != 'article':
|
||||
print "The function callback failed to access its context"
|
||||
print "The function callback failed to access its context"
|
||||
sys.exit(1)
|
||||
|
||||
result.freeDoc()</pre><p>That part just verifies that the transformation worked, that the parameter
|
||||
|
@ -287,6 +287,22 @@ platform, get in touch with me to upload the package. I will keep them in the
|
||||
href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog">Changelog</a> file
|
||||
for a really accurate description</h3>
|
||||
|
||||
<h3>1.1.1: Dec 10 2003</h3>
|
||||
<ul>
|
||||
<li>code cleanup (William Brack)</li>
|
||||
<li>Windows: Makefile improvements (Igor Zlatkovic)</li>
|
||||
<li>documentation improvements: William Brack, libexslt man page (Jonathan
|
||||
Wakely)</li>
|
||||
<li>param in EXSLT functions (Shaun McCance)</li>
|
||||
<li>XSLT debugging improvements (Mark Vakoc)</li>
|
||||
<li>bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William
|
||||
Brack), key selector parsing with | reported by Oleg Paraschenko,
|
||||
xsl:element with computed namespaces (William Brack), xslt:import/include
|
||||
recursion detection (William Brack), exslt:function used in keys (William
|
||||
Brack), bug when CDATA_SECTION are foun in the tree (William Brack),
|
||||
entities handling when using XInclude.</li>
|
||||
</ul>
|
||||
|
||||
<h3>1.1.0: Nov 4 2003</h3>
|
||||
<ul>
|
||||
<li>Removed DocBook SGML broken support</li>
|
||||
|
@ -23,21 +23,21 @@ extern "C" {
|
||||
*
|
||||
* the version string like "1.2.3"
|
||||
*/
|
||||
#define LIBXSLT_DOTTED_VERSION "1.1.0"
|
||||
#define LIBXSLT_DOTTED_VERSION "1.1.1"
|
||||
|
||||
/**
|
||||
* LIBXSLT_VERSION:
|
||||
*
|
||||
* the version number: 1.2.3 value is 1002003
|
||||
*/
|
||||
#define LIBXSLT_VERSION 10100
|
||||
#define LIBXSLT_VERSION 10101
|
||||
|
||||
/**
|
||||
* LIBXSLT_VERSION_STRING:
|
||||
*
|
||||
* the version number string, 1.2.3 value is "1002003"
|
||||
*/
|
||||
#define LIBXSLT_VERSION_STRING "10100"
|
||||
#define LIBXSLT_VERSION_STRING "10101"
|
||||
|
||||
/**
|
||||
* WITH_XSLT_DEBUG:
|
||||
|
Reference in New Issue
Block a user