Announcement

Collapse
No announcement yet.

xml gruppieren und addieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • xml gruppieren und addieren

    Hallo liebe Entwicklergemeinde,
    ich habe ein xml Dokument welches mir aus einem Blog die jeweiligen zugeordneten Hauptthemen anzeigt
    Code:
     
    DEBUG XML
    
    <Rows>
      <Row>
        <Thema>7;#Absatz vs. Kundenzufriedenheit</Thema>
      </Row>
      <Row>
        <Thema>7;#Absatz vs. Kundenzufriedenheit</Thema>
      </Row>
      <Row>
        <Thema>8;#CRM-T</Thema>
      </Row>
    </Rows>
    aus dieser Datei möchte ich eine html datei als Cloud machen.
    Also pro Titel nur eine Anzeige des Titels (ohne 8;# habe ich mit substring-after schon weg bekommen), die Schriftgröße abhängig von der Anzahl der Einträge.
    Habe schon verschiedenes versucht habe aber immer nicht das richtige Ergebnis erreicht.
    Wäre nett wenn mir da jemand weiterhelfen könnte.
    Vielen Dank schon mal.
    Christian

  • #2
    Mit diesem XSLT-Fragment:
    Code:
    <xsl:key name="groupby" match="Row" use="."/>
    
    <xsl:template match="Rows">
    
      <xsl:for-each select="Row[generate-id() = generate-id(key('groupby',.)[1])]">
    
        <p>
          <xsl:value-of select="substring-after(.,'#')"/> (<xsl:value-of select="count(key('groupby',.))"/>)
        </p>
    
      </xsl:for-each>
    
    </xsl:template>
    ensteht die Ausgabe:
    Absatz vs. Kundenzufriedenheit (2)
    CRM-T (1)

    Die Anzahl in Klammern lässt sich in Richtung Schriftgröße umsetzen.

    Comment


    • #3
      Vielen Dank

      Vielen Dank,
      da ich noch neu bin werde ich mal nach Schriftgröße suchen

      Comment


      • #4
        Hier noch ein Ansatz zur Schriftformatierung mit span-Elementen und Inline-CSS. Ausgehend von einer maximalen Schriftgröße (Vorgabe 30px) werden die einzelnen Anteile entsprechend gewichtet (im Beispiel entstehen 20px bzw. 10px):
        Code:
        <?xml version="1.0" encoding="ISO-8859-1"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        
          <xsl:key name="groupby" match="Row" use="."/>
          <xsl:variable name="maxfontsize" select="30"/>
          <xsl:variable name="rowscount" select="count(/Rows/Row)"/>
        
          <xsl:template match="Rows">
            <html>
              <head><title>Test</title></head>
              <body>
                <p>
                  <xsl:for-each select="Row[generate-id() = generate-id(key('groupby',.)[1])]">
                    <xsl:variable name="keycount" select="count(key('groupby',.))"/>
                    <span style="font-size: {$keycount div $rowscount * $maxfontsize}px;">
                      <xsl:value-of select="substring-after(.,'#')"/> (<xsl:value-of select="$keycount"/>)</span>
                  </xsl:for-each>
                </p>    
              </body>
            </html>
        
          </xsl:template>
        
        </xsl:stylesheet>

        Comment


        • #5
          Vielen Dank für die Komplettlösung !
          Hat mir super weitergeholfen

          Comment

          Working...
          X