diff --git a/ChangeLog b/ChangeLog
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_Q2hhbmdlTG9n..70b4379759501bc2c51df2cecfc0a934e9f00935_Q2hhbmdlTG9n 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Mar 24 22:30:00 CET 2003 Daniel Veillard <daniel@veillard.com>
+
+	* libxslt/pattern.c libxslt/transform.c libxslt/variables.c:
+	  Result Value Tree are now generated with a document root node
+	  not an element, it's quite cleaner.
+	* configure.in libxslt.spec.in NEWS: But this requires libxml2-2.5.5
+	  also prepared for libxslt-1.0.28 release
+	* doc/*: updated and regenerated the docs
+
 Mon Mar 24 15:01:07 CET 2003 Daniel Veillard <daniel@veillard.com>
 
 	* libxslt/pattern.c libxslt/transform.c libxslt/variables.c:
diff --git a/NEWS b/NEWS
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_TkVXUw==..70b4379759501bc2c51df2cecfc0a934e9f00935_TkVXUw== 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,14 @@
  file
 for a really accurate description:
 
+1.0.28: Mar 24 2003:
+   - fixed node() in patterns semantic.
+   - fixed a memory access problem in format-number()
+   - fixed stack overflow in recursive global variable or params
+   - cleaned up Result Value Tree handling, and fixed a couple of old bugs
+    in the process
+
+
 1.0.27: Feb 24 2003:
    - bug fixes: spurious xmlns:nsX="" generation, serialization bug (in
     libxml2), a namespace copy problem, errors in the RPM spec prereqs
@@ -14,7 +22,7 @@
 1.0.27: Feb 24 2003:
    - bug fixes: spurious xmlns:nsX="" generation, serialization bug (in
     libxml2), a namespace copy problem, errors in the RPM spec prereqs
-   - Windows path canonicalization and document cache fix (Igor) 
+   - Windows path canonicalization and document cache fix (Igor)
 
 
 1.0.26: Feb 10 2003:
diff --git a/configure.in b/configure.in
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_Y29uZmlndXJlLmlu..70b4379759501bc2c51df2cecfc0a934e9f00935_Y29uZmlndXJlLmlu 100644
--- a/configure.in
+++ b/configure.in
@@ -6,7 +6,7 @@
 dnl
 LIBXSLT_MAJOR_VERSION=1
 LIBXSLT_MINOR_VERSION=0
-LIBXSLT_MICRO_VERSION=27
+LIBXSLT_MICRO_VERSION=28
 PACKAGE=libxslt
 LIBEXSLT_MAJOR_VERSION=0
 LIBEXSLT_MINOR_VERSION=7
@@ -10,8 +10,8 @@
 PACKAGE=libxslt
 LIBEXSLT_MAJOR_VERSION=0
 LIBEXSLT_MINOR_VERSION=7
-LIBEXSLT_MICRO_VERSION=18
-LIBXML_REQUIRED_VERSION=2.5.2
+LIBEXSLT_MICRO_VERSION=19
+LIBXML_REQUIRED_VERSION=2.5.5
 
 
 LIBXSLT_VERSION=$LIBXSLT_MAJOR_VERSION.$LIBXSLT_MINOR_VERSION.$LIBXSLT_MICRO_VERSION
diff --git a/doc/html/index.sgml b/doc/html/index.sgml
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL2h0bWwvaW5kZXguc2dtbA==..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL2h0bWwvaW5kZXguc2dtbA== 100644
--- a/doc/html/index.sgml
+++ b/doc/html/index.sgml
@@ -232,6 +232,7 @@
 <ANCHOR id ="XSLTPARSESTYLESHEETPROCESS" href="libxslt/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETPROCESS">
 <ANCHOR id ="XSLTPARSESTYLESHEETOUTPUT" href="libxslt/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETOUTPUT">
 <ANCHOR id ="XSLTPARSESTYLESHEETDOC" href="libxslt/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETDOC">
+<ANCHOR id ="XSLTPARSESTYLESHEETIMPORTEDDOC" href="libxslt/libxslt-xsltinternals.html#XSLTPARSESTYLESHEETIMPORTEDDOC">
 <ANCHOR id ="XSLTLOADSTYLESHEETPI" href="libxslt/libxslt-xsltinternals.html#XSLTLOADSTYLESHEETPI">
 <ANCHOR id ="XSLTNUMBERFORMAT" href="libxslt/libxslt-xsltinternals.html#XSLTNUMBERFORMAT">
 <ANCHOR id ="XSLTFORMATNUMBERCONVERSION" href="libxslt/libxslt-xsltinternals.html#XSLTFORMATNUMBERCONVERSION">
diff --git a/doc/html/libxslt-numbersinternals.html b/doc/html/libxslt-numbersinternals.html
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL2h0bWwvbGlieHNsdC1udW1iZXJzaW50ZXJuYWxzLmh0bWw=..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL2h0bWwvbGlieHNsdC1udW1iZXJzaW50ZXJuYWxzLmh0bWw= 100644
--- a/doc/html/libxslt-numbersinternals.html
+++ b/doc/html/libxslt-numbersinternals.html
@@ -111,7 +111,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN6015"
+NAME="AEN6039"
 ></A
 ><H2
 >Name</H2
@@ -119,7 +119,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN6018"
+NAME="AEN6042"
 ></A
 ><H2
 >Synopsis</H2
@@ -157,7 +157,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6025"
+NAME="AEN6049"
 ></A
 ><H2
 >Description</H2
@@ -167,10 +167,10 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6028"
+NAME="AEN6052"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
@@ -171,10 +171,10 @@
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6030"
+NAME="AEN6054"
 ></A
 ><H3
 ><A
@@ -214,7 +214,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6036"
+NAME="AEN6060"
 ></A
 ><H3
 ><A
@@ -240,7 +240,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6041"
+NAME="AEN6065"
 ></A
 ><H3
 ><A
@@ -278,7 +278,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6047"
+NAME="AEN6071"
 ></A
 ><H3
 ><A
diff --git a/doc/html/libxslt-xsltinternals.html b/doc/html/libxslt-xsltinternals.html
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL2h0bWwvbGlieHNsdC14c2x0aW50ZXJuYWxzLmh0bWw=..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL2h0bWwvbGlieHNsdC14c2x0aW50ZXJuYWxzLmh0bWw= 100644
--- a/doc/html/libxslt-xsltinternals.html
+++ b/doc/html/libxslt-xsltinternals.html
@@ -393,6 +393,17 @@
 HREF="libxslt-xsltinternals.html#XSLTSTYLESHEETPTR"
 >xsltStylesheetPtr</A
 > <A
+HREF="libxslt-xsltinternals.html#XSLTPARSESTYLESHEETIMPORTEDDOC"
+>xsltParseStylesheetImportedDoc</A
+>
+                                            (<GTKDOCLINK
+HREF="XMLDOCPTR"
+>xmlDocPtr</GTKDOCLINK
+> doc);
+<A
+HREF="libxslt-xsltinternals.html#XSLTSTYLESHEETPTR"
+>xsltStylesheetPtr</A
+> <A
 HREF="libxslt-xsltinternals.html#XSLTLOADSTYLESHEETPI"
 >xsltLoadStylesheetPI</A
 >      (<GTKDOCLINK
@@ -468,7 +479,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN5396"
+NAME="AEN5399"
 ></A
 ><H2
 >Description</H2
@@ -478,10 +489,10 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN5399"
+NAME="AEN5402"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
@@ -482,10 +493,10 @@
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5401"
+NAME="AEN5404"
 ></A
 ><H3
 ><A
@@ -513,7 +524,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5407"
+NAME="AEN5410"
 ></A
 ><H3
 ><A
@@ -541,7 +552,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5413"
+NAME="AEN5416"
 ></A
 ><H3
 ><A
@@ -573,7 +584,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5419"
+NAME="AEN5422"
 ></A
 ><H3
 ><A
@@ -599,7 +610,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5424"
+NAME="AEN5427"
 ></A
 ><H3
 ><A
@@ -626,7 +637,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5430"
+NAME="AEN5433"
 ></A
 ><P
 ></P
@@ -681,7 +692,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5443"
+NAME="AEN5446"
 ></A
 ><H3
 ><A
@@ -708,7 +719,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5449"
+NAME="AEN5452"
 ></A
 ><P
 ></P
@@ -763,7 +774,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5462"
+NAME="AEN5465"
 ></A
 ><H3
 ><A
@@ -790,7 +801,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5468"
+NAME="AEN5471"
 ></A
 ><P
 ></P
@@ -845,7 +856,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5481"
+NAME="AEN5484"
 ></A
 ><H3
 ><A
@@ -891,7 +902,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5487"
+NAME="AEN5490"
 ></A
 ><H3
 ><A
@@ -917,7 +928,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5492"
+NAME="AEN5495"
 ></A
 ><H3
 ><A
@@ -961,7 +972,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5498"
+NAME="AEN5501"
 ></A
 ><H3
 ><A
@@ -987,7 +998,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5503"
+NAME="AEN5506"
 ></A
 ><H3
 ><A
@@ -1020,7 +1031,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5509"
+NAME="AEN5512"
 ></A
 ><H3
 ><A
@@ -1046,7 +1057,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5514"
+NAME="AEN5517"
 ></A
 ><H3
 ><A
@@ -1140,7 +1151,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5519"
+NAME="AEN5522"
 ></A
 ><H3
 ><A
@@ -1166,7 +1177,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5524"
+NAME="AEN5527"
 ></A
 ><H3
 ><A
@@ -1203,7 +1214,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5530"
+NAME="AEN5533"
 ></A
 ><H3
 ><A
@@ -1229,7 +1240,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5535"
+NAME="AEN5538"
 ></A
 ><H3
 ><A
@@ -1272,7 +1283,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5545"
+NAME="AEN5548"
 ></A
 ><P
 ></P
@@ -1361,7 +1372,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5566"
+NAME="AEN5569"
 ></A
 ><H3
 ><A
@@ -1396,7 +1407,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5574"
+NAME="AEN5577"
 ></A
 ><P
 ></P
@@ -1468,7 +1479,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5591"
+NAME="AEN5594"
 ></A
 ><H3
 ><A
@@ -1517,7 +1528,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5596"
+NAME="AEN5599"
 ></A
 ><H3
 ><A
@@ -1550,7 +1561,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5604"
+NAME="AEN5607"
 ></A
 ><P
 ></P
@@ -1591,7 +1602,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5614"
+NAME="AEN5617"
 ></A
 ><H3
 ><A
@@ -1669,7 +1680,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5620"
+NAME="AEN5623"
 ></A
 ><H3
 ><A
@@ -1695,7 +1706,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5625"
+NAME="AEN5628"
 ></A
 ><H3
 ><A
@@ -1730,7 +1741,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5630"
+NAME="AEN5633"
 ></A
 ><H3
 ><A
@@ -1756,7 +1767,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5635"
+NAME="AEN5638"
 ></A
 ><H3
 ><A
@@ -1880,7 +1891,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5640"
+NAME="AEN5643"
 ></A
 ><H3
 ><A
@@ -1906,7 +1917,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5645"
+NAME="AEN5648"
 ></A
 ><H3
 ><A
@@ -1936,7 +1947,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5650"
+NAME="AEN5653"
 ></A
 ><H3
 ><A
@@ -1966,7 +1977,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5655"
+NAME="AEN5658"
 ></A
 ><H3
 ><A
@@ -1995,7 +2006,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5661"
+NAME="AEN5664"
 ></A
 ><H3
 ><A
@@ -2024,7 +2035,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5667"
+NAME="AEN5670"
 ></A
 ><H3
 ><A
@@ -2053,7 +2064,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5673"
+NAME="AEN5676"
 ></A
 ><H3
 ><A
@@ -2083,7 +2094,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5680"
+NAME="AEN5683"
 ></A
 ><P
 ></P
@@ -2122,7 +2133,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5689"
+NAME="AEN5692"
 ></A
 ><H3
 ><A
@@ -2155,7 +2166,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5697"
+NAME="AEN5700"
 ></A
 ><P
 ></P
@@ -2211,7 +2222,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5710"
+NAME="AEN5713"
 ></A
 ><H3
 ><A
@@ -2246,7 +2257,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5718"
+NAME="AEN5721"
 ></A
 ><P
 ></P
@@ -2284,7 +2295,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5727"
+NAME="AEN5730"
 ></A
 ><H3
 ><A
@@ -2314,7 +2325,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5734"
+NAME="AEN5737"
 ></A
 ><P
 ></P
@@ -2370,7 +2381,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5747"
+NAME="AEN5750"
 ></A
 ><H3
 ><A
@@ -2405,7 +2416,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5755"
+NAME="AEN5758"
 ></A
 ><P
 ></P
@@ -2443,7 +2454,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5764"
+NAME="AEN5767"
 ></A
 ><H3
 ><A
@@ -2481,7 +2492,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5773"
+NAME="AEN5776"
 ></A
 ><P
 ></P
@@ -2554,7 +2565,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5790"
+NAME="AEN5793"
 ></A
 ><H3
 ><A
@@ -2592,7 +2603,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5799"
+NAME="AEN5802"
 ></A
 ><P
 ></P
@@ -2666,7 +2677,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5816"
+NAME="AEN5819"
 ></A
 ><H3
 ><A
@@ -2701,7 +2712,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5824"
+NAME="AEN5827"
 ></A
 ><P
 ></P
@@ -2756,7 +2767,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5837"
+NAME="AEN5840"
 ></A
 ><H3
 ><A
@@ -2789,7 +2800,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5845"
+NAME="AEN5848"
 ></A
 ><P
 ></P
@@ -2845,7 +2856,98 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5858"
+NAME="AEN5861"
+></A
+><H3
+><A
+NAME="XSLTPARSESTYLESHEETIMPORTEDDOC"
+></A
+>xsltParseStylesheetImportedDoc ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><A
+HREF="libxslt-xsltinternals.html#XSLTSTYLESHEETPTR"
+>xsltStylesheetPtr</A
+> xsltParseStylesheetImportedDoc
+                                            (<GTKDOCLINK
+HREF="XMLDOCPTR"
+>xmlDocPtr</GTKDOCLINK
+> doc);</PRE
+></TD
+></TR
+></TABLE
+><P
+>parse an XSLT stylesheet building the associated structures
+except the processing not needed for imported documents.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><A
+NAME="AEN5869"
+></A
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TBODY
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>doc</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>  and xmlDoc parsed XML</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+></SPAN
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>a new XSLT stylesheet structure.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN5882"
 ></A
 ><H3
 ><A
@@ -2889,7 +2991,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5867"
+NAME="AEN5891"
 ></A
 ><P
 ></P
@@ -2945,7 +3047,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5880"
+NAME="AEN5904"
 ></A
 ><H3
 ><A
@@ -2983,7 +3085,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5889"
+NAME="AEN5913"
 ></A
 ><P
 ></P
@@ -3055,7 +3157,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5906"
+NAME="AEN5930"
 ></A
 ><H3
 ><A
@@ -3134,7 +3236,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5924"
+NAME="AEN5948"
 ></A
 ><P
 ></P
@@ -3241,7 +3343,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5949"
+NAME="AEN5973"
 ></A
 ><H3
 ><A
@@ -3277,7 +3379,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5957"
+NAME="AEN5981"
 ></A
 ><P
 ></P
@@ -3332,7 +3434,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5970"
+NAME="AEN5994"
 ></A
 ><H3
 ><A
@@ -3363,7 +3465,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5977"
+NAME="AEN6001"
 ></A
 ><P
 ></P
@@ -3419,7 +3521,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5990"
+NAME="AEN6014"
 ></A
 ><H3
 ><A
@@ -3451,7 +3553,7 @@
 ><DIV
 CLASS="INFORMALTABLE"
 ><A
-NAME="AEN5997"
+NAME="AEN6021"
 ></A
 ><P
 ></P
diff --git a/doc/libxslt-decl.txt b/doc/libxslt-decl.txt
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL2xpYnhzbHQtZGVjbC50eHQ=..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL2xpYnhzbHQtZGVjbC50eHQ= 100644
--- a/doc/libxslt-decl.txt
+++ b/doc/libxslt-decl.txt
@@ -1,6 +1,6 @@
 <MACRO>
 <NAME>LIBXSLT_DOTTED_VERSION</NAME>
-#define LIBXSLT_DOTTED_VERSION "1.0.23"
+#define LIBXSLT_DOTTED_VERSION "1.0.27"
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION</NAME>
@@ -4,7 +4,7 @@
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION</NAME>
-#define LIBXSLT_VERSION 10023
+#define LIBXSLT_VERSION 10027
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION_STRING</NAME>
@@ -8,7 +8,7 @@
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION_STRING</NAME>
-#define LIBXSLT_VERSION_STRING "10023"
+#define LIBXSLT_VERSION_STRING "10027"
 </MACRO>
 <MACRO>
 <NAME>WITH_XSLT_DEBUG</NAME>
@@ -27,6 +27,10 @@
 #define XSLT_NEED_TRIO
 </MACRO>
 <MACRO>
+<NAME>XSLT_NEED_TRIO</NAME>
+#define XSLT_NEED_TRIO
+</MACRO>
+<MACRO>
 <NAME>WITH_DEBUGGER</NAME>
 #define WITH_DEBUGGER
 </MACRO>
@@ -1146,7 +1150,7 @@
 </FUNCTION>
 <MACRO>
 <NAME>LIBXSLT_DOTTED_VERSION</NAME>
-#define LIBXSLT_DOTTED_VERSION "1.0.23"
+#define LIBXSLT_DOTTED_VERSION "1.0.27"
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION</NAME>
@@ -1150,7 +1154,7 @@
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION</NAME>
-#define LIBXSLT_VERSION 10023
+#define LIBXSLT_VERSION 10027
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION_STRING</NAME>
@@ -1154,7 +1158,7 @@
 </MACRO>
 <MACRO>
 <NAME>LIBXSLT_VERSION_STRING</NAME>
-#define LIBXSLT_VERSION_STRING "10023"
+#define LIBXSLT_VERSION_STRING "10027"
 </MACRO>
 <MACRO>
 <NAME>WITH_XSLT_DEBUG</NAME>
@@ -1773,6 +1777,11 @@
 xmlDocPtr doc
 </FUNCTION>
 <FUNCTION>
+<NAME>xsltParseStylesheetImportedDoc</NAME>
+<RETURNS>xsltStylesheetPtr 	</RETURNS>
+xmlDocPtr doc
+</FUNCTION>
+<FUNCTION>
 <NAME>xsltLoadStylesheetPI</NAME>
 <RETURNS>xsltStylesheetPtr 	</RETURNS>
 xmlDocPtr doc
diff --git a/doc/libxslt-sections.txt b/doc/libxslt-sections.txt
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL2xpYnhzbHQtc2VjdGlvbnMudHh0..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL2xpYnhzbHQtc2VjdGlvbnMudHh0 100644
--- a/doc/libxslt-sections.txt
+++ b/doc/libxslt-sections.txt
@@ -359,6 +359,7 @@
 xsltParseStylesheetProcess
 xsltParseStylesheetOutput
 xsltParseStylesheetDoc
+xsltParseStylesheetImportedDoc
 xsltLoadStylesheetPI
 xsltNumberFormat
 xsltFormatNumberConversion
diff --git a/doc/news.html b/doc/news.html
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL25ld3MuaHRtbA==..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL25ld3MuaHRtbA== 100644
--- a/doc/news.html
+++ b/doc/news.html
@@ -84,7 +84,15 @@
 <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.0.28: Mar 24 2003</h3>
+<ul>
+<li>fixed node() in patterns semantic.</li>
+  <li>fixed a memory access problem in format-number()</li>
+  <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=&quot;&quot; generation, serialization bug (in
     libxml2), a namespace copy problem, errors in the RPM spec prereqs</li>
@@ -87,8 +95,8 @@
 <h3>1.0.27: Feb 24 2003</h3>
 <ul>
 <li>bug fixes: spurious xmlns:nsX=&quot;&quot; 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>
+  <li>Windows path canonicalization and document cache fix (Igor)</li>
 </ul>
 <h3>1.0.26: Feb 10 2003</h3>
 <ul>
diff --git a/doc/python.html b/doc/python.html
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL3B5dGhvbi5odG1s..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL3B5dGhvbi5odG1s 100644
--- a/doc/python.html
+++ b/doc/python.html
@@ -91,8 +91,7 @@
 <li>
 <a href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">Matt
     Sergeant</a> developped <a href="http://axkit.org/download/">XML::LibXML
-    and XML::LibXSLT</a>, Perl wrappers for libxml2/libxslt as part of the
-    <a href="http://axkit.com/">AxKit XML application server</a>
+    and XML::LibXSLT</a>, Perl wrappers for libxml2/libxslt as part of the <a href="http://axkit.com/">AxKit XML application server</a>
 </li>
   <li>
 <a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a> provides and
@@ -116,9 +115,8 @@
     for PHP</a>.</li>
   <li>
 <a href="http://savannah.gnu.org/projects/classpathx/">LibxmlJ</a> is
-      an effort to create a 100% JAXP-compatible Java wrapper for 
-      libxml2 and libxslt as part of GNU ClasspathX project.
-</li>
+    an effort to create a 100% JAXP-compatible Java wrapper for libxml2 and
+    libxslt as part of GNU ClasspathX project.</li>
 </ul>
 <p>The libxslt Python module depends on the <a href="http://xmlsoft.org/python.html">libxml2 Python</a> module.</p>
 <p>The distribution includes a set of Python bindings, which are garanteed to
diff --git a/doc/xslt.html b/doc/xslt.html
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_ZG9jL3hzbHQuaHRtbA==..70b4379759501bc2c51df2cecfc0a934e9f00935_ZG9jL3hzbHQuaHRtbA== 100644
--- a/doc/xslt.html
+++ b/doc/xslt.html
@@ -267,7 +267,16 @@
 href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog">Changelog</a> file
 for a really accurate description</h3>
 
+<h3>1.0.28: Mar 24 2003</h3>
+<ul>
+  <li>fixed node() in patterns semantic.</li>
+  <li>fixed a memory access problem in format-number()</li>
+  <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
     libxml2), a namespace copy problem, errors in the RPM spec prereqs</li>
@@ -270,8 +279,8 @@
 <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>
+  <li>Windows path canonicalization and document cache fix (Igor)</li>
 </ul>
 
 <h3>1.0.26: Feb 10 2003</h3>
@@ -859,8 +868,8 @@
   <li><a
     href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">Matt
     Sergeant</a> developped <a href="http://axkit.org/download/">XML::LibXML
-    and XML::LibXSLT</a>, Perl wrappers for libxml2/libxslt as part of the
-    <a href="http://axkit.com/">AxKit XML application server</a></li>
+    and XML::LibXSLT</a>, Perl wrappers for libxml2/libxslt as part of the <a
+    href="http://axkit.com/">AxKit XML application server</a></li>
   <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a> provides and
     earlier version of the libxml/libxslt <a
     href="http://www.rexx.com/~dkuhlman">wrappers for Python</a></li>
@@ -882,8 +891,8 @@
     using <a href="http://siasl.dyndns.org/projects/projects.html">libxslt
     for PHP</a>.</li>
   <li><a href="http://savannah.gnu.org/projects/classpathx/">LibxmlJ</a> is
-      an effort to create a 100% JAXP-compatible Java wrapper for 
-      libxml2 and libxslt as part of GNU ClasspathX project.
+    an effort to create a 100% JAXP-compatible Java wrapper for libxml2 and
+    libxslt as part of GNU ClasspathX project.</li>
 </ul>
 
 <p>The libxslt Python module depends on the <a
diff --git a/libxslt.spec.in b/libxslt.spec.in
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_bGlieHNsdC5zcGVjLmlu..70b4379759501bc2c51df2cecfc0a934e9f00935_bGlieHNsdC5zcGVjLmlu 100644
--- a/libxslt.spec.in
+++ b/libxslt.spec.in
@@ -7,8 +7,8 @@
 Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
 URL: http://xmlsoft.org/XSLT/
-Requires: libxml2 >= 2.5.4
-BuildRequires: libxml2-devel >= 2.5.4
+Requires: libxml2 >= 2.5.5
+BuildRequires: libxml2-devel >= 2.5.5
 BuildRequires: python python-devel
 BuildRequires: libxml2-python
 Prefix: %{_prefix}
@@ -17,10 +17,10 @@
 %description
 This C library allows to transform XML files into other XML files
 (or HTML, text, ...) using the standard XSLT stylesheet transformation
-mechanism. To use it you need to have a version of libxml2 >= 2.5.4
+mechanism. To use it you need to have a version of libxml2 >= 2.5.5
 installed. The xsltproc command is a command line interface to the XSLT engine
 
 %package devel
 Summary: Libraries, includes, etc. to embed the Gnome XSLT engine
 Group: Development/Libraries
 Requires: libxslt = %{version}
@@ -21,11 +21,11 @@
 installed. The xsltproc command is a command line interface to the XSLT engine
 
 %package devel
 Summary: Libraries, includes, etc. to embed the Gnome XSLT engine
 Group: Development/Libraries
 Requires: libxslt = %{version}
-Requires: libxml2-devel >= 2.5.4
+Requires: libxml2-devel >= 2.5.5
 
 %description devel
 This C library allows to transform XML files into other XML files
 (or HTML, text, ...) using the standard XSLT stylesheet transformation
@@ -28,11 +28,11 @@
 
 %description devel
 This C library allows to transform XML files into other XML files
 (or HTML, text, ...) using the standard XSLT stylesheet transformation
-mechanism. To use it you need to have a version of libxml2 >= 2.5.4
+mechanism. To use it you need to have a version of libxml2 >= 2.5.5
 installed.
 
 %package python
 Summary: Python bindings for the libxslt library
 Group: Development/Libraries
 Requires: libxslt = %{version}
@@ -33,10 +33,10 @@
 installed.
 
 %package python
 Summary: Python bindings for the libxslt library
 Group: Development/Libraries
 Requires: libxslt = %{version}
-Requires: libxml2 >= 2.5.4
+Requires: libxml2 >= 2.5.5
 Requires: python
 
 %description python
diff --git a/libxslt/pattern.c b/libxslt/pattern.c
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_bGlieHNsdC9wYXR0ZXJuLmM=..70b4379759501bc2c51df2cecfc0a934e9f00935_bGlieHNsdC9wYXR0ZXJuLmM= 100644
--- a/libxslt/pattern.c
+++ b/libxslt/pattern.c
@@ -638,11 +638,10 @@
 			if ((parent == NULL) || (node->doc == NULL))
 			    nocache = 1;
 			else {
-			    while (parent->parent != NULL)
-				parent = parent->parent;
-			    if (((parent->type != XML_DOCUMENT_NODE) &&
-				 (parent->type != XML_HTML_DOCUMENT_NODE)) ||
-				 (parent != (xmlNodePtr) node->doc))
+			    if ((doc->name != NULL) &&
+				(doc->name[0] == ' ') &&
+				(xmlStrEqual(BAD_CAST doc->name, 
+					     BAD_CAST " fake node libxslt")))
 				nocache = 1;
 			}
 			if (nocache == 0) {
diff --git a/libxslt/transform.c b/libxslt/transform.c
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_bGlieHNsdC90cmFuc2Zvcm0uYw==..70b4379759501bc2c51df2cecfc0a934e9f00935_bGlieHNsdC90cmFuc2Zvcm0uYw== 100644
--- a/libxslt/transform.c
+++ b/libxslt/transform.c
@@ -3064,12 +3064,8 @@
 	    (list->nodeTab[i]->doc->doc)!=ctxt->xpathCtxt->doc) {	  
 	    /* The nodeset is from another document, so must change */
 	    ctxt->xpathCtxt->doc=list->nodeTab[i]->doc->doc;
-	    if (list->nodeTab[i]->doc->type != XML_ELEMENT_NODE) {
-		if ((ctxt->document = xsltFindDocument(ctxt,
-				       list->nodeTab[i]->doc->doc))==NULL) { 
-		    xsltTransformError(ctxt, NULL, inst,
-			    "xsl:apply-templates : can't find doc\n");
-		    goto error;
-		}
+	    if (list->nodeTab[i]->doc->name != NULL) {
+		ctxt->document = xsltFindDocument(ctxt,
+			            list->nodeTab[i]->doc->doc);
 		ctxt->xpathCtxt->node = list->nodeTab[i];
 #ifdef WITH_XSLT_DEBUG_PROCESS
@@ -3074,5 +3070,6 @@
 		ctxt->xpathCtxt->node = list->nodeTab[i];
 #ifdef WITH_XSLT_DEBUG_PROCESS
-		xsltGenericDebug(xsltGenericDebugContext,
+		if (ctxt->document != NULL) {
+		    xsltGenericDebug(xsltGenericDebugContext,
 		 "xsltApplyTemplates: Changing document - context doc %s, xpathdoc %s\n",
 		 ctxt->document->doc->URL, ctxt->xpathCtxt->doc->URL);
@@ -3077,9 +3074,5 @@
 		 "xsltApplyTemplates: Changing document - context doc %s, xpathdoc %s\n",
 		 ctxt->document->doc->URL, ctxt->xpathCtxt->doc->URL);
-#endif
-	    } else {
-		ctxt->xpathCtxt->node = list->nodeTab[i];
-		ctxt->document = NULL;
-#ifdef WITH_XSLT_DEBUG_PROCESS
-		xsltGenericDebug(xsltGenericDebugContext,
+		} else {
+		    xsltGenericDebug(xsltGenericDebugContext,
 	     "xsltApplyTemplates: Changing document - Return tree fragment\n");
@@ -3085,4 +3078,5 @@
 	     "xsltApplyTemplates: Changing document - Return tree fragment\n");
+		}
 #endif
 	    }
 	}
diff --git a/libxslt/variables.c b/libxslt/variables.c
index 8b22253038fb41533095fe56ebc55e8b5e4b2517_bGlieHNsdC92YXJpYWJsZXMuYw==..70b4379759501bc2c51df2cecfc0a934e9f00935_bGlieHNsdC92YXJpYWJsZXMuYw== 100644
--- a/libxslt/variables.c
+++ b/libxslt/variables.c
@@ -360,7 +360,7 @@
 	    /*
 	     * This is a result tree fragment.
 	     */
-	    xmlNodePtr container;
+	    xmlDocPtr container;
 	    xmlNodePtr oldInsert;
 	    xmlDocPtr  oldoutput;
 
@@ -364,7 +364,6 @@
 	    xmlNodePtr oldInsert;
 	    xmlDocPtr  oldoutput;
 
-	    container = xmlNewDocNode(NULL, NULL,
-			      (const xmlChar *) " fake node libxslt", NULL);
+	    container = xmlNewDoc(NULL);
 	    if (container == NULL)
 		return(NULL);
@@ -369,6 +368,7 @@
 	    if (container == NULL)
 		return(NULL);
-	    container->doc = (xmlDocPtr) container;
+	    container->name = xmlStrdup(BAD_CAST " fake node libxslt");
+	    container->doc = container;
 	    container->parent = NULL;
 
 	    oldoutput = ctxt->output;
@@ -372,5 +372,5 @@
 	    container->parent = NULL;
 
 	    oldoutput = ctxt->output;
-	    ctxt->output = (xmlDocPtr) container;
+	    ctxt->output = container;
 	    oldInsert = ctxt->insert;
@@ -376,5 +376,5 @@
 	    oldInsert = ctxt->insert;
-	    ctxt->insert = container;
+	    ctxt->insert = (xmlNodePtr) container;
 	    xsltApplyOneTemplate(ctxt, ctxt->node, elem->tree, NULL, NULL);
 	    ctxt->insert = oldInsert;
 	    ctxt->output = oldoutput;
@@ -497,7 +497,7 @@
 	    /*
 	     * This is a result tree fragment.
 	     */
-	    xmlNodePtr container;
+	    xmlDocPtr container;
 	    xmlNodePtr oldInsert;
 	    xmlDocPtr  oldoutput;
 
@@ -501,8 +501,6 @@
 	    xmlNodePtr oldInsert;
 	    xmlDocPtr  oldoutput;
 
-	    container = xmlNewDocNode(NULL , NULL,
-			      (const xmlChar *) " fake node libxslt", NULL);
-	    if (container == NULL) {
-		elem->name = name;
+	    container = xmlNewDoc(NULL);
+	    if (container == NULL)
 		return(NULL);
@@ -508,6 +506,6 @@
 		return(NULL);
-	    }
-	    container->doc = (xmlDocPtr) container;
+	    container->name = xmlStrdup(BAD_CAST " fake node libxslt");
+	    container->doc = container;
 	    container->parent = NULL;
 
 	    oldoutput = ctxt->output;
@@ -511,5 +509,5 @@
 	    container->parent = NULL;
 
 	    oldoutput = ctxt->output;
-	    ctxt->output = (xmlDocPtr) container;
+	    ctxt->output = container;
 	    oldInsert = ctxt->insert;
@@ -515,5 +513,5 @@
 	    oldInsert = ctxt->insert;
-	    ctxt->insert = container;
+	    ctxt->insert = (xmlNodePtr) container;
 	    xsltApplyOneTemplate(ctxt, ctxt->node, elem->tree, NULL, NULL);
 	    ctxt->insert = oldInsert;
 	    ctxt->output = oldoutput;