Monty Burns: wann nehme ich ein attribut und wann ein unterelement

hi

wollt eben ein xml-dakoment aufbauen und da bin ich auf das problem gestossen das man informationen auf zwei unterschiedliche arten abspeichern kann
welche davon verwendet man in welchem fall

1. informatinen in attributen abspeichern
<einxmlelemnt attributname1="wert1" attributname2="wert2" />

2. informationen in elementen
<einxmlelemnt>
<unterelemnt1>wert1</unterelemnt1>
<unterelemnt2>wert2</unterelemnt2>
</einxmlelemnt>

bin dankbar für tipps oder homepages wo näher auf das thema eingegangen wird
In selfHTML ist das leider nicht der fall.
die schreiben da nur:
"Sinnvoll ist es daher, nur solche Daten in Attribute zu packen, die vor allem zur reinen Datenverarbeitung dienen. Sind es dagegen Daten, die Inhalt enthalten, der z.B. am Bildschirm ausgegeben werden soll, dann ist es sinnvoller, eigene Elemente dafür zu definieren"

vlt weiss jemand ne präzisere definition

gruss

Monty Burns

  1. Hi,

    also so richtig standardisiert ist das meines Wissens nicht. Die erste Erkenntnis lautet: In einem Unterelement kannst du komplexe Inhalte verwenden, in einem Attribut nur einfache Inhalte, also maximale noch Zahlen, Daten o.ä. sofern XML-Schema zur Validierung eingesetzt wird.
    Die Faustregel, die mir beigebracht wurde, lautet: Inhalte in Elemente, Meta-Informationen in Attribute, das deckt sich in etwa mit SelfHTML. Meta-Informationen könnten z.B. eine Datensatz-ID, ein Modifikationszeitstempel oder solche Sachen sein, die halt irgendwas über den Elementinhalt aussagen.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
  2. Hallo,

    wollt eben ein xml-dakoment aufbauen und da bin ich auf das problem gestossen das man informationen auf zwei unterschiedliche arten abspeichern kann
    welche davon verwendet man in welchem fall

    1. informatinen in attributen abspeichern
      <einxmlelemnt attributname1="wert1" attributname2="wert2" />

    2. informationen in elementen
      <einxmlelemnt>
      <unterelemnt1>wert1</unterelemnt1>
      <unterelemnt2>wert2</unterelemnt2>
      </einxmlelemnt>

    bin dankbar für tipps oder homepages wo näher auf das thema eingegangen wird
    In selfHTML ist das leider nicht der fall.
    die schreiben da nur:
    "Sinnvoll ist es daher, nur solche Daten in Attribute zu packen, die vor allem zur reinen Datenverarbeitung dienen. Sind es dagegen Daten, die Inhalt enthalten, der z.B. am Bildschirm ausgegeben werden soll, dann ist es sinnvoller, eigene Elemente dafür zu definieren"

    vlt weiss jemand ne präzisere definition

    Es gibt dafür keine Definition.

    Der Ansatz in SELFHTML isr recht gut und verdeutlicht die gängige Praxis.
    Z.B. du speicherst informationen über ein Bild:
    <image id="1">
    <filename title="Dateiname"></filename>
    <width title="Bild-Breite"></width>
    <height title="Bild-Höhe"></height>
    <titletext title="Titeltext"></titletext>
    <language title="Sprache"></language>
    </image>

    jetzt ist es wenig sinnvoll id="" und title="" als Unterelemente zu notieren,
      <image>
          <id>
          <filename>
              <title>
         ...
    weil sie keinen direkten Bezug zu den Informationen haben, die du über das Bild speichern willst. Solche Metadaten können dann aber gut in Attributen untergebracht werden. So würde es auch leicher sein z.B. eine DTD/Schema zu erstellen.

    Es ist trotzdem immer ein Ermessensfrage, wo und was man in Attributen und was in Elementen notiert.
    Bei deinem Bsp. <einxmlelemnt attributname1="wert1" attributname2="wert2" /> stellt sich also die Frage, worauf sich die Werte wert1 und wert2 beziehen.

    Grüße
    Thomas

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

      <image id="1">
      <filename title="Dateiname"></filename>
      <width title="Bild-Breite"></width>
      <height title="Bild-Höhe"></height>
      <titletext title="Titeltext"></titletext>
      <language title="Sprache"></language>
      </image>

      jetzt ist es wenig sinnvoll id="" und title="" als Unterelemente zu notieren

      welchen sinn haben denn die vielfältigen title-attribute?

      wird es in der praxis wirklich im allgemeinen für sinnvoll gehalten, solche unterobjekte (wiederholt) mit einem title auszustatten?

      oder ist das hier nur ein etwas unglücklich gewähltes beispiel?

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hallo,

        welchen sinn haben denn die vielfältigen title-attribute?

        wird es in der praxis wirklich im allgemeinen für sinnvoll gehalten, solche unterobjekte (wiederholt) mit einem title auszustatten?

        Das kommt auf die Anwendung an.*

        oder ist das hier nur ein etwas unglücklich gewähltes beispiel?

        Nein. *In diesem konkreten Fall stellen die Elemente Felder in einem Formular dar und der Text aus title="" wird vor dem jeweiligen Feld als Beschreibung ausgegeben (ich habe nur alle andere Attribute aus den Elementen gelöscht).

        Grüße
        Thomas

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

          In diesem konkreten Fall stellen die Elemente Felder in einem Formular dar und der Text aus title="" wird vor dem jeweiligen Feld als Beschreibung ausgegeben (ich habe nur alle andere Attribute aus den Elementen gelöscht).

          OK, in dem falle leuchtet der zweck dieser attribute natürlich in gewisser weise ein.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Moin!

    welche davon verwendet man in welchem fall

    Attribute bieten sich eigentlich immer dann an, wenn die zu speichernde Information tendentiell eher klein ist, und keine komplexe Struktur hat.

    Unterelemente sind gut, wenn
    a) von derselben Informationseinheit mehrere Elemente vorkommen
    b) die Unterelemente ihrerseits noch Unterelemente enthalten können

    Und letzlich kommt es bei der Wahl auch immer drauf an, wie man die Information tatsächlich am besten weiterverarbeiten kann. :) Das erfordert aber Erfahrung, die man u.A. dadurch sammelt, dass einmal entstandene Entwürfe sich später als verbesserungswürdig herausgestellt haben. :)

    • Sven Rautenberg
    1. Hi,

      Attribute bieten sich eigentlich immer dann an, wenn die zu speichernde Information tendentiell eher klein ist, und keine komplexe Struktur hat.

      ich habe den boesen Verdacht, dass Attribute immer schlecht sind und Kindelemente immer gut.

      Ist da was dran?

      Gruss,
      Ludger

      1. Hallo,

        Attribute bieten sich eigentlich immer dann an, wenn die zu speichernde Information tendentiell eher klein ist, und keine komplexe Struktur hat.

        Oder wenn man Strukturinformationen für eigentlich gleiche Elemente verpacken will, Klassen oder ähnliches.

        <person>
          ..
          <contact>
            ..
            <im service="aim">...</im>
            <im service="icq">...</im>
            <im service="jabber">...</im>
          </contact>
        </person>

        ich habe den boesen Verdacht, dass Attribute immer schlecht sind und Kindelemente immer gut. Ist da was dran?

        Finde ich nicht.

        Tim

        1. Hi,

          ich habe den boesen Verdacht, dass Attribute immer schlecht sind und Kindelemente immer gut. Ist da was dran?

          Finde ich nicht.

          ich spielte natuerlich darauf an, dass ein Attribut als aeusserstes "Tupel" nicht mehr erweitert werden kann. Das ist ein Nachteil und Vorteile, falls diese ueberhaupt existieren, sind doch eher ergonomischer Art. Oder?   :-)

          Gruss,
          Ludger

          1. Hallo Ludger,

            ich spielte natuerlich darauf an, dass ein Attribut als aeusserstes "Tupel" nicht mehr erweitert werden kann. Das ist ein Nachteil und Vorteile, falls diese ueberhaupt existieren, sind doch eher ergonomischer Art. Oder?   :-)

            Ja, das stimmt. Gerade letzteren Vorteil würde ich aber bei Klartextformaten wie XML nicht vernachlässigen.

            Tim

            1. Hi,

              ich spielte natuerlich darauf an, dass ein Attribut als aeusserstes "Tupel" nicht mehr erweitert werden kann. Das ist ein Nachteil und Vorteile, falls diese ueberhaupt existieren, sind doch eher ergonomischer Art. Oder?   :-)

              Ja, das stimmt. Gerade letzteren Vorteil würde ich aber bei Klartextformaten wie XML nicht vernachlässigen.

              sag mal, bist Du doof oder was? Ich habe hier ganz punktgenau die Vor- und Nachteile der Attributisierung fixiert und Du lieferst Sozialverhalten?

              Oder meinst Du vielleicht was anderes? Etwas, das ich nicht so ohne weiteres verstehe? Nicht verstehen kann so zu sagen, huestel.   ;-)

              Gruss,
              Ludger

              1. Hallo,

                ich spielte natuerlich darauf an, dass ein Attribut als aeusserstes "Tupel" nicht mehr erweitert werden kann. Das ist ein Nachteil und Vorteile, falls diese ueberhaupt existieren, sind doch eher ergonomischer Art. Oder?   :-)

                Ja, das stimmt. Gerade letzteren Vorteil würde ich aber bei Klartextformaten wie XML nicht vernachlässigen.

                sag mal, bist Du doof oder was? Ich habe hier ganz punktgenau die Vor- und Nachteile der Attributisierung fixiert und Du lieferst Sozialverhalten?

                Was sollen schon wieder diese Beleidigungen?

                Oder meinst Du vielleicht was anderes? Etwas, das ich nicht so ohne weiteres verstehe? Nicht verstehen kann so zu sagen, huestel.   ;-)

                Du hast auf eine fachliche Frage eine fachliche Antwort bekommen.
                Dass du offensichtlich gerne und ebenso absichtlich fachliche Themen missverstehts und missbrauchst um irgendeins von deiner Steckpfreden unterzubringen ist schon bereits bekannt und sowas wird durch ein nachgeschobenen Smiley weder gemildert noch entschuldigt.

                Grüße
                Thomas

                1. Hi,

                  ich spielte natuerlich darauf an, dass ein Attribut als aeusserstes "Tupel" nicht mehr erweitert werden kann. Das ist ein Nachteil und Vorteile, falls diese ueberhaupt existieren, sind doch eher ergonomischer Art. Oder?   :-)

                  Ja, das stimmt. Gerade letzteren Vorteil würde ich aber bei Klartextformaten wie XML nicht vernachlässigen.

                  sag mal, bist Du doof oder was? Ich habe hier ganz punktgenau die Vor- und Nachteile der Attributisierung fixiert und Du lieferst Sozialverhalten?

                  Was sollen schon wieder diese Beleidigungen?

                  ja, sorry, da ist mein Temperament wohl ein wenig mit mir durchgegangen. Leider erhalte ich von 'Tim' regelmaessig recht sinnfreie, unerfreuliche und so zu sagen keiliseifenfoermige Antworten. Du kannst Dir vorstellen, dass zumindest ich auf sowas nicht gut abfahre?

                  Gruss,
                  Ludger

    2. Hej,

      Attribute bieten sich eigentlich immer dann an, wenn die zu speichernde Information tendentiell eher klein ist, und keine komplexe Struktur hat.
      Unterelemente sind gut, wenn
      a) von derselben Informationseinheit mehrere Elemente vorkommen
      b) die Unterelemente ihrerseits noch Unterelemente enthalten können

      In vielen Fällen kann da eine klare Entscheidung getroffen werden, aber was ist mit einem solchen Beispiel:

        
      <visitenkarte>  
        <name>Mustermann</name>  
        <vorname>Max</vorname>  
        <alter>25</alter>  
        <schuhgroesse>44</schuhgroesse>  
      </visitenkarte>  
        
      <visitenkarte name="Mustermann" vorname="Max" alter="25" schuhgroesse="44" />  
      
      

      Deiner Beschreibung zu folge wäre zweite Darstellung zu wählen, mein 'Gefühl' sagt mir aber, dass ersteres dennoch vorzuziehen wäre.

      Wären denn die gewählten Attribute/Kinder Metainformationen oder Inhalte von <visitenkarte>?

      Beste Grüße
      Biesterfeld

      --
      "Nein! ... Nein, schneller, leichter, verführerischer die dunkle Seite ist."
      1. Hi,

        a) von derselben Informationseinheit mehrere Elemente vorkommen

        <visitenkarte name="Mustermann" vorname="Max" alter="25" schuhgroesse="44" />

          
        Zumindest bei vorname könnte man argumentieren, daß es mehrere pro Person geben kann (Johann Wolfgang v. Goethe, James Tiberius Kirk, John Fitzgerald Kennedy ...)==> Kindelement(e)  
        Da für eines der Daten Kindelemente nötig sind, würde \_ich\_ die anderen auch als Kindelemente definieren.  
          
        Bei Nachnamen kann es eigentlich auch mehrere geben: Sabine Leutheusser Schnarrenberger, Doris Schröder Köpf, Simone Greiner Petter Mem...  
          
        Das Alter bei Personen zu speichern ist unsinnig (da es sich ja ändert), eher das Geburtsdatum (das könnte man strukturiert speichern als <gebdatum><jahr>1904</jahr><monat>03</monat><tag>09</tag></gebdatum> - was sich aber auch als 3 Attribute gebdatumjahr="1904" gebdatummonat="03" gebdatumtag="09", aber genausogut als <gebdatum>1904-03-09</gebdatum> oder gebdatum="1904-03-09" darstellen ließe)  
          
        Bei der Schuhgröße könnte es schon wieder zu mehreren Werten kommen - die zwei Füße einer Person müssen ja nicht gleich groß sein ;-)  
          
        cu,  
        Andreas
        
        -- 
        [Warum nennt sich Andreas hier MudGuard?](http://www.Mud-Guard.de/)  
        [Schreinerei Waechter](http://www.schreinerei-waechter.de/)  
          
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.  
        
        
      2. Hallo,

        In vielen Fällen kann da eine klare Entscheidung getroffen werden, aber was ist mit einem solchen Beispiel:

        <visitenkarte>
          <name>Mustermann</name>
          <vorname>Max</vorname>
          <alter>25</alter>
          <schuhgroesse>44</schuhgroesse>
        </visitenkarte>

        <visitenkarte name="Mustermann" vorname="Max" alter="25" schuhgroesse="44" />

        
        >   
        > Deiner Beschreibung zu folge wäre zweite Darstellung zu wählen, mein 'Gefühl' sagt mir aber, dass ersteres dennoch vorzuziehen wäre.  
        >   
          
        Das kommt darauf an was im Vordergrund steht.  
        Steht hier die Information zur Person in Vordergrund, würde ich die erste Form der Informationsdarstellung bevorzugen. Sind dagegen die Informationen zur Person sekundäre Informationen, würde ich die zweite Form bevorzugen.  
          
        Da sind wir wieder beim: primäre Informationen in Elementen, sekundäre Informationen (Information über die Information: mit Tim Bsp. <im service="aim">...</im>), also Metadaten in Attribute.  
          
        Grüße  
        Thomas  
          
        
        -- 
        Surftip: kennen Sie schon Pipolino's Clowntheater?  
        <http://www.clowntheater-pipolino.net/>  
        
        
  4. Wie einige schon gesagt haben, gibt es keine feste Regelung. Letztlich ist es eine Frage des zweckorientierten Datendesigns, der späteren Handhabung und Auswertung.

    Hauptvorteil von Kindelementen ist die Möglichkeit, mehrere gleichartige vorzuhalten, was bei Attributen nicht der Fall ist.

    Aber auch hier verwende ich manchmal Attribute wie z.B. "... bildquelle = 'bild1/bild2/bild3'" die ich erst bei der Auswertung auseinanderschnipple. Der Grund ist die einfachere und übersichtlichere Handhabung im XML-Editor bei der Datenbankwartung. Die spart Zeit und im kommerziellen Falle Geld.

    Es hängt letztlich auch davon ab, welchen XML-Editor Du verwendest und wofür. Manche haben ihre Stärken bei komplexen Datenstrukturen und der Kindelementverwaltung, manche erlauben bei simpleren Datenstrukturen einen schnelleren und übersichtlichen Zugriff auf die Attributwerte und können schon nach kurzer Einweisung von einer Bürohilfskraft gewartet werden.

    Es kommt also auch darauf an, wer mit welchen Mitteln den künftigen Datenbestand warten soll.

    mfg
    T.