XML Gliederung/Namensgebung
Shaguar
- xml
Hallo,
ich wollte mal fragen ob ihr mir irgendwelche Tips zur XML Tag Benennung geben könnt. Ich weiß theoretisch ist es einem völlig selbst überlassen nur wollte mal wissen was wann Sinn macht und wann nicht.
Ich hab hier in meinem Beispiel eine Palette von Produkten die alle eine Bezeichnung und einen Preis haben, diese wollte ich in einem XML Dokument abspeichern. Bislang habe ich es in dieser Form gemacht:
<Produkte>
<Kategorie1>
<Produkt Bezeichnung="text" Preis="x euro"></Produkt>
<Produkt Bezeichnung="text" Preis="x euro"></Produkt>
<Produkt Bezeichnung="text" Preis="x euro"></Produkt>
</Kategorie1>
</Produkte>
aber ab wann macht es Sinn den Produktnamen als Tag Bezeichner oder als eigenes Tag im Produkt bereich zu definieren, etwa so:
<Produkte>
<Kategorie1>
<Produktbezeichnung1 Preis="x euro"></Produkt>
<Produktbezeichnung2 Preis="x euro"></Produkt>
<Produktbezeichnung3 Preis="x euro"></Produkt>
</Kategorie1>
</Produkte>
oder aber gleich so :
<Produkte>
<Kategorie1>
<Produkt>
<Bezeichnung>Produktbezeichnung1</Bezeichnung>
<Preis>Preis in Euro</Preis>
</Produkt>
<Produkt>
<Bezeichnung>Produktbezeichnung2</Bezeichnung>
<Preis>Preis in Euro</Preis>
</Produkt>
<Produkt>
<Bezeichnung>Produktbezeichnung3</Bezeichnung>
<Preis>Preis in Euro</Preis>
</Produkt>
</Kategorie1>
</Produkte>
Ich würde dir die 3. Variante empfehlen.
Die 2. Variante ist prinzipiell falsch. Du kannst nicht den Tag <Produktbezeichnung1> mit </Produkt> schließen.
Die erste Variante müsste korrekt lauten:
<Produkte>
<Kategorie1>
<Produkt Bezeichnung="$text" Preis="$preis" />
<Produkt Bezeichnung="$text" Preis="$preis" />
<Produkt Bezeichnung="$text" Preis="$preis" />
</Kategorie1>
</Produkte>
Leere Tags haben keinen End-Tag, und beim Preis brauchst du nicht jedesmal die Währung mitspeichern, wenn es ohnehin immer die selbe ist
Du könntest die Kategorie ausserdem auch als Attribut oder Kindknoten speichern, je nachdem was dir lieber ist.
Attribut:
<Produkte>
<Produkt Bezeichnung="$text" Preis="$preis" Kategorie="$kategorie" />
<Produkt Bezeichnung="$text" Preis="$preis" Kategorie="$kategorie" />
<Produkt Bezeichnung="$text" Preis="$preis" Kategorie="$kategorie" />
</Produkte>
Kindknoten:
<Produkte>
<Produkt>
<Bezeichnung>$text</Bezeichnung>
<Preis>$preis</Preis>
<Kategorie>$kategorie<Kategorie>
</Produkt>
<Produkt>
<Bezeichnung>$text</Bezeichnung>
<Preis>$preis</Preis>
<Kategorie>$kategorie<Kategorie>
</Produkt>
<Produkt>
<Bezeichnung>$text</Bezeichnung>
<Preis>$preis</Preis>
<Kategorie>$kategorie<Kategorie>
</Produkt>
</Produkte>
Ok dann werde ich wohl die letzte Variante nehmen.
Nur das ich die Kategorie schon als Elternelement einsetzen werden ist ja blöd wenn bei 50 verschiedenen Produkten immer die selbe Kategorie dabeisteht. da ist es wohl besser nur einmal die Kategorie als Elternelement einzusetzen anstatt sie 50mal zu jedem Produkt dazu zu schreiben.
(Das bei Variante 2 war nur ein Schreibfehler der Endtag sollte natürlich </Produktbezeichnung1> heißen)