AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Stylesheet in XML Datei einfügen
Thema durchsuchen
Ansicht
Themen-Optionen

Stylesheet in XML Datei einfügen

Ein Thema von LordPsychoter · begonnen am 12. Aug 2008 · letzter Beitrag vom 14. Aug 2008
Antwort Antwort
LordPsychoter

Registriert seit: 6. Mai 2008
Ort: 48720
55 Beiträge
 
Delphi 7 Professional
 
#1

Stylesheet in XML Datei einfügen

  Alt 12. Aug 2008, 16:51
Ich arbeite zurzeit an einem Programm mit welchem ich XML Dateien aufrufen und über eine WebBrowser Komponente anschauen kann.
Ich möchte nun eine XSL Datei als StyleSheet verwenden.

Die XML Dateien sind temporär.
Ich möchte also beim öffnen folgende Zeile in die XML Datei eintragen
"<?xml-stylesheet href="Layout.xsl" type="text/xsl"?>".
(und beim schließen wieder löschen.)

Danach lädt der Browser die Datei und ich sollte halt eine schöne Ansicht mit Layout haben.

Nun liegt mein problem darin das er mir die Zeile für den Stylesheet nicht hinzufügt.

Delphi-Quellcode:
procedure TForm1.AddLine;
var Node : IXMLNode;
    Line : String;
begin
  //add XSL Layout
  Line := '?xml-stylesheet href="Layout.xsl" type="text/xsl"?';
  try
    begin
      Node := XML.CreateNode(Line, ntCData);
      XML.ChildNodes.Add(Node);
    end;
  except
    ShowMessage('Datei kann nicht angezeigt werden');
  end;
end;
So in etwa habe ich mir das gedacht.
Ich denke es liegt an dem Attribut ntCData.

Weiß jemand was da genau rein muss?

lg
LordPsychoter

Edit:
Crosspost: http://forum.delphi-treff.de/showthread.php?t=24436
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Stylesheet in XML Datei einfügen

  Alt 12. Aug 2008, 18:25
Tags, die mit <? anfangen sind sogenannte Processing-Instructions.
Bei Benützung von MSXML sähe das so aus:
XML_Doc.appendChild(XML_Doc.createProcessingInstruction('xml-stylesheet', 'href="Layout.xsl" type="text/xsl"?'));
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Stylesheet in XML Datei einfügen

  Alt 12. Aug 2008, 20:05
Hallo,

ich habe den Code von Andreas noch ein wenig verhübscht:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
const
  PI_DATA = 'href="layout.xsl" type="text/xsl"';
  PI_TARGET = 'xml-stylesheet';
begin
  with XMLDocument do
  begin
    XML.Text := '<?xml version="1.0"?><root/>';
    Active := True;
    ChildNodes.Insert(
      ChildNodes.IndexOf(DocumentElement),
      CreateNode(PI_TARGET, ntProcessingInstr, PI_DATA)
    );
    ShowMessage(XML.Text);
    Active := False;
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
LordPsychoter

Registriert seit: 6. Mai 2008
Ort: 48720
55 Beiträge
 
Delphi 7 Professional
 
#4

Re: Stylesheet in XML Datei einfügen

  Alt 12. Aug 2008, 23:09
Danke ich werde es morgen direkt ausprobieren.
Aber.
wtf?

Woher kennst du meinen Namen?

lg
LordPsychoter
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Stylesheet in XML Datei einfügen

  Alt 12. Aug 2008, 23:11
Entweder ist es Zufall oder shmia heißt Andreas und marabu bezog sich auf ihn und nicht auf Dich. Jetzt haste Dich verraten.
  Mit Zitat antworten Zitat
LordPsychoter

Registriert seit: 6. Mai 2008
Ort: 48720
55 Beiträge
 
Delphi 7 Professional
 
#6

Re: Stylesheet in XML Datei einfügen

  Alt 13. Aug 2008, 09:33
Ich bekomme nun beim erstellen des Nodes eine Exception

Node := XML.CreateNode(Line, ntProcessingInstr);

Zitat:
... KLasse EOleExceptio. Meldung "Dieser Name das nicht das Zeichen '' enthalten :
xmlstylesheet--><--href="Layout.xsl"type="text/xsl"...
Hier nochmal die aktuelle procedure.

Delphi-Quellcode:

procedure TForm1.AddLine;
var Node : IXMLNode;
    Line : String;
begin
  //add XSL Layout
  Line := 'xml-stylesheet href="Layout.xsl" type="text/xsl"';
  try
    begin
      Node := XML.CreateNode(Line, ntProcessingInstr);
      XML.ChildNodes.Add(Node);
    end;
  except
    ShowMessage('Datei kann nicht angezeigt werden');
  end;
end;
Nun ist die Frage warum.
Ein bisschen weiter unten erstelle ich genau so einen Kommentar ohne das ich dabei probleme habe.
  Mit Zitat antworten Zitat
LordPsychoter

Registriert seit: 6. Mai 2008
Ort: 48720
55 Beiträge
 
Delphi 7 Professional
 
#7

Re: Stylesheet in XML Datei einfügen

  Alt 13. Aug 2008, 09:37
Okay danke nochmal.

Ich habs

Delphi-Quellcode:

procedure TForm1.AddLine;
var Node : IXMLNode;
    Line : String;
const PI_DATA = 'href="layout.xsl" type="text/xsl"';
      PI_TARGET = 'xml-stylesheet';
begin
  //add XSL Layout
  Line := 'xml-stylesheet href="Layout.xsl" type="text/xsl"';
  try
    begin
      Node := XML.CreateNode(PI_Target, ntProcessingInstr, PI_DATA);
      ShowMessage('fertig');
      XML.ChildNodes.Add(Node);
      XML.SaveToFile(TempPath+Form2.Datei);
      ShowMessage('klappt');
    end;
  except
    ShowMessage('Datei kann nicht angezeigt werden');
  end;
end;
Kann mir auhc jemand erklären warum so?

lg
LordPsychoter
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Stylesheet in XML Datei einfügen

  Alt 14. Aug 2008, 07:19
Moin,

Zitat von LordPsychoter:
... Kann mir auch jemand erklären warum so? ...
Kommentare sind aus der Sicht des DOM gänzlich unstrukturiert. Eine PI hat laut Dokumentation eine Target- und eine Data-Komponente. Nochmal anders musst du vorgehen, wenn du ein Element erzeugen möchtest. Bei einer PI ist die Attribut-Syntax für die Data-Komponente lediglich eine Konvention, bei einem Element werden Attribute gesondert behandelt.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz