Tom: xml-daten dynamisch in html einbinden

hallo an alle,

leider habe ich noch keine infos zum einbinden von xml in eine html-datei finden können. naja zumindest nicht in dem umfang, wie es gern hätte.

folgendes xml-strucktur möchte ich in eine html-page einbinden.

<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0">
<METADATA><FIELDS><FIELD attrname="Field1" fieldtype="string" WIDTH="15"/>
<FIELD attrname="Field2" fieldtype="string" WIDTH="15"/>
<FIELD attrname="Field3" fieldtype="string" WIDTH="15"/>
<FIELD attrname="Field4" fieldtype="string" WIDTH="15"/>
</FIELDS><PARAMS CHANGE_LOG="1 0 4 2 1 8 3 0 4"/>
</METADATA>
<ROWDATA>
<ROW RowState="5" Field1="fjkgf" Field2="ewf" Field3="wef" Field4="wef"/>
<ROW RowState="12" Field1="ef" Field2="ewf" Field3="wef" Field4="wef"/>
<ROW RowState="4" Field1="ef" Field2="ef" Field3="g" Field4="g"/>
</ROWDATA>
</DATAPACKET>

ich gehe davon aus, dass, wenn ich mehr zeilen eingebe diese dann dynamisch im html - angezeigt werden.

meinen dank an euch im voraus.
tom

  1. Hallo,

    leider habe ich noch keine infos zum einbinden von xml in eine html-datei finden können. naja zumindest nicht in dem umfang, wie es gern hätte.

    folgendes xml-strucktur möchte ich in eine html-page einbinden.

    Was soll angezeigt werden, die Attributwerte oder das XML-Markup an sich?
    Ich empfehle Dir die Server-seitige Umwandlung der XML-Daten mittels XSLT-Vorlagen nach HTML. Details dazu liefert der XML-Teil von SELFHTML.
    Praktikabel ist das z. B. mit PHP und dem XSLT-Prozessor Sablotron.

    Zum Testen: http://ktd.et.fh-merseburg.de/~tm/PHP/xslt/.

    MfG, Thomas

    1. hi thomas,

      danke erstmal für deine antwort. also eigentlich soll immer der gesamte inhalt angezeigt werden.

      <?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0">
      <METADATA><FIELDS><FIELD attrname="Field1" fieldtype="string" WIDTH="15"/>
      <FIELD attrname="Field2" fieldtype="string" WIDTH="15"/>
      <FIELD attrname="Field3" fieldtype="string" WIDTH="15"/>
      <FIELD attrname="Field4" fieldtype="string" WIDTH="15"/>
      </FIELDS><PARAMS CHANGE_LOG="1 0 4 2 1 8 3 0 4"/>
      </METADATA>
      <ROWDATA>
      <ROW RowState="5" Field1="fjkgf" Field2="ewf" Field3="wef" Field4="wef"/>
      <ROW RowState="12" Field1="ef" Field2="ewf" Field3="wef" Field4="wef"/>
      <ROW RowState="4" Field1="ef" Field2="ef" Field3="g" Field4="g"/>
      </ROWDATA>
      </DATAPACKET>

      also die feldbezeichnung und dann jeweils der feldinhalt. das problem ist für mich, dass ich bisher nicht einmal weiss, wie ich die xml-datei in der html-seite einbinde,bzw. aufrufe, bzw die einzelnen zeilen und felder anspreche. dazu lässt sich die hilfe nicht aus. was xsl ist, werde ich jetzt erst einmal nachlesen.

      1. Hallo,

        danke erstmal für deine antwort. also eigentlich soll immer der gesamte inhalt angezeigt werden.

        also die feldbezeichnung und dann jeweils der feldinhalt. das problem ist für mich, dass ich bisher nicht einmal weiss, wie ich die xml-datei in der html-seite einbinde,bzw. aufrufe, bzw die einzelnen zeilen und felder anspreche. dazu lässt sich die hilfe nicht aus. was xsl ist, werde ich jetzt erst einmal nachlesen.

        Ich habe mal fuer Deine XML-Struktur eine Transformationsvorlage erstellt (XML zur besseren Lesbarkeit nur anders formatiert + Stylesheet-Zeile):

        daten.xml

        <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
        <?xml-stylesheet version="1.0" href="daten.xsl" type="text/xsl"?>

        <DATAPACKET Version="2.0">

        <METADATA>
        <FIELDS>
        <FIELD attrname="Field1" fieldtype="string" WIDTH="15"/>
        <FIELD attrname="Field2" fieldtype="string" WIDTH="15"/>
        <FIELD attrname="Field3" fieldtype="string" WIDTH="15"/>
        <FIELD attrname="Field4" fieldtype="string" WIDTH="15"/>
        </FIELDS>
        <PARAMS CHANGE_LOG="1 0 4 2 1 8 3 0 4"/>
        </METADATA>

        <ROWDATA>
        <ROW RowState="5" Field1="fjkgf" Field2="ewf" Field3="wef" Field4="wef"/>
        <ROW RowState="12" Field1="ef" Field2="ewf" Field3="wef" Field4="wef"/>
        <ROW RowState="4" Field1="ef" Field2="ef" Field3="g" Field4="g"/>
        </ROWDATA>

        </DATAPACKET>

        daten.xsl

        <?xml version="1.0" encoding="ISO-8859-1"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <!-- by TM 04/02 -->

        <xsl:output
            method="html"
            doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
            encoding="ISO-8859-1"
            version="1.0"
            indent="yes"
        />

        <xsl:template match="DATAPACKET">

        <html>
        <head>
        <title>DATAPACKET</title>
        </head>
        <body bgcolor="#FFFFCC" text="#0000CC">

        <xsl:apply-templates />

        </body>
        </html>
        </xsl:template>

        <xsl:template match="METADATA">
          <h1>METADATA</h1>
          <table border="1" summary="METADATA">
            <tr>
              <th>attrname</th><th>fieldtype</th><th>WIDTH</th>
            </tr>
          <xsl:apply-templates />
          </table><br />
        </xsl:template>

        <xsl:template match="FIELDS/FIELD">
          <xsl:for-each select=".">
            <tr>
              <td><xsl:value-of select="@attrname" /></td>
              <td><xsl:value-of select="@fieldtype" /></td>
              <td><xsl:value-of select="@WIDTH" /></td>
            </tr>
          </xsl:for-each>
        </xsl:template>

        <xsl:template match="PARAMS">
          <tr>
            <td colspan="3"><STRONG>PARAMS:</STRONG> <xsl:value-of select="@CHANGE_LOG" /></td>
          </tr>
        </xsl:template>

        <xsl:template match="ROWDATA">
          <h1>ROWDATA</h1>
          <table border="1" summary="ROWDATA">
            <tr>
              <th>RowState</th><th>Field1</th><th>Field2</th><th>Field3</th><th>Field4</th>
            </tr>
          <xsl:apply-templates />
          </table><br />
        </xsl:template>

        <xsl:template match="ROW">
          <xsl:for-each select=".">
            <tr>
              <td><xsl:value-of select="@RowState" /></td>
              <td><xsl:value-of select="@Field1" /></td>
              <td><xsl:value-of select="@Field2" /></td>
              <td><xsl:value-of select="@Field3" /></td>
              <td><xsl:value-of select="@Field4" /></td>
            </tr>
          </xsl:for-each>
        </xsl:template>

        </xsl:stylesheet>

        Nun kannst Du mal diese beiden Dateien speichern und an den genannten Ort hochladen. Alternativ kannst Du die daten.xml in den IE mit MSXML-Parser ab 3 laden und die HTML-Ausgabe wird offline generiert. Die Zeile mit <?xml-stylesheet ...?> wird nur in letzterem Fall gebraucht, stoert aber beim Hochladen nicht.

        Lies Dich auf jeden Fall in die Themen XML und XSLT ein. Das sind spannende Technologien, was ich auch immer im Unterricht sage, aber eben nicht primaer spannend im Sinne von Klickibunti und alles dreht sich ... ;-).

        MfG, Thomas

        1. hi thomas !

          ich danke dem lehrer erstmal für die lektionen. ich lese gern und viel. das problem ist nur, dass man bei selfhtml nur dann etwas versteht, wenn mann auf dem jeweiligen thema zumindest schon etwas vorbelastet ist. naja und bei xml und xsl trifft das nicht gerade auf mich zu.

          fakt ist aber, dass die xml-datei fast täglich geändert werden wird und ich in dem glauben war, dass es möglich wäre, dass die html page beim aufruf einfach jedesmal den inhalt eben dieser xml-datei einliest, bzw in gewünscter formatierung umsetzt.

          sicher bekomme ich das irgendwie hin. bin eben nur von der schnellen erlernbarkeit bei html etwas verwöhnt. im augenblick verstehe ich nämlich leider nur bahnhof.

          tschö
          tom

          1. Hallo,

            fakt ist aber, dass die xml-datei fast täglich geändert werden wird und ich in dem glauben war, dass es möglich wäre, dass die html page beim aufruf einfach jedesmal den inhalt eben dieser xml-datei einliest, bzw in gewünscter formatierung umsetzt.

            Wenn sich nur die XML-Daten aendern, dann ist der genannte Weg genau richtig.

            sicher bekomme ich das irgendwie hin. bin eben nur von der schnellen erlernbarkeit bei html etwas verwöhnt. im augenblick verstehe ich nämlich leider nur bahnhof.

            Dabei ist XML wesentlich formaler angelegt, denn XML beschreibt nur einige wenige Regeln, um eigene Markup-Dialekte zu schreiben. Die Details liegen dann natuerlich tiefer: DTD bzw. Schema, Datenformatierung / -umwandlung usw.

            Man muss auch nicht unbedingt komplette HTML-Dokumente generieren. Es ist auch moeglich, nur den Datenteil z. B. als HTML-Tabellen oder Listen usw. zu generieren und dann etwa mittels PHP in weiteres Markup einzubetten.

            MfG, Thomas

  2. Servus

    du mußt die XML-Datei nicht in ein HTML einbinden, sondern kannst es direkt aufrufen. XML trennt zwischen Inhalt und Formatierung.
    Um eine formatierte Ausgabe zu erhalten brauchst du eine DTD, die dann prüfen kann, ob dein Dokument gültig bzw wohlgeformt ist, d.h. syntaktisch und semantisch richtig ist. Dann brauchst du eine xsl (oder xslt)-Datei, die die Formatierung vornimmt.

    unter http://www.w3schools.com/xml/xml_whatis.asp gibts ein Tutorial oder aber du schaust dir den XML-Teil von SELFHTML an, <schleim>was natürlich der beste und schnellste Weg ist.</schleim>

    Ciao Goofy

  3. hallo,

    zu allem was gesagt wurde. du hast leider noch immer nichts wesentliches gesagt, außer dass du dein xml daten in html datei einbinden möchtest.

    wo? intranet? internet?

    intranet: hast du eine homogene browserlandschaft? sprich IE 5 oder höher?
    ja: dann kannst du mit xml data islands arbeiten. wenn du ein eine vorbestimmte html seite tatsächlich nur die xml daten einbinden musst und nicht eine neute html seite aus den xml daten erzeugen willst.

    Lade dir die MSXML4 von Microsoft herunter darin findet du auch ein tutorial und bespile dazu:
    http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000438

    suche dort nach: "XML Data Islands"

    -----
    internet:
    dann muss dur dir serverseitige möglichkeiten überlegen:
    welche server hast du: Apache? IIS?

    je nach, kann man dir dann vorschläge machen

    grüße
    thomas