kostenloser Webspace werbefrei: lima-city


xsl String-Analyse

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    pixilab

    Kostenloser Webspace von pixilab

    pixilab hat kostenlosen Webspace.

    Ich möchte gerne mittels xsl und svg ein Histogram zeichnen. Als Eingabe dient eine XML mit diversen Werten, welche mir als String in einer Variable zum weiteren Bearbeiten zur Verfügung steht.

    z.B: <xsl:variable name="stichprobe"><text>1,2,3,3,2,1,3</text></xsl:variable>

    1. Zum Zeichen benötige ich eine weitere Variable mit den vorgekommenen Werten für die x-Achse z.B. (1,2,3)
    2. Für die y-Achse brauche ich eine Variable mit den Häufigkeiten je Wert z.B. (2,2,3)

    Ich kriege das mit xsl einfach nicht hin. In einer for-each Schleife stelle ich fest wann eine 1, 2 oder 3 in der Stichprobe kommt, aber ich weiß nicht wie ich mir merken kann welcher Wert wie oft vorgekommen ist.

    Bitte um Hilfe, wie kann man den Wert einer Variable aktualisieren und Arrays gibt es nicht wirklich in xsl oder :) ?

    EDIT: Hab das Problem umgangen indem ich einfach die Knoten mit einem bestimmten Inhalt zähle, siehe Beispiel

    <xsl:variable name="haufigkeit">
                <xsl:value-of select="count(//probe[@id='zahlen']/zahl[text()='1'])"/><text>,</text>
                <xsl:value-of select="count(//probe[@id='zahlen']/zahl[text()='2'])"/><text>,</text>
                <xsl:value-of select="count(//probe[@id='zahlen']/zahl[text()='3'])"/>
    </xsl:variable>


    Jetzt habe ich eine Variable mit den Häufigkeiten je Wert. Was wäre, wenn es nun mehr wie 3 Werte sind z.B. 500? Man könnte denken, dass das folgende Beispiel funktioniert, aber das tut es leider nicht. Kann mir jemand erklären, warum man den count nicht innerhalb einer Schleife anwenden darf?

    <xsl:variable name="possible_values">
                <xsl:text>1, 2, 3, 4, 5, 6, 7, 8, 9, ...</xsl:text>
     </xsl:variable> 
    
    <xsl:variable name="haufigkeit">
         <xsl:for-each select="tokenize($possible_values, ',')">
                <xsl:value-of select="count(//probe[@id='zahlen']/zahl[text()='{.}'])"/><text>,</text>
          </xsl:for-each>
    </xsl:variable>


    Beitrag zuletzt geändert: 4.2.2012 18:36:45 von pixilab
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!