LeKuchen: Unterknoten oder Attribut?

Hallo zusammen,

wie haltet Ihr es mit Attributen und Knoten in XML-Dateien? Welche Werte kommen in ein Attribut und welche in einen Unterknoten?

Beispiel:
<Feld>
<Name dbtyp="Integer">
  Nachname
</Name>
</Feld>

oder

<Feld>
<Name>
  Nachname
</Name>
<Dbtyp>
  Integer
</Dbtyp>
</Feld>

Was macht Sinn?

Gruß,
LeKuchen

  1. Hallo LeKuchen,

    wie haltet Ihr es mit Attributen und Knoten in XML-Dateien? Welche Werte kommen in ein Attribut und welche in einen Unterknoten?

    Beispiel:
    <Feld>
    <Name dbtyp="Integer">
      Nachname
    </Name>
    </Feld>

    oder

    <Feld>
    <Name>
      Nachname
    </Name>
    <Dbtyp>
      Integer
    </Dbtyp>
    </Feld>

    Was macht Sinn?

    Um Relationen anzugeben sollte man Unterknoten verwenden, für bestimmte Informationen kann man dann Attribute verwenden. In deinem Beispiel würde ich wahrscheinlich die erste Variante, noch etwas abgewandelt, verwenden:

    <Feld>
    <Name dbtyp="Integer" nachname="Nachname" />
    </Feld>

    Wenn ich das ganze selbst machen würde, würde ich bestimmt folgendes daraus machen:

    <persons>
    <person dbtype="int" lastname="Nachname" />
    </persons>

    Das kommt natürlich ganz darauf an, welche Informationen du abspeichern willst.
    Wozu brauchst du denn dbtype? Hast du wirklich variable Typen in deiner Datenbank, sodass du diese Information später abfangen müsstest?

    Bis dann!

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hallo Marc,

      <Feld>
      <Name dbtyp="Integer" nachname="Nachname" />
      </Feld>

      So habe ich es bisher, aber aus dem einfachen Grund weil ich entsprechend Funktionen schon programmiert habe, die auf das Attribut zugreifen können. ;o)

      Wozu brauchst du denn dbtype? Hast du wirklich variable Typen in deiner Datenbank, sodass du diese Information später abfangen müsstest?

      Nein, das war nur ein blödes Beispiel. (sieht man ja schon an typ=integer) Es ging nur ums Prinzip bzw. eine daraus abzuleitende Vorschrift, wie es am besten generell gehandhabt werden soll.

      Gruß,
      LeKuchen

      FYI: Ich habe zwar ein xml-Dictionary, in dem alle Felder abgelegt sind - aber nicht mit DBtype, sondern mit Angaben für eine Eingabeplausibilisierung/Darstellung. Aus dem Felderdictionary klicke ich mir auch neue Relationen zusammen, die dann Grundlage für neu generierte Formulare und auch die dazugehörige Datenbanktabelle sind.

      <M3 Name="Vorname" LabelName="Vorname" Länge="50">
          </M3>
          <M4 Name="Gebdat" LabelName="Geburtsdatum" Datum="TTMMJJJJ">
            <mPlausi>
              <rule>
                <!--
      [1880-2000]
      -->
              </rule>
              <info>
                <!--
      Personen müssen vor 2000 geboren sein und nach 1880
      -->
              </info>
            </mPlausi>
          </M4>
          <M6 Name="Geschlecht" LabelName="Geschlecht" codiert="j" num="j">
            <CodeTab>
              <option value="0">keine Angabe</option>
              <option value="1">weiblich</option>
              <option value="2">männlich</option>
            </CodeTab>
          </M6>
          <M37 Name="EinrichtungsAdresse" LabelName="Einrichtungsadresse" num="j" codiert="j" Länge="4" Format="9999" Tabelle="[t:Einrichtungsadressen]">
          </M37>

  2. Hi,

    wie haltet Ihr es mit Attributen und Knoten in XML-Dateien? Welche Werte kommen in ein Attribut und welche in einen Unterknoten?

    id, idref, idrefs kommen auf jeden Fall in Attribute.

    Alles, was in einem Element mehrfach vorkommen kann (Ausnahme: idrefs) kommt in Kindelemente.
    Alles, was noch irgendeine Struktur aufweist und auf dessen Einzelteile im Normalfall Zugriff benötigt wird, kommt in Kindelemente.

    Bleiben also noch pro Element einmalige, nicht strukturierte Teile übrig, sofern es sich weder um id noch um idref handelt.

    Ich mach das dann meist so:
    Wenn das Element sowieso schon aus obengenannten Gründen Kindelemente hat, werden auch die restlichen Teile als Kindelemente benutzt.
    Ansonsten werden es Attribute.

    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.
    1. Hallo Andreas,

      Ja, das war auch meine erste Vorstellung.

      Vielen Dank!

      Gruß,
      LeKuchen

  3. Hallo,

    wie haltet Ihr es mit Attributen und Knoten in XML-Dateien? Welche Werte kommen in ein Attribut und welche in einen Unterknoten?

    Gaz kurz zusammengefasst:
    Konkrete Inhalte sollten möglichst als Kindelement vorkommen, Zusatzinformationen zum Element, die das Element weiter beschreiben oder spezifizieren eher als Attribute.

    Grüße
    Thomas

    --
    Surftip: kennen Sie schon Pipolino's Clowntheater?
    http://www.clowntheater-pipolino.net/