xsl gruppierung entscheidung
Cup^Cino
- xsl
Hallo
ich habe eine xml datei mit eim attribut eines nodes, welches a oder b sein kann. nun möchte ich alle nodes ausgeben aber nach:
alle A's: node1, node3, node4, node6
alle B's: node0, node2, node5, node7
kann mir da wer helfen?
vielen dank schon mal
gruß Cup^Cino
Hi,
ich habe eine xml datei mit eim attribut eines nodes, welches a oder b sein kann. nun möchte ich alle nodes ausgeben aber nach:
[...]
Schritt 1: Finde das richtige Prädikat im XPath-Ausdruck, welches alls Nodes mit dem Attributwert "a" repräsentiert.
Cheatah
tag
Schritt 1: Finde das richtige Prädikat im XPath-Ausdruck, welches alls Nodes mit dem Attributwert "a" repräsentiert.
Also die a's und b's ausgeben is nicht mein problem das wahre problem ist dass ich das "alle a's:" nur dann dynamisch ausgeben möchte wenn auch a's da sind dass oben war leider schlecht ausgedrückt sorry!
Hi,
das wahre problem ist dass ich das "alle a's:" nur dann dynamisch ausgeben möchte wenn auch a's da sind
vorher zählen. Oder vorher alle vorkommenden Werte ermitteln, dann kannst Du sie gleich in einer Schleife oder einem Template durchgehen.
dass oben war leider schlecht ausgedrückt sorry!
Vielleicht hast Du einfach zu wenige Kommas benutzt.
Cheatah
Hallo,
Ist es das, was du meinst?
alle a's:
<xsl:for-each select="node[@attributname='a']">
<xsl:value-of select="self::node()"/>
</xsl:for-each>
alle b's:
<xsl:for-each select="node[@attributname='b']">
<xsl:value-of select="self::node()"/>
</xsl:for-each>
Gruß Mia
Hallo
Ist es das, was du meinst?
nein leider ist es das nicht, da ich nicht immer a's habe oder auch mal die b's nicht da sien können. und somit hätte ich da ein leeres alle a's oder so stehn und dass kann ich absolut nicht brauchen.
aber danke für deine hilfe evtl hast du ja noch ein andren tip für mich.
Du kannst die einzelnen Blöcke doch auch in Klammern des Typs
<xsl:if test="node[@attributname='a']">
</xsl:if>
setzten.
Oder verstehe ich dich grundsätzlich falsch?
Mia
Ich mal mal n stück xml datei!
<root>
<node>
<sied>B</side>
<node_data>
...
</node_data>
</node>
<node>
<sied>A</side>
<node_data>
...
</node_data>
</node>
<node>
<sied>B</side>
<node_data>
...
</node_data>
</node>
</root>
so und nun möcht ich halt irgendwie sowas haben:
wenn ein node/side="A" dann schreib alle A's node_data node_data
Wobei das node Data darstellen nicht mein problem ist sonden das alle A's nicht mehrfach angezeibt zu bekommen wenn mehrere nodes ein A haben.
wenn ein node/side="A" dann schreib alle A's node_data node_data
Wobei das node Data darstellen nicht mein problem ist sonden das alle A's nicht mehrfach angezeibt zu bekommen wenn mehrere nodes ein A haben.
Meinst du, dass der Text "Alle A's" nur einmal auftauchen soll?
Wenn ja, dann ist das meiner Meinung nach schon gelöst, weil dieser Text außerhalb der for-each-Schleife steht.
Du musst im Test und im Select bei dieser XML-Datei natürlich nicht [@side='A'] abfragen, sondern den Wert der Knoten node/side.
Gruß Mia
So
Natürlich muss "alle A's" außerhalb der for each stehen aber wie prüfe ich dann ab ob es überhaupt einen Grund gibt "alle A's" zu schreiben?
ich versuchte es bissher mit <xsl:if test="node/sied = 'A'"> aber dass ergab bei mir immer false egal wie viele as noes und sonswas ich hatte
HaHa
ich bin der meister Ich hab eine Lösung gefunden aber wohl eher durch glück wie durch verstand aber hauptsache es geht.
LaLa LaLaLaLa
Hallo,
ich bin der meister Ich hab eine Lösung gefunden aber wohl eher durch glück wie durch verstand aber hauptsache es geht.
LaLa LaLaLaLa
Wenn du das Archiv bemüht hättest, hättest du deine Lösung schon vor Stunden gefunden.
Aber es ist gut, dass du selbst eine Lösung erarbeiten könntest, das ist immer eine feine Sache um zu lernen.
Grüße
Thomas
Hallo,
also ich habe das gerade bei mir noch mal getestet. Bei mir funktioniert es mit
<xsl:if test="/descendant::node/side='A'">
Liegt es vielleicht daran, dass du mal side und mal sied schreibst?
Ich habe das bisher nur für einen Fehler beim Abschreiben gehalten, aber wer weiß.
Gruß Mia
Hi,
ich habe eine xml datei mit eim attribut eines nodes, welches a oder b sein kann. nun möchte ich alle nodes ausgeben aber nach:
alle A's: node1, node3, node4, node6
alle B's: node0, node2, node5, node7
xsl:sort
cu,
Andreas