Dani: Aufbau einer XML-Datei

TT-Mittel TT-Max TT-Min
01.01.2005 2,5 4,2 1,5
02.01.2005 2,0 6,3 -0,9
...

Hallo,

ich habe obige Daten in tabellenform und würde diese nun gerne in einer XML-Datei speichern. Mein Vorschlag:

<Daten>

<Datum>
<TT-Mittel> </TT-Mittel>
<TT-Max> </TT-Max>
<TT-Mmin> </TT-Min>
</Datum>

<Datum>
<TT-Mittel> </TT-Mittel>
<TT-Max> </TT-Max>
<TT-Mmin> </TT-Min>
</Datum>
...
</Daten>

das wärs doch, ist es so okay, oder fehlt da noch was?

MfG Dani

  1. Hallo,

    <Daten>

    ...

    <Datum>
    <TT-Mittel> </TT-Mittel>
    <TT-Max> </TT-Max>
    <TT-Mmin> </TT-Min>
    </Datum>
    ...
    </Daten>

    das wärs doch, ist es so okay, oder fehlt da noch was?

    Formal ok waere das schon, sofern der XML-Code wohlgeformt ist und das Datenmodell fuer die weitere Verarbeitung (XSLT & Co.) brauchbar ist.

    Ich wuerde einen Datensatz aber nicht ausgehend vom Datum abbilden, sondern so darstellen:

      
    <Datensatz>  
      <Datum>...</Datum>  
      <TT-Mittel>...</TT-Mittel>  
      <TT-Max>...</TT-Max>  
      <TT-Mmin>...</TT-Min>  
    </Datensatz>
    

    Ggf. auch so:

      
    <Datensatz Datum="...">  
      <TT-Mittel>...</TT-Mittel>  
      <TT-Max>...</TT-Max>  
      <TT-Mmin>...</TT-Min>  
    </Datensatz>
    

    MfG, Thomas

    1. Ja genau, hab das selbe gerade auch noch mal nachgelesen. Der Datensatz bekommt ne Bezeichnung und so werd ich dass dann machen.

      Wenn ich die XML-Datei nun weitergeben möchte, wäre es ev. sinnvoll eine DTD zu machen:

      <!ELEMENT wetterwerte (wetterwert)>

      <!ELEMENT wetterwert (standort, datum, temperaturMax, temperaturMin, temperaturMittel)>

      <!ELEMENT standort  (#PCDATA)>
       <!ELEMENT datum   (#PCDATA)>
       <!ELEMENT temperaturMax   (#PCDATA)>
       <!ELEMENT temperaturMin  (#PCDATA)>
       <!ELEMENT temperaturMittel) (#PCDATA)>

      auch so okay? Jetzt natürlich etwas abgewandelt.

      1. Hallo,

        <!ELEMENT wetterwerte (wetterwert)>

        Da vermutlich nicht nur ein wetterwert-Element abgelegt werden soll, waere also wetterwert+ (= 1 bis n ) oder wetterwert* (= 0 bis n) sinnvoll.

        <!ELEMENT temperaturMittel) (#PCDATA)>

        ^
                                     Klammer zuviel
        MfG, Thomas

        1. Hallo Thomas,

          danke für die bisherige Hilfe. Vielleicht kannste ja noch das folgende kurz in ne xml-datei kopieren und in nem browser checken, ob alles passt. Die dtd hab ich etwas abgeändert und das + reingemacht und ebendazu ein kleines beispiel gemacht. Danke für deine Hilfe!

          <!ELEMENT wetterdaten (wetterstation, wetterwerte)>

          <!ELEMENT wetterstation (einheit, hoehe, land, name, datum, uhrzeit)>

          <!ELEMENT einheit   (#PCDATA)>
           <!ELEMENT hoehe   (#PCDATA)>
           <!ELEMENT land   (#PCDATA)>
           <!ELEMENT name   (#PCDATA)>
           <!ELEMENT datum   (#PCDATA)>
           <!ELEMENT uhrzeit  (#PCDATA)>

          <!ELEMENT wetterwerte (wetterwert)>

          <!ELEMENT wetterwert (standort, datum, temperaturMax, temperaturMin, temperaturMittel)+>

          <!ELEMENT standort  (#PCDATA)>
           <!ELEMENT datum   (#PCDATA)>
           <!ELEMENT temperaturMax   (#PCDATA)>
           <!ELEMENT temperaturMin  (#PCDATA)>
           <!ELEMENT temperaturMittel (#PCDATA)>

          <?xml version="1.0" encoding="ISO-8859-1" ?>
          <!DOCTYPE wetterdaten SYSTEM "wetterdaten.dtd">

          <wetterdaten>

          <wetterstation>
           <einheit> grad </einheit>
           <hoehe> 1m </hoehe>
           <land> deutschland </land>
           <name> name </name>
           <datum> 17.10.2005 </datum>
           <uhrzeit> 10:00 </uhrzeit>
            </wetterstation>

          <wetterwerte>
           <wetterwert>
            <standort> muenchen </standort>
            <datum> 16.10.2005 </datum>
            <temperaturMax> 15 </temperaturMax>
            <temperaturMin> 2 </temperaturMin>
            <temperaturMittel> 10 </temperaturMittel>
           </wetterwert>

          <wetterwert>
            <standort> stuttgart </standort>
            <datum> 16.10.2005 </datum>
            <temperaturMax> 12 </temperaturMax>
            <temperaturMin> 3 </temperaturMin>
            <temperaturMittel> 8 </temperaturMittel>
           </wetterwert>
            </wetterwerte>

          </wetterdaten>

          1. Hallo,

            danke für die bisherige Hilfe. Vielleicht kannste ja noch das folgende kurz in ne xml-datei kopieren und in nem browser checken, ob alles passt.

            Naja, validieren solltest Du schon selbst!

            Die dtd hab ich etwas abgeändert und das + reingemacht und ebendazu ein kleines beispiel gemacht.

            Das Element datum wird doppelt deklariert. Vorschlag: wsdatum und wwdatum verwenden oder Namensraeume deklarieren und darauf basierend ws:datum bzw. ww:datum verwenden.

            Bezogen auf wsdatum und wwdatum waere diese DTD geeignet:

            <!ELEMENT wetterdaten (wetterstation, wetterwerte)>
            <!ELEMENT wetterstation (einheit, hoehe, land, name, wsdatum, uhrzeit)>
            <!ELEMENT einheit (#PCDATA)>
            <!ELEMENT hoehe (#PCDATA)>
            <!ELEMENT land (#PCDATA)>
            <!ELEMENT name (#PCDATA)>
            <!ELEMENT wsdatum (#PCDATA)>
            <!ELEMENT uhrzeit (#PCDATA)>
            <!ELEMENT wetterwerte (wetterwert+)>
            <!ELEMENT wetterwert (standort, wwdatum, temperaturMax, temperaturMin, temperaturMittel)>
            <!ELEMENT standort (#PCDATA)>
            <!ELEMENT wwdatum (#PCDATA)>
            <!ELEMENT temperaturMax (#PCDATA)>
            <!ELEMENT temperaturMin (#PCDATA)>
            <!ELEMENT temperaturMittel (#PCDATA)>

            MfG, Thomas

            1. Danke für die Hilfe Thomas!
              MFG

            2. Das Element datum wird doppelt deklariert.

              <!ELEMENT datum (#PCDATA)> darf natürlich nur einmal in der DTD stehen …

              Vorschlag: wsdatum und wwdatum verwenden

              … aber datum kann auch durchaus als Kind von wetterstation und als Kind von wetterwert auftreten.

              oder Namensraeume deklarieren und darauf basierend ws:datum bzw. ww:datum verwenden.

              Ach, wenn schon Namensräume ins Spiel kommen, kann man ja gleich schon existierende nutzen: das date-Element aus dem Dublin-Core-Namensraum http://purl.org/dc/elements/1.1/

              Ich würd auch Datum und Uhrzeit nicht trennen, da ja beides zusammengehört und den Zeitpunkt angibt. Lässt sich im W3C DateTime Format (internationales Datumsformat, ISO 8601) angeben:
                <dc:date>2005-10-17T18:55</dc:date>
              bzw. mit Zeitzone
                <dc:date>2005-10-17T18:55+02:00</dc:date>

              Vielleicht wäre das Ganze auch eine Anwendung für RDF. (Dann gibt’s natürlich keine DTD.)

              Live long and prosper,
              Gunnar

              --
              „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
              1. Hallo,

                … aber datum kann auch durchaus als Kind von wetterstation und als Kind von wetterwert auftreten.

                So gesehen, ACK.

                Ach, wenn schon Namensräume ins Spiel kommen, kann man ja gleich schon existierende nutzen: das date-Element aus dem Dublin-Core-Namensraum http://purl.org/dc/elements/1.1/

                Kann man natuerlich alles machen, was aber schon etwas Erfahrung im XML-Universum voraussetzt.

                MfG, Thomas

  2. Hi,

    eine Überlegung wäre noch, ggf. die Temperaturen zusammenzufassen:

    <temperaturen>
       <min></min>
       <mittel></mittel>
       <max></max>
    </temperaturen>

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.