Wer kann mir helfen aus einer XML - Datei eine XSL Datei (Tabellenform) darzustellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wer kann mir helfen aus einer XML - Datei eine XSL Datei (Tabellenform) darzustellen

    Hallo !

    Wie kann ich aus der folgenen xml eine xsl in einer tabellenformdarstelluing machen ?

    xml :

    <Testen>
    <M_DBA_SETTINGS>
    <DS_ID Type="NUMBER">
    <row INDEX="0">5167</row>
    <row INDEX="1">5170</row>
    <row INDEX="2">6036</row>
    .
    .
    .
    <row INDEX="50">6989</row>
    </DS_ID>

    <NAME Type="VARCHAR2">
    <row INDEX="0">DISCOVERER_APP_SERVER</row>
    <row INDEX="1">REL_MAN_REPORT_PATH</row>
    <row INDEX="2">USED_COMMENT_VISIBILITY</row>
    .
    .
    .
    <row INDEX="78">USED_COMMENT_X</row>
    </NAME>


    Es sollte in Tabellenform ausgegeben werden :

    DS_ID NAME
    -------------------------------------------------------
    5167 DISCOVERER_APP_SERVER
    5170 REL_MAN_REPORT_PATH
    6036 USED_COMMENT_VISIBILITY
    . .
    . .
    . .
    6036 USED_COMMENT_X




    WÜRDE MICH ÜBER EURE HILFE FREUEN !!!


    DANKE

  • #2
    Vielleicht diese Tabelle, damit ihr wisst, was ich meine :

    DS_ID | NAME
    -------|------------
    5167 | DISCOVERER_APP_SERVER
    5170 | REL_MAN_REPORT_PATH
    6036 | USED_COMMENT_VISIBILITY
    ......... | ................
    ......... | ...............
    ......... | ................
    6989 | USED_COMMENT_X

    Kommentar


    • #3
      hat keiner eine Idee ???

      Kommentar


      • #4
        Hallo!

        Deine Daten scheinen mit PEAR XML_sql2xml o.Ä. aus einer DB extrahiert zu sein. Dabei kann man auch JOINS benutzen, dann ist das Ergebnis etwas besser strukturiert.

        Um aus Deiner vorliegenden XML-Datei eine Tabelle zu machen benötigt man zwei Schritte:
        1. Die Knoten sortieren
        2. Umwandeln in die Tabelle

        Ich habe Dir hier mal den Weg zu einer HTML-Tabelle geebnet.
        Falls Du eine Text-Datei haben willst, sind nur wenige Anpassungen
        im zweiten Stylesheet von Nöten.

        1. Die Knoten sortieren:

        Aus

        <Testen>
        <M_DBA_SETTINGS>
        <DS_ID>
        <row INDEX="0">5167</row>
        <row INDEX="1">5170</row>
        </DS_ID>
        <NAME>
        <row INDEX="0">DISCOVERER_APP_SERVER</row>
        <row INDEX="1">REL_MAN_REPORT_PATH</row>
        </NAME>
        </M_DBA_SETTINGS>
        </Testen>

        wird

        <Testen>
        <M_DBA_SETTINGS>
        <DS_ID>
        <row>DS_ID</row>
        </DS_ID>
        <DS_ID>
        <row INDEX="0">5167</row>
        </DS_ID>
        <DS_ID>
        <row INDEX="1">5170</row>
        </DS_ID>
        <NAME>
        <row>NAME</row>
        </NAME>
        <NAME>
        <row INDEX="0">DISCOVERER_APP_SERVER</row>
        </NAME>
        <NAME>
        <row INDEX="1">REL_MAN_REPORT_PATH</row>
        </NAME>
        </M_DBA_SETTINGS>
        </Testen>

        und zwar so:

        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
        <xsl:Output method="xml" encoding="UTF-8" indent="yes"/>
        <xsl:template match="/Testen">
        <Testen>
        <M_DBA_SETTINGS>
        <DS_ID>
        <xsl:for-each select="M_DBA_SETTINGS">
        <xsl:for-each select="DS_ID">
        <xsl:variable name="DS_ID" select="."/>
        <row>
        <xsl:variable name="local-nameResult" select="local-name($DS_ID)"/>
        <xsl:value-of select="$local-nameResult"/>
        </row>
        </xsl:for-each>
        </xsl:for-each>
        </DS_ID>
        <xsl:for-each select="M_DBA_SETTINGS">
        <xsl:for-each select="DS_ID">
        <xsl:for-each select="row">
        <DS_ID>
        <row>
        <xsl:for-each select="@INDEX">
        <xsl:attribute name="INDEX">
        <xsl:value-of select="."/>
        </xsl:attribute>
        </xsl:for-each>
        <xsl:value-of select="."/>
        </row>
        </DS_ID>
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each>
        <NAME>
        <xsl:for-each select="M_DBA_SETTINGS">
        <xsl:for-each select="NAME">
        <xsl:variable name="NAME" select="."/>
        <row>
        <xsl:variable name="local-nameResult1" select="local-name($NAME)"/>
        <xsl:value-of select="$local-nameResult1"/>
        </row>
        </xsl:for-each>
        </xsl:for-each>
        </NAME>
        <xsl:for-each select="M_DBA_SETTINGS">
        <xsl:for-each select="NAME">
        <xsl:for-each select="row">
        <NAME>
        <row>
        <xsl:for-each select="@INDEX">
        <xsl:attribute name="INDEX">
        <xsl:value-of select="."/>
        </xsl:attribute>
        </xsl:for-each>
        <xsl:value-of select="."/>
        </row>
        </NAME>
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each>
        </M_DBA_SETTINGS>
        </Testen>
        </xsl:template>
        </xsl:stylesheet>


        2. Umwandeln in die Tabelle

        Aus

        <Testen>
        <M_DBA_SETTINGS>
        <DS_ID>
        <row>DS_ID</row>
        </DS_ID>
        <DS_ID>
        <row INDEX="0">5167</row>
        </DS_ID>
        <DS_ID>
        <row INDEX="1">5170</row>
        </DS_ID>
        <NAME>
        <row>NAME</row>
        </NAME>
        <NAME>
        <row INDEX="0">DISCOVERER_APP_SERVER</row>
        </NAME>
        <NAME>
        <row INDEX="1">REL_MAN_REPORT_PATH</row>
        </NAME>
        </M_DBA_SETTINGS>
        </Testen>

        wird

        <table>
        <thead>
        <th>DS_ID</th>
        <th>NAME</th>
        </thead>
        <tbody>
        <tr>
        <td>5167</td>
        <td>DISCOVERER_APP_SERVER</td>
        </tr>
        <tr>
        <td>5170</td>
        <td>REL_MAN_REPORT_PATH</td>
        </tr>
        </tbody>
        </table>

        und zwar so:

        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
        <xsl:Output method="xml" encoding="UTF-8" indent="yes"/>
        <xsl:template match="/Testen">
        <table>
        <thead>
        <xsl:for-each select="M_DBA_SETTINGS">
        <xsl:for-each select="DS_ID">
        <xsl:variable name="DS_ID" select="."/>
        <xsl:variable name="positionResult" select="position()"/>
        <xsl:variable name="ComparisonResult" select="$positionResult &lt; 2"/>
        <xsl:if test="string($ComparisonResult)='true'">
        <th>
        <xsl:value-of select="$DS_ID"/>
        </th>
        </xsl:if>
        </xsl:for-each>
        </xsl:for-each>
        <xsl:for-each select="M_DBA_SETTINGS">
        <xsl:for-each select="NAME">
        <xsl:variable name="NAME" select="."/>
        <xsl:variable name="positionResult1" select="position()"/>
        <xsl:variable name="ComparisonResult1" select="$positionResult1 &lt; 2"/>
        <xsl:if test="string($ComparisonResult1)='true'">
        <th>
        <xsl:value-of select="$NAME"/>
        </th>
        </xsl:if>
        </xsl:for-each>
        </xsl:for-each>
        </thead>
        <tbody>
        <xsl:for-each select="M_DBA_SETTINGS">
        <xsl:variable name="M_DBA_SETTINGS" select="."/>
        <xsl:for-each select="DS_ID">
        <xsl:variable name="DS_ID1" select="."/>
        <xsl:for-each select="row">
        <xsl:for-each select="@INDEX">
        <xsl:variable name="INDEX" select="."/>
        <xsl:for-each select="$M_DBA_SETTINGS/NAME">
        <xsl:for-each select="row">
        <xsl:for-each select="@INDEX">
        <xsl:variable name="INDEX1" select="."/>
        <xsl:variable name="ComparisonResult2" select="$INDEX = $INDEX1"/>
        <xsl:if test="string($ComparisonResult2)='true'">
        <tr>
        <xsl:for-each select="$DS_ID1/row">
        <td>
        <xsl:value-of select="."/>
        </td>
        </xsl:for-each>
        <xsl:for-each select="..">
        <td>
        <xsl:value-of select="."/>
        </td>
        </xsl:for-each>
        </tr>
        </xsl:if>
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each>
        </xsl:for-each>
        </tbody>
        </table>
        </xsl:template>
        </xsl:stylesheet>



        Ich hoffe das hilft Dir!



        http://www.matikom.de/

        Kommentar

        Lädt...
        X