Einzelnen Beitrag anzeigen

MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

XML-Header/XSL-Referenz mittels MSXML erzeugen

  Alt 17. Mär 2008, 13:08
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?
  Mit Zitat antworten Zitat