Einzelnen Beitrag anzeigen

toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#21

Re: Wie in XML-Datei sortieren?

  Alt 2. Jun 2005, 18:01
Hallo,

eine kliztekleine Frage habe ich noch zur Sortierung. Ich wiederhole noch mal kurz, ob ich euch auch Verstanden habe:
Der Format-String(also diese
XML-Code:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  <xsl:template match="/ | @* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()">
        <xsl:sort select="[color=#ff001f]%s[/color]"/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
XSL-Daten), der dem resourcenstring "fmtXSLdata" zugewiesen und der Formatierungsroutine "Format" übergeben werden soll, soll den Formatbezeichner "%s" enthalten (also so wie oben). Für s soll nun das Knotenattribut @id, @titel, @interpret, oder @genre gesetzt werden (unten ist in diesem Fall @titel eingetragen). Mit
Code:
  xmlDoc.loadXML(xmlDoc.transformNode(xmlStyle));
arbeite ich auf dem DomObjekt (die XSL-Daten mit dem übergebenen Knotenattribut). Im Ganzen dann
Delphi-Quellcode:
procedure TfrmMain.sortXMLFile;
var
  xmlStyle: IXMLDOMDocument;
  i : integer;
begin
  xmlStyle := CoDomDocument.Create;
  xmlStyle.async := false;
  {nächste Zeile entfällt da der resourcenstring die XSL-Daten enthalten soll.}
  //xmlStyle.load(FAppPath + 'dataSort.xsl');
  xmlStyle.loadXML(Format(fmtXSLdata, ['@titel']));
  xmlDoc.loadXML(xmlDoc.transformNode(xmlStyle));
  cds := XMLDoc.documentElement.selectNodes('cd');
  ...
end;
Wenn das soweit richtig ist, dann sieht das so
Delphi-Quellcode:
resourcestring
  fmtXSLdata = '<?xml version="1.0"?>' +
               '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >' +
                 '<xsl:template match="/ | @* | node()">' +
                   '<xsl:copy>' +
                     '<xsl:apply-templates select="@* | node()">' +
                       '<xsl:sort select="%s"/>' +
                     '</xsl:apply-templates>' +
                   '</xsl:copy>'+
                 '</xsl:template>'+
               '</xsl:stylesheet>';
aus. Muss ja, meine Daten werden auf jedenfall sortiert. Ohne jetzt undankbar zu wirken, kann man das im Code verschönern?

Grüße
  Mit Zitat antworten Zitat