Zitat von
woody:
jedoch ändert sich die
xml datei öfters und somit verschwindet auch der interne pfad zur xsl-datei.
Wie das? Eigentlich gehört die Angabe des XSL-Stylesheets doch mit zum (ich nenn´s mal so) Header. Und da man doch normalerweise nur den Content ändert, müsste man bei Änderungen der Tags usw. bestenfalls die XSL-Datei anpassen.
Man kann so eine Angabe auch später einfügen, wenn die
XML-Datei bereits fertig ist. Beispiel mit dem MS-
XML-Parser:
Delphi-Quellcode:
// die XML-Datei laden
{ ... }
fFound := false;
nl := xmldoc.Get_childNodes;
for i := 0
to nl.length - 1
do
// es gibt bereits einen Eintrag
if(nl.item[i].Get_nodeType = NODE_PROCESSING_INSTRUCTION)
and
(nl.item[i].Get_nodeName = '
xml-stylesheet')
then
begin
// in dem Fall den Wert ignorieren und stattdessen
// die gewünschte XSL-Datei eintragen
nl.item[i].text := '
href="../../MO.xsl" type="text/xsl"';
fFound := true;
break;
end;
// ansonsten komplett neu erstellen, ...
if(
not fFound)
then begin
node := xmldoc.documentElement;
pi := xmldoc.createProcessingInstruction('
xml-stylesheet',
'
href="../../MO.xsl" type="text/xsl"');
// und VOR dem ersten Knoten einhängen
xmldoc.insertBefore(pi,node);
end;
// XML-Datei speichern, und fertig!
{ ... }
"pi" ist vom Typ "IXMLDOMProcessingInstruction", "node" ist ein "IXMLDOMNode", "fFound" ist eine Bool-Variable.
Zitat:
gibt es noch andere möglichkeiten, ohne das man etwas in die
XML-datei schreiben muß?
Selbst parsen. Dazu bräuchtest du ein Minimal-Programm mit einem TWebBrowser bspw. Dann lädtst du die
XML-Datei und sorgst im Programm dafür, dass die Tags richtig (oder wie gewünscht) dargestellt werden.
Gruß.