XML mit XSLT transformiert zu HTML und trotztdem aufklappbar?



  • Hi Folks,

    folgendes Problem:

    Ich habe z.B folgende XML:

    <records>
          <contact id="0001">
             <title>Mr</title>
             <forename>John</forename>
             <surname>Smith</surname>
          </contact>
          <contact id="0002">
             <title>Dr</title>
             <forename>Amy</forename>
             <surname>Jones</surname>
          </contact>
          ...
       </records>
    

    Und möchte das ganze jetzt gruppiert nach Nachnamen ausgeben also so:

    Jones,<br />
          Amy (Dr)<br />
          Brian (Mr)<br />
       Smith,<br />
          Fiona (Ms)<br />
          John (Mr)<br />
    

    Google hilft da und zwar mit folgender XSLT:

    <xsl:key name="contacts-by-surname" match="contact" use="surname" />
       <xsl:template match="records">
          <xsl:for-each select="contact[count(. | key('contacts-by-surname', surname)[1]) = 1]">
             <xsl:sort select="surname" />
             <xsl:value-of select="surname" />,<br />
             <xsl:for-each select="key('contacts-by-surname', surname)">
                <xsl:sort select="forename" />
                <xsl:value-of select="forename" /> (<xsl:value-of select="title" />)<br />
             </xsl:for-each>
          </xsl:for-each>
       </xsl:template>
    

    Jetzt möchte ich aber gerne das man die Möglichkeit hat die Vornamen "zuklappen" zu können, also so als ob diese von einem Tag umschlossen wären, also ganz simple wie es z.B. der IE ohnehin anbietet wenn man eine XML ohne Stylesheet öffnet also in der StandardXML-Ansicht.

    Anwendungsfall: Wenn da mal mehr als 100 Vornamen oder so stehen dann möchte ich die der Übersicht halber einfach zuklappen können.

    Ich hoffe jemand weiß Rat :p

    Danke schonmal vorweg 🕶 🤡


  • Mod

    XSLT übersetzt dir XML nur in eine andere markup language.

    Ausklappen, einklappen, wegklappen, etc. wirst du mit JavaScript und CSS lösen müssen.
    jQuery bietet sich hier zB an.


Anmelden zum Antworten