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