Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   XML-Liste nach Attribut via XSL sortieren (https://www.delphipraxis.net/205146-xml-liste-nach-attribut-via-xsl-sortieren.html)

creehawk 5. Aug 2020 10:53

XML-Liste nach Attribut via XSL sortieren
 
Moin Moin.

Die letzte XML Arbeit meinerseits fand kurz nach dem 30-jährigen Krieg statt. Ich habe fast alles vergessen. Also

Meine XML (Auszug)
Code:
<?xml version="1.0" encoding="utf-8"?>
<Items>
  <Element Master="190167" Item="190711" Name="Ar56" />
  <Element Master="190167" Item="191718" Name="Aa23" />
  <Element Master="190167" Item="190687" Name="Ac93" />
  <Element Master="190167" Item="190744" Name="Aa96" />
  <Element Master="190167" Item="191610" Name="Ad23" />
  <Element Master="190167" Item="193187" Name="Af32" />
  <Element Master="190167" Item="190619" Name="Aa23" />
  <Element Master="190167" Item="190745" Name="An32" />
</Items>
Ich möchte diese Liste nach dem Attribut 'Name' via XSL sortieren. Meine XSL (und da fehlt's jetzt) :

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <Items>
    <xsl:for-each select="Items/Element">
      <xsl:sort select="Name"/>
      <xsl:value-of select=" ?????????????????????????????????
    </xsl:for-each>
  </Items>
</xsl:template>
</xsl:stylesheet>
Was zum Henker muss für die Fragezeichen gesetzt werden? Oder alles ganz anders? Ich weiß es um's verecken nicht mehr.

creehawk

P.S. Das geht dann durch den MSXML Processor.

KodeZwerg 5. Aug 2020 10:57

AW: Das wird jetzt peinlich.....
 
W3Schools hilft mir bei solchen Dingen oftmals gut weiter. Dir vielleicht auch?

creehawk 5. Aug 2020 13:10

AW: Das wird jetzt peinlich.....
 
Nee, eben nicht. Ich habe schon dort nachgesehen und auch an anderen Stellen. Eigentlich hätte ich etwas in dieser Art geschrieben:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <Items>
    <xsl:for-each select="Items/Element">
      <xsl:sort select="Name"/>
      <xsl:value-of select="Element"/>
    </xsl:for-each>
  </Items>
</xsl:template>
</xsl:stylesheet>
Bringt nix. Wobei Items/Element oder / oder * oder // auch zu nicht führen. Folgender Processor Aufruf:

Code:
    Result:=True;
    XMLResult := CoDOMDocument.Create;
    XSLTStyleSheet := CoFreeThreadedDOMDocument.Create;
    XSLTStyleSheet.async := False;
    XSLTStyleSheet.load(XSLPath + 'alpha.xsl');
    XSLTTemplate := CoXSLTemplate.Create;
    XSLTTemplate.stylesheet := XSLTStyleSheet;
    XSLProcessor := XSLTTemplate.createProcessor;
    XSLProcessor.input := XSLPath + 'Items.xml';
    XSLProcessor.transform;
    XMLResult.loadXML(XSLProcessor.output);
    XMLResult.save(XSLPath + 'Result.xml');
Das habe ich übrigens aus meinem eigenen Fundus. Was ich bisher eben nicht hatte war die Sache mit Attributen OHNE das der Knoten selbst Text hat.

Irgendwas haut nicht hin.

creehawk

Daniel 5. Aug 2020 14:07

AW: XML-Liste nach Attribut via XSL sortieren
 
Eine klar gestellte Frage ist nie peinlich - dafür ist das Forum da.
Ich habe mir lediglich erlaubt, dem Thema einen passenderen Titel zu verpassen.

creehawk 5. Aug 2020 14:12

AW: XML-Liste nach Attribut via XSL sortieren
 
Okay, alles klar.

Grüße aus Ahrensburg.

creehawk

creehawk 5. Aug 2020 21:09

AW: XML-Liste nach Attribut via XSL sortieren
 
Tja, ich komme nicht weiter.

Wirklich niemand eine Idee?

Oder übersehe ich einen blöden Fehler?

creehawk

creehawk 6. Aug 2020 05:38

AW: XML-Liste nach Attribut via XSL sortieren
 
Moin Moin.

@Codezwerg
Ist ja wohl doch nicht so einfach.

Keine Lösung gefunden.

creehawk


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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