Cup^Cino: xsl gruppierung entscheidung

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

  1. 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

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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!

      1. 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

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. 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

    1. 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.

      1. 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

        1. 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.

          1. 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

            1. 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

              1. 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

                1. 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

              2. 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

  3. 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

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.