![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - RE: msxml3.dll (0x8007000E) >Thread Next - RE: msxml3.dll (0x8007000E) RE: msxml3.dll (0x8007000E)To: NULL Date: 1/3/2005 8:25:00 AM We create object using following:
objXMLDom = CreateObject(Microsoft.XMLDOM)
Set cmd = Server.CreateObject("ADODB.Command")
Set prm = Server.CreateObject("ADODB.Parameter")
cmd.Properties("Output Stream") = objXMLDom
styleFile = temp.xsl
set source = CreateObject("Microsoft.XMLDOM")
source.load(objXMLDom)
set style = CreateObject("Microsoft.XMLDOM")
style.load(styleFile)
Response.Write (source.transformNode(style))
"rdcpro" wrote:
> You can do that by setting the progID to MSXML 4 in your code. For example:
>
> var xmlDoc = new ActiveXObject("Msxml2.DomDocument.4.0");
> xmlDoc.load("foo.xml")
>
> I've used client-side processing to handle some fairly large datasets, but
> it works best if you can "chunk" the data. It sounds to me like this isn't
> feasible in your case, but it's worth thinking about.
>
> Regards,
> Mike Sharp
>
> "JZYCN2" wrote:
>
> > How can you setup msxml4 just to test on IE and try it out? Please let me
> > know.
> >
> > Thanks a lot.
> >
> > "rdcpro" wrote:
> >
> > > It's incorrect because you don't have a template that matches Billing_date.
> > > The apply-templates looks like:
> > >
> > > <xsl:apply-templates select="Billing_date" />
> > >
> > > But the template you have looks like:
> > >
> > > <xsl:template match="Billing_end_date">
> > > <td class="standardText">
> > > <xsl:value-of select="myprefix:formatDate(string(.))" />
> > > </td>
> > > </xsl:template>
> > >
> > > It's hard to tell what your XML looks like, but I would think there's a more
> > > efficient method of processing in the XSLT. If MSXML can parse the XML, and
> > > the out of memory error is occurring during the transformation, you might
> > > pick up a bit here.
> > >
> > > But unless your IE client machines are pretty robust, I suspect you're not
> > > going to be able to do this client-side. I believe your XML document is way
> > > too big. My main dev machine could probably handle an XML document that big,
> > > but it has 2 GB of memory, but most clients aren't going to have anywhere
> > > near that much RAM. Even if it did handle a document that size in DOM, it's
> > > going to take a long time to process.
> > >
> > > I would seriously consider a solution that involves paging of the data from
> > > the query, if it can meet your requirements for the data.
> > >
> > > If that won't work, you'll have to use the SAX API of MSXML 3, and do the
> > > processing that way.
> > >
> > > http://msdn.microsoft.com/msdnmag/issues/1100/xml/
> > >
> > > I've never tried this on the client, though. You may still run into
> > > troubles with extremely large documents.
> > >
> > > Regards,
> > > Mike Sharp
> > >
> > > "JZYCN2" wrote:
> > >
> > > > Why do you think the following is incorrect?
> > > >
> > > > <xsl:when test="node()='Billing_end_date'">
> > > > <xsl:apply-templates select="Billing_date"/>
> > > > </xsl:when>
> > > >
> > > > Because whenever it hits the billing_end_date node, then it should apply the
> > > > biling_date template. Then please advise the right way of doing this. The
> > > > XML is created from database through query and I don't know how big it is and
> > > > also it is at the client side IE. If anyone can help can be greatly
> > > > appreciated. Thanks in advance.
> > > >
> > > > "rdcpro" wrote:
> > > >
> > > > > Well, I don't seen anything too weird in the XSLT, though I don't really see
> > > > > the reason for that large xsl:choose structure, and there's probably a much
> > > > > more efficient way of doing it. Also, this appears to be incorrect:
> > > > >
> > > > > <xsl:when test="node()='Billing_end_date'">
> > > > > <xsl:apply-templates select="Billing_date"/>
> > > > > </xsl:when>
> > > > >
> > > > >
> > > > > How big, in megabytes, is that XML? It's entirely possible that MSXML 4
> > > > > will handle this better. If it doesn't, you'll probably have to use the SAX
> > > > > API to process this, or else you'll have to break up the XML into chunks that
> > > > > are easier to manage.
> > > > >
> > > > > Are you by any chance doing this client-side in IE? If so, then your memory
> > > > > constrains are probably even tighter, because IE has to render that huge
> > > > > thing as well. Sounds like a job for a paging interface.
> > > > >
> > > > > I think, but can't really say for sure, that you can handle much larger XML
> > > > > documents in .NET than you can with MSXML, because you can use a stream based
> > > > > parser to read the XML. It still generates an in-memory representation of
> > > > > the data, but I believe the memory footprint is lower. Anyone else out there
> > > > > know for sure?
> > > > >
> > > > >
> > > > > Regards,
> > > > > Mike Sharp
> > > > >
> > > > > "JZYCN2" wrote:
> > > > >
> > > > > > My xslt file is not big and I can attach that. However, XML file might be
> > > > > > extremely big 86k rows of data has lots of fields. So by using different
> > > > > > version of msxml may help to resolve this problem?
> > > > > >
> > > > > > My xslt file:
> > > > > >
> > > > > > - <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > > > > > xmlns:msxsl="urn:schemas-microsoft-com:xslt"
> > > > > > xmlns:myprefix="http://www.captionkit.com/namespaces" version="1.0">
> > > > > > <xsl:output method="html" />
> > > > > > - <xsl:template match="/">
> > > > > > - <xsl:if test="count(root/gmol) > 65530">
> > > > > > <H5>Warning: First 65,530 records were imported into Excel.</H5>
> > > > > > </xsl:if>
> > > > > > - <table border="1" width="100%">
> > > > > > - <xsl:for-each select="/root/gmol">
> > > > > > - <tr>
> > > > > > - <xsl:choose>
> > > > > > - <xsl:when test="node()='Billing_end_date'">
> > > > > > <xsl:apply-templates select="Billing_date" />
> > > > > > </xsl:when>
> > > > > > - <xsl:when test="node()='Notification_Date'">
> > > > > > <xsl:apply-templates select="Notification_Date" />
> > > > > > </xsl:when>
> > > > > > - <xsl:when test="node()='Comment_Date'">
> > > > > > <xsl:apply-templates select="Comment_Date" />
> > > > > > </xsl:when>
> > > > > > - <xsl:when test="node()='GRS_Date'">
> > > > > > <xsl:apply-templates select="GRS_Date" />
> > > > > > </xsl:when>
> > > > > > - <xsl:when test="node()='last_scan_date'">
> > > > > > <xsl:apply-templates select="last_scan_date" />
> > > > > > </xsl:when>
> > > > > > - <xsl:otherwise>
> > > > > > <xsl:apply-templates select="*" />
> > > > > > </xsl:otherwise>
> > > > > > </xsl:choose>
> > > > > > </tr>
> > > > > > </xsl:for-each>
> > > > > > </table>
> > > > > > </xsl:template>
> > > > > > - <xsl:template match="*">
> > > > > > - <td class="standardText">
> > > > > > - <xsl:choose>
> > > > > > <xsl:when test=". = ' ' or . = ''"> </xsl:when>
> > > > > > - <xsl:otherwise>
> > > > > > <xsl:value-of select="." />
> > > > > > </xsl:otherwise>
> > > > > > </xsl:choose>
> > > > > > </td>
> > > > > > </xsl:template>
> > > > > > - <xsl:template match="Billing_end_date">
> > > > > > - <td class="standardText">
> > > > > > <xsl:value-of select="myprefix:formatDate(string(.))" />
> > > > > > </td>
> > > > > > </xsl:template>
> > > > > > - <xsl:template match="Notification_Date">
> > > > > > - <td class="standardText">
> > > > > > <xsl:value-of select="myprefix:formatDate(string(.))" />
> > > > > > </td>
> > > > > > </xsl:template>
> > > > > > - <xsl:template match="Comment_Date">
> > > > > > - <td class="standardText">
> > > > > > <xsl:value-of select="myprefix:formatDate(string(.))" />
> > > > > > </td>
> > > > > > </xsl:template>
> > > > > > - <xsl:template match="GRS_Date">
> > > > > > - <td class="standardText">
> > > > > > <xsl:value-of select="myprefix:formatDate(string(.))" />
> > > > > > </td>
> > > > > > </xsl:template>
> > > > > > - <xsl:template match="last_scan_date">
> > > > > > - <td class="standardText">
> > > > > > <xsl:value-of select="myprefix:formatDate(string(.))" />
> > > > > > </td>
> > > > > > </xsl:template>
> > > > > > - <msxsl:script language="javascript" implements-prefix="myprefix">
> > > > > > - <![CDATA[
> > > > > > function formatDate(myDate)
> > > > > > {
> > > > > > var finalDate= "";
> > > > > > var dateStr = new Date(myDate); //.item(0).text;
> > > > > >
> > > > > > if(isNaN(myDate))
> > > > > > {
> > > > > >
> > > > > > finalDate = ((dateStr.getMonth()+1) + "/" + dateStr.getDate() + "/" +
> > > > > > dateStr.getFullYear())
> > > > > > return (finalDate)
> > > > > > }
> > > > > > else
> > > > > > {
> > > > > > return (" ")
> > > > > > }
> > > > > > }
> > > > > >
> > > > > >
> > > > > > ]]>
> > > > > > </msxsl:script>
> > > > > > </xsl:stylesheet>
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > "rdcpro" wrote:
> > > > > >
> > > > > > > How big is the XML in KB? What's the biggest it could reasonably be? 86k
> > > > > > > rows means this is probably a pretty big file, and it's possible you're
> > > > > > > simply out of memory. If the XML isn't simply too big, there are a number of
> > > > > > > techniques you can use in the XSLT to reduce the working set. You may have
> > > > > > > to post some or all of your XSLT.
> > > > > > >
> > > > > > > Regards,
> > > > > > > Mike Sharp
> > > > > > >
> > > > > > > "JZYCN2" wrote:
> > > > > > >
> > > > > > > > We have the following probblem:
> > > > > > > > When we return about 86K rows of data using xml and xslt, it gives us the
> > > > > > > > following message:
> > > > > > > > Error Type:
> > > > > > > > msxml3.dll (0x8007000E)
> > > > > > > > Not enough storage is available to complete this operation.
> > > > > > > >
> > > > > > > > Can any one help? Thanks a milllion in advance.
| ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||||
|
