Announcement

Collapse
No announcement yet.

XML Schleifen

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

  • XML Schleifen

    Guten Morgen,
    ich bin Systemadministrator in einer kleineren Firma und wurde von meinem Chef damit betraut mit XML eine Statistik zu erstellen.
    Leider habe ich mit Xml noch nie etwas gemacht und habe das Thema gerade gegooglt und mir einen überblick verschafft.

    Leider habe ich ein ähnliches Thema nicht finden können.

    Hier habe ich ein "Pseudo" Beispiel meiner Struktur da ich mir nicht sicher bin ob ich echte Daten hier Posten darf.

    Es geht mir aber eher um einen Ansatz als um eine Lösung da die Original Dateien tausende "Datensatz" Felder hat und jedes Feld hat immer ein "Einheit typ" welches immer einen "Wert" hat.

    Es kommt oft vor das ein "Datensatz" nicht vollständig ist dann soll an der stelle die Tabelle leer bleiben.

    Was ich brauche ist eine Tabelle in der alles was in einem "Datensatz" enthalten ist angezeigt wird(siehe Bild).


    Ich dachte an eine Lösung mit einer XSL:For each Schleife aber leider bleiben meine Felder leer und bringen keine Daten.

    <Daten>
    <Datensatz>
    <Einheit typ="Alpha001">
    <wert>0123</wert>
    </Einheit>
    <Einheit typ="Bravo002">
    <wert>0345</wert>
    </mm>
    <Einheit typ="Charlie003">
    <wert>0789</wert>
    </mm>
    </Datensatz>
    <Datensatz>
    <Einheit typ="Bravo002">
    <wert>ABC</wert>
    </mm>
    </Datensatz>
    </Daten>

    Es tut mir leid das ich euch damit belästige, ich hab es schon mehere Stunden probiert aber leider zählen in meiner Firma nur Ergebnisse.
    Ich kann mir vorstellen das es nur eine einfache Abfrage mehere Schleifen sein könnte.

    Vielen Dank für eure Hilfe

    Mit freundlichen Grüßen
    Zuletzt editiert von JohnDorian; 22.12.2009, 12:11. Reason: Bild vergessen

  • #2
    Es geht auch mit xsl:for-each aber
    steigt auch der Zeitverbrauch

    css einbinden hilft es besser zulesen

    ICQ 567877710
    bei weiteren Fragen



    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method="html" indent="yes"/>
        <xsl:template match="/">
            <html>
                <style type="text/css">
                    table, th, td {
                        border: 1px solid black;
                    }
                    th {
                        background-color:green;
                        color:white;
                    }</style>
                <head/>
                <body/>
    
    
                <table>
                    <xsl:apply-templates select="Daten"/>
                </table>
            </html>
        </xsl:template>
        <xsl:template match="Daten">
            <tr>
                <th>pos</th>
                <th>Alpha001</th>
                <th>Bravo002</th>
                <th>Charlie003</th>
            </tr>
            <xsl:apply-templates select="Datensatz"/>
        </xsl:template>
        <xsl:template match="Datensatz">
            <tr>
                <td>
                    <xsl:value-of select="position()"/>
                </td>
                <td>
                    <xsl:value-of select="Einheit/@typ[.='Alpha001']/../wert"/>
                </td>
    
                <td>
                    <xsl:value-of select="Einheit/@typ[.='Bravo002']/../wert"/>
                </td>
                <td>
                    <xsl:value-of select="Einheit/@typ[.='Charlie003']/../wert"/>
                </td>
    
    
            </tr>
        </xsl:template>
    </xsl:stylesheet>

    Comment

    Working...
    X