stewe
asked on
ASP - XML,XSL
Hi !
I need an exact way how to generate dinamically XML,XSL from ASP.
Prob:
When I use native .xml and .xsl and view it in a browser, it works correctly.
When one of them (or both) comes from ASP, *sometimes* generates an error.
F.e. xsl-asp:
<%@language="JScript"%>
<%
Response.Buffer= true;
Response.ContentType = "text/xml";
%><?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
hello
</xsl:template>
</xsl:stylesheet>
F.e. xml-asp:
<%@language="JScript"%>
<%
Response.Buffer= true;
Response.ContentType="text
%>
<?xml version="1.0" encoding="windows-1252"?>
<data>
<User Active="1" UserName="Stewe"/>
</data>
It's not a real dinamic xsl, xml, but just for an example. Sometimes it doesn't work. Error f.e.: Xml document must have a top - level element.
I've tried it with script transform, but the same occurs.
When I load first the ASP-XML part, then the native XSL part, so then sometimes ASP-XML generates an error.
When I use both of them as ASP, then sometimes the first, sometime the last generates the error. SOMETIMES.
script transform:
var oXML = new ActiveXObject("Msxml2.DOMD
var oXSLT = new ActiveXObject("Msxml2.DOMD
oXML.async = false;
oXSLT.async = false;
oXSLT.load("userxsl.asp");
oXML.load("user.asp"); // or user.xml
I cannot found a stabile way.
When both of them are native, then everything is stabile and working correctly.
There're differences in ASP-XSL and native XSL header.
Only in native XSL header (f.e. GET localhost/userxsl.xsl)
ETag: "a07b9245fe11c21:bc7"
Accept-Ranges: bytes
Last-Modified: Wed, 12 Jun 2002 10:45:30 GMT
Only in ASP-XSL header:
Connection: keep-alive
Connection: Keep-Alive (native XSL has only the first one)
Cache-control: private
Expires: Wed, 12 Jun 2002 10:44:43 GMT
Both content type is text/xml of course.
What can be the problem.
I've just updated everything using windows update. Everything.
Stewe
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
You're ok. It works now.
There're 2 important things:
- these new lines
- and in IIS, the 'ASP file caching' MUST BE CHECKED. MUST BE.
Stewe
ASKER
Thx
Stewe
Stewe
consider this
=============
XSLT Document
==============
<%@language="JScript"%>
<%
Response.Buffer= true;
Response.ContentType = "text/xml";
%>
<?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
hello
</xsl:template>
</xsl:stylesheet>
There will be an error generated by the XSLT Engine indicating that the stylesheet is not well-formed. Viewing it directly will pose no problem. This is a legacy of MSXML 2 where if there is an empty line at the top of the document, it wont load for any XML document. So, view the xsl.asp source and see if there is an extra line at the top.
If the asp is changed to
<%@language="JScript"%>
<%
Response.Buffer= true;
Response.ContentType = "text/xml";
%><?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
hello
</xsl:template>
</xsl:stylesheet>
There will be no problem.
Make sure you clear your cache before you do anything with your browser.