Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problems with XSLT processing of XML

3 views
Skip to first unread message

Hans P. Dramstad

unread,
Oct 6, 2002, 7:58:08 PM10/6/02
to
I end up with the following error trying to run my Delphi (D7 Developer with
MSXML4.0) program: "The style sheet does not contain a document element. The
style sheet may be empty, or may not be well formed".

The XML (same XML and XSLT file) processing works fine in XMLSpy.

Any help here will be greatly appreciated - Thanks.

DELPHI CODE,
----------------
function DoTransform(const xml, xsl : string ): string;
var
XMLDoc : IXMLDOMDocument;
XSLDoc : IXMLDOMDocument;
Template : IXSLTemplate;
Processor : IXSLProcessor;
begin
Result := '';
try
XMLDoc := CoFreeThreadedDOMDocument40.Create;
XSLDoc := CoFreeThreadedDOMDocument40.Create;
XMLDoc.load(xml); // I have checked that xml contains what is expected
(OK)
XSLDoc.load(xsl); // I have checked that xslcontains what is expected
(OK)
Template := CoXSLTemplate40.Create;
Template.stylesheet := XSLDoc; // THIS LINE FAILS ALL THE TIME (Error
message given above)?????
Processor := Template.createProcessor;
Processor.input := XMLDoc;
Processor.transform;
result := Processor.output;
finally
XMLDoc := nil;
XSLDoc := nil;
end;
end;

XSLT file,
----------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<HTML>
<BODY>
<xsl:for-each select="vehicles/car">
<xsl:value-of select="name"/>, <xsl:value-of select="manufacturer"/>,
<xsl:value-of select="price"/><br>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

XML file,
---------
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="F:\Delphi\Sample\vehicles.xsl"?>
<vehicles>
<type>Cars</type>
<car><name>Commodore</name><manufacturer>Holden</manufacturer><price>38,000<
/price>
</car>
<car><name>Falcon</name><manufacturer>Ford</manufacturer><price>36,000</pric
e>
</car>
<car><name>Verada</name><manufacturer>Mitsubishi</manufacturer><price>36,500
</price>
</car>
</vehicles>

Kind Regards Hans P. Dramstad


Stig Johansen

unread,
Oct 6, 2002, 10:56:11 PM10/6/02
to
Hi.

"Hans P. Dramstad" <h...@mind2map.com> wrote in message
news:3da0cd41$1...@newsgroups.borland.com...


> I end up with the following error trying to run my Delphi (D7 Developer
with
> MSXML4.0) program: "The style sheet does not contain a document element.
The
> style sheet may be empty, or may not be well formed".
>
> The XML (same XML and XSLT file) processing works fine in XMLSpy.
>
> Any help here will be greatly appreciated - Thanks.
>
> DELPHI CODE,
> ----------------
> function DoTransform(const xml, xsl : string ): string;
> var
> XMLDoc : IXMLDOMDocument;
> XSLDoc : IXMLDOMDocument;

Try:
XMLDoc : IXMLDocument ;
XSLDoc : IXMLDocument ;

> begin
> Result := '';
> try
> XMLDoc := CoFreeThreadedDOMDocument40.Create;
> XSLDoc := CoFreeThreadedDOMDocument40.Create;

Try:
XMLDoc := NewXMLDocument ;
XSLDoc := NewXMLDocument ;

> XMLDoc.load(xml); // I have checked that xml contains what is expected
> (OK)
> XSLDoc.load(xsl); // I have checked that xslcontains what is expected
> (OK)

try:
XMLDoc.XML.Text := xml;
XSLDoc.XML.Text := xsl;

> result := Processor.output;
try:
XMLDoc.DocumentElement.TransformNode(XSLDoc.DocumentElement,result);

> finally
> XMLDoc := nil;
> XSLDoc := nil;
> end;
> end;

--

Med venlig hilsen/Best regards
Stig Johansen
Stig.J...@udvikling.it.dk
(remove dot dk)

0 new messages