Просмотр исходного кода

[System.XML] Add unit test for XSL value-of bug (#18113)

Damien Daspit 12 лет назад
Родитель
Сommit
bc802fe9ff

+ 31 - 0
mcs/class/System.XML/Test/System.Xml.Xsl/XslCompiledTransformTests.cs

@@ -77,5 +77,36 @@ xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl='urn:schemas-micros
 			// should transform without an exception
 			t.Transform (new XPathDocument (new XmlTextReader (new StringReader ("<root><foo attr='A'/><foo attr='B'/><foo attr='C'/></root>"))), null, sw);
 		}
+
+		[Test]
+		public void ValueOfElementWithInsignificantWhitespace ()
+		{
+			string xsl = @"<?xml version='1.0' encoding='utf-8'?>
+<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
+<xsl:template match='/'>
+	<root>
+		<bar>
+			<xsl:if test='root/@attr'>
+				<xsl:value-of select='root/@attr'>
+				</xsl:value-of>
+			</xsl:if>
+		</bar>
+		<baz>
+			<xsl:for-each select='root/foo'>
+				<xsl:if test='position() != 1'>
+					<xsl:text>,</xsl:text>
+				</xsl:if>
+				<xsl:value-of select='name(.)' />: <xsl:value-of select='@attr' />
+			</xsl:for-each>
+		</baz>
+	</root>
+</xsl:template>
+</xsl:stylesheet>";
+			StringWriter sw = new StringWriter ();
+			XslCompiledTransform t = new XslCompiledTransform ();
+			t.Load (new XmlTextReader(new StringReader(xsl)));
+			t.Transform (new XPathDocument (new XmlTextReader (new StringReader ("<root attr='D'><foo attr='A'/><foo attr='B'/><foo attr='C'/></root>"))), null, sw);
+			Assert.AreEqual ("<?xml version=\"1.0\" encoding=\"utf-16\"?><root><bar>D</bar><baz>foo: A,foo: B,foo: C</baz></root>", sw.ToString ());
+		}
 	}
 }