Ich arbeite mit
MSXML und erzeuge mit dessen Funktionalität meine eigenen
XML-Dokumente. Das klappt auch schön und gut, was ich bisher aber noch nicht hinbekommen habe, ist
1. einen gültigen
XML-Header samt
xml-Version und encoding-Attribut zu erzeugen und
2. darauffolgend eine XSL-Stylesheet-Referenz einzufügen.
Mein Codebeispiel:
Delphi-Quellcode:
procedure CreateXMLFile(FileName: string);
var
i: Integer;
XMLDoc: IXMLDOMDocument2;
aLine: IXMLDOMElement;
aElement: IXMLDOMElement;
begin
XMLDoc := CoDOMDocument40.Create;
try
XMLDoc.setProperty('NewParser', True);
XMLDoc.setProperty('SelectionLanguage', 'XPath');
XMLDoc.validateOnParse := False;
// Wurzelknoten erzeugen
XMLDoc.appendChild(XMLDoc.createElement('tabelle'));
for i := 1 to (Grid.RowCount - 1) do
begin
aLine := XMLDoc.createElement('line');
XMLDoc.documentElement.appendChild(aLine);
// Spalte 1
aElement := XMLDoc.createElement('spalte1');
aLine.appendChild(aElement);
aElement.text := Grid.Cells[1, i];
// Spalte 2
aElement := XMLDoc.createElement('spalte2');
aLine.appendChild(aElement);
aElement.text := Grid.Cells[2, i];
// Spalte 3
aElement := XMLDoc.createElement('spalte3');
aLine.appendChild(aElement);
aElement.text := Grid.Cells[3, i];
end;
XMLDoc.save(FileName);
finally
XMLDoc := nil;
end;
end;
erzeugt folgendes
XML-Dokument:
Delphi-Quellcode:
<tabelle>
<line>
<spalte1>1</spalte1>
<spalte2>2</spalte2>
<spalte3>3</spalte3>
</line>
<line>
<spalte1>1</spalte1>
<spalte2>2</spalte2>
<spalte3>3</spalte3>
</line>
<line>
<spalte1>1</spalte1>
<spalte2>2</spalte2>
<spalte3>3</spalte3>
</line>
</tabelle>
Es soll aber so aussehen:
Delphi-Quellcode:
<?
xml version="1.0" encoding="UTF-8"?>
<?
xml-stylesheet type="text/xsl" href="Stylesheet.xsl">
<tabelle>
<line>
<spalte1>1</spalte1>
<spalte2>2</spalte2>
<spalte3>3</spalte3>
</line>
<line>
<spalte1>1</spalte1>
<spalte2>2</spalte2>
<spalte3>3</spalte3>
</line>
<line>
<spalte1>1</spalte1>
<spalte2>2</spalte2>
<spalte3>3</spalte3>
</line>
</tabelle>
Wie kriege ich das mit
MSXML-Bordmitteln hin?