diff --git a/mcs/class/System.XML/Mono.Xml.Xsl/XslStylesheet.cs b/mcs/class/System.XML/Mono.Xml.Xsl/XslStylesheet.cs
index 31a488b7b81a9..4950c30aadd24 100644
--- a/mcs/class/System.XML/Mono.Xml.Xsl/XslStylesheet.cs
+++ b/mcs/class/System.XML/Mono.Xml.Xsl/XslStylesheet.cs
@@ -376,6 +376,8 @@ private void HandleInclude (Compiler c)
return; // Already done.
c.PushInputDocument (included);
+ included.MoveToRoot ();
+ included.MoveToFirstChild ();
while (c.Input.NodeType != XPathNodeType.Element)
if (!c.Input.MoveToNext ())
@@ -387,6 +389,7 @@ private void HandleInclude (Compiler c)
templates.Add (new XslTemplate (c));
}
else {
+ c.Input.MoveToFirstChild ();
do {
if (c.Input.NodeType != XPathNodeType.Element)
continue;
diff --git a/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs b/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
index b276342806c17..16573e3beee8c 100644
--- a/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
@@ -2226,7 +2226,6 @@ public void RejectCurrencySymbolAsNumber ()
Assert.IsTrue (sw.ToString ().IndexOf ("NO") > 0);
}
-#if NET_2_0
[Test] // bug #349375
public void PreserveWhitespace ()
{
@@ -2416,6 +2415,36 @@ public void define_text_constant (string name, string value)
}
private bool valueHasBeenSet;
-#endif
+
+ [Test] // bug #4434
+ public void IncludeProcessStylesheet ()
+ {
+ string includedXsl = @"
+
+
+
+
+
+";
+ StreamWriter includedWriter = new StreamWriter ("include.xsl");
+ includedWriter.WriteLine (includedXsl);
+ includedWriter.Close ();
+ XslCompiledTransform transform = new XslCompiledTransform ();
+ string xsl = @"
+
+
+
+
+
+";
+ XmlReader xslReader = XmlReader.Create (new StringReader (xsl));
+ transform.Load (xslReader);
+ XmlReader inputReader = XmlReader.Create (new StringReader (""));
+ var sw = new StringWriter ();
+ XmlWriter outputWriter = XmlWriter.Create (sw);
+ transform.Transform (inputReader, outputWriter);
+ outputWriter.Close ();
+ Assert.AreEqual ("", sw.ToString (), "#1");
+ }
}
}