next
Subject: Output the XslCompiledTransform Author: mahesh deshmukh Date: 25 Oct 2006 12:01 PM
Question:- How do I get the results of the XSLCompiledTransform.Transform method into an XML.XMLreader object?
Hi,
I ran into following situation when migrating my framework 1.1 codes to 2.0:
Old situation (.net v1.1):
==========xslt file=============
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xslt.html#strip">
<xsl:output method="text" version="1.0"
encoding="UTF-8" indent="no"/>
<xsl:variable name="SelectedStateId" />
<xsl:template match="Jurisdictions">
<xsl:param name="iSelectedStateId" select="$SelectedStateId" />
<script type="text/java-script">
//Array for List items
//Xsl-Param:SelectedStateId: <xsl:value-of select="$iSelectedStateId" />
var tmpCityArr = new Array(3);
tmpCityArr[0] =
<xsl:for-each select="Country[JurisId=50001]">
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />'<xsl:for-each select="State">,
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />'<xsl:if test="JurisId = $SelectedStateId"><xsl:for-each select="City">,
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />')<!-- SELECTED -->
</xsl:for-each></xsl:if>)</xsl:for-each></xsl:for-each>
);
tmpCityArr[1] =
<xsl:for-each select="Country[JurisId=50002]">
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />'<xsl:for-each select="State">,
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />'<xsl:if test="JurisId = $SelectedStateId"><xsl:for-each select="City">,
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />')<!-- SELECTED -->
</xsl:for-each></xsl:if>)</xsl:for-each></xsl:for-each>
);
tmpCityArr[2] =
new Array('International|' <xsl:for-each select="Country[JurisId != 50001 and JurisId != 50002]">,
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />'<xsl:if test="JurisId = $SelectedStateId"><xsl:for-each select="State">,
new Array('<xsl:value-of select="JurisName" />|<xsl:value-of select="JurisId" />')
</xsl:for-each></xsl:if>)</xsl:for-each>
);
</script>
</xsl:template>
</xsl:stylesheet>
===================================
==============aspx page codebehind========
private XmlReader __prepareXmlData(IXPathNavigable inputXml, string xslTransform, object[] xslParams )
{
//get transform
XslTransform xt = new XslTransform();
xt.Load(Server.MapPath(xslTransform));
XsltArgumentList xslArgs = new XsltArgumentList();
if (null != xslParams)
{
for (int i = 0; i < xslParams.Length; i++)
xslArgs.AddParam((string)xslParams[i], tring.Empty, xslParams[++i]);
}
//transform string
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
XmlReader xr = xt.Transform(inputXml, xslArgs, resolver);
Retrurn(xr);
}
=============================
Facts in the ASP 2.0 world are:
1 Now, new and shiny XslCompiledTransform class doesn't support this feature anymore, transformation output is now only Stream, TextWriter or XmlWriter
2) XslTransform objects (class) is obsolete as well.
Note: for the above method we are Storing the Xslt file in resources is fine. When you need the file the easiest solution is to write the resource to file and use the XslCompiledTransform.Load (String) where String is path of file.
All above code is working fine in .net 1.1 but it’s not working in .net 2.0.
Hope you can help?
Thanks.
best regards
Mahesh
Powered by ,
the world's leading for
,
,
,
,
,
,
,
,
,
and !