public void ShouldCloseFullElement()
        {
            string xslt = @"
<xslt:stylesheet version=""1.0"" xmlns:xslt=""http://www.w3.org/1999/XSL/Transform"">
  <xslt:output indent=""yes""/>
  <xslt:variable name=""g_jsserver"">http://clariusconsulting.net/</xslt:variable>
  <xslt:template match=""/"">
	<page>
		<xslt:call-template name=""WriteScriptTag"">
		  <xslt:with-param name=""js_url"">foo.js</xslt:with-param>
		</xslt:call-template>
	</page>
  </xslt:template>
  <xslt:template name=""WriteScriptTag"">
    <xslt:param name=""js_url"" />
    <xslt:param name=""js_base"" select=""$g_jsserver"" />
    <xslt:if test=""$js_url!=''"">
      <script type=""text/javascript"">
        <xslt:attribute name=""src"">
          <xslt:choose>
            <xslt:when test=""substring($js_url,1,5) = 'http:'"">
              <xslt:value-of select=""$js_url"" />
            </xslt:when>
            <xslt:when test=""substring($js_url,1,6) = 'https:'"">
              <xslt:value-of select=""$js_url"" />
            </xslt:when>
            <xslt:otherwise>
              <xslt:value-of select=""$js_base"" />
              <xslt:value-of select=""$js_url"" />
            </xslt:otherwise>
          </xslt:choose>
        </xslt:attribute>
		<xslt:text> </xslt:text>
      </script>
    </xslt:if>
  </xslt:template>
</xslt:stylesheet>";

            string input = "<root />";

            StringWriter      sw = new StringWriter();
            ScriptCloseWriter xw = new ScriptCloseWriter(XmlWriter.Create(sw));

            //Old v.1.x transform would also work fine.
            //XslTransform tx = new XslTransform();
            XslCompiledTransform tx = new XslCompiledTransform();

            tx.Load(XmlReader.Create(new StringReader(xslt)));

            tx.Transform(XmlReader.Create(new StringReader(input)), xw);

            xw.Close();

            Console.WriteLine(sw.ToString());
        }
Esempio n. 2
0
		public void ShouldCloseFullElement()
		{
			string xslt = @"
<xslt:stylesheet version=""1.0"" xmlns:xslt=""http://www.w3.org/1999/XSL/Transform"">
  <xslt:output indent=""yes""/>
  <xslt:variable name=""g_jsserver"">http://clariusconsulting.net/</xslt:variable>
  <xslt:template match=""/"">
	<page>
		<xslt:call-template name=""WriteScriptTag"">
		  <xslt:with-param name=""js_url"">foo.js</xslt:with-param>
		</xslt:call-template>
	</page>
  </xslt:template>
  <xslt:template name=""WriteScriptTag"">
    <xslt:param name=""js_url"" />
    <xslt:param name=""js_base"" select=""$g_jsserver"" />
    <xslt:if test=""$js_url!=''"">
      <script type=""text/javascript"">
        <xslt:attribute name=""src"">
          <xslt:choose>
            <xslt:when test=""substring($js_url,1,5) = 'http:'"">
              <xslt:value-of select=""$js_url"" />
            </xslt:when>
            <xslt:when test=""substring($js_url,1,6) = 'https:'"">
              <xslt:value-of select=""$js_url"" />
            </xslt:when>
            <xslt:otherwise>
              <xslt:value-of select=""$js_base"" />
              <xslt:value-of select=""$js_url"" />
            </xslt:otherwise>
          </xslt:choose>
        </xslt:attribute>
		<xslt:text> </xslt:text>
      </script>
    </xslt:if>
  </xslt:template>
</xslt:stylesheet>";

			string input = "<root />";

			StringWriter sw = new StringWriter();
			ScriptCloseWriter xw = new ScriptCloseWriter(XmlWriter.Create(sw));

			//Old v.1.x transform would also work fine.
			//XslTransform tx = new XslTransform();
			XslCompiledTransform tx = new XslCompiledTransform();
			tx.Load(XmlReader.Create(new StringReader(xslt)));

			tx.Transform(XmlReader.Create(new StringReader(input)), xw);

			xw.Close();

			Console.WriteLine(sw.ToString());
		}