Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Sonstige Fragen » XML - Verständnis » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen XML - Verständnis
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
123michi19
unregistriert
XML - Verständnis Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hi Leute,

jetzt wäre ich soweit mit meinem XML - Problem.
Ich habe noch nie selber eine XML - Datei geschrieben und wäre dankbar, wenn ihr einen Blick darauf werfen könntet. Besten Dank.

Die Aufgabenstellung:

Erstellen Sie ein XML-Dokument mit dem Daten über Gebrauchtwagen ausgetauscht werden
können! Verwenden Sie dabei Elemente und Attribute und schachteln Sie zusammengehörige
Inhalte so dass sie durch die XML Struktur als zusammengehörig erkenntlich sind. Folgendes
Beispiel soll damit abgebildet werden: "Volkswagen Golf 1.4 Goal, 10.490 EUR, Limousine,
Gebrauchtfahrzeug, EZ 11/2006, 44.007 km, Benzin, 59 kW, 80 PS, Schaltgetriebe, 1390 cm³,
Verbrauch 6,9 l/100km / 9,4 l/100km / 5,5 l/100km, Klimaautomatik, Schwarz metallic, ABS,
Einparkhilfe, El. Fensterheber, El. Wegfahrsperre, ESP, Leichtmetallfelgen, Servolenkung,
Sitzheizung, Tempomat, Zentralverriegelung , Front-, Seiten- und weitere Airbags"

Meine Ideen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

<?xml version = "1.0" encoding="UTF-8"?>
<Gebrauchtwagen>
	< Marke> "Volkswagen Golf 1.4 Goal, Limousine" price="10.490EUR" </Marke>
	<Zustand> Gebrauchtfahrzeug </Zustand>
	<Daten> 
		<EZ> 11/2006 </EZ>
		<KM-Stand> 44.007 km </KM-Stand>
		<Sprit> Benzin </Sprit>
		<Leistung> 59 kW, 80 PS, 1390 cm³ </Leistung>
		<Getriebe> Schaltung </Getriebe>
		<Verbrauch> 6,9 l / 100 km, 9,4 l / 100 km, 5,5 l / 100 km </Verbrauch>
		<Klimaanlage> Klimatronik </Klimaanlage>
		<Farbe> Schwarz metallic </Farbe>
		<Zubehör> ABS, Einparkhilfe, El. Fensterheber, El. Wegfahrsperre, ESP, Leichtmetallfelgen, Servolenkung, Sitzheizung, Tempomat, 
				  Zentralverriegelung, Front-, Seiten- und weitere Airbags </Zubehör>
</Gebrauchtwagen>

20.12.2014 11:47
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Zeile gefällt mir nicht:
code:
1:
<Verbrauch> 6,9 l / 100 km, 9,4 l / 100 km, 5,5 l / 100 km </Verbrauch>

Du trennst hier Einträge mit dem selben Zeichen wie Dezimalzahlen.
Wäre so besser gelöst:
code:
1:
2:
3:
4:
5:
<Verbrauch_l_100km>
    <value>6.9</value>
    <value>9.4</value>
    <value>5.5</value>
</Verbrach_l_100km>

gilt natürlich auch für Leistung/Zubehör

__________________
Syntax Highlighting fürs Board (Link)
20.12.2014 12:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Super, dankeschön. Genau aus solchen Fehlern lernt man :-)

Sagt dir XPATH zufällig auch etwas?
20.12.2014 12:54
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nur vom Namen her.

__________________
Syntax Highlighting fürs Board (Link)
20.12.2014 13:48 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
123michi19
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Alles klar, danke dir :-)
20.12.2014 13:51
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallöchen,

damit es besser auswertbar ist (z.b. per XPath-Abfrage) würde ich dazu raten, die Informationen wesentlich mehr aufzugliedern. Ähnlich wie bei der 1. Normalform von Datenbanken, würde ich auf Atomarität achten. D.h. keine "Felder" enthalten mehrere Verschiedene Daten. Die erste Auflösung hat ja euler schon gebracht.
Ich bearbeite das Beispiel mal weiter:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
<?xml version = "1.0" encoding="UTF-8"?>
<FahrzeugAngebot>
	<Zustand><Gebraucht /></Zustand>
	<Marke>Volkswagen</Marke>
	<Modell>
		<Name>Golf</Name>
		<Version>1.4 Goal</Version>
		<Zusatz>
			<Zusatzelement>Limousine</Zusatzelement>
		</Zusatz>
	</Modell>
	<Preis waehrung="EUR">10.490</Preis>
	<Zustand> Gebrauchtfahrzeug </Zustand>
	<Daten> 
		<EZ>
			<Monat>11</Monat>
			<Jahr>2006</Jahr>
		</EZ>
		<Laufleistung einheit="km">44.007</Laufleistung>
		<Sprit><Benzin/></Sprit> <!-- Hier gibt es eigentlich nur wenige Optionen, Benzin und Diesel. So wird es Maschinenlesbar, da kein Freitext -->
		<Leistung>
			<KW>59</KW>
			<PS>80</PS>
		</Leistung>
		<Hubraum einheit="ccm">1390</Hubraum>
		<Getriebe><Schaltung /></Getriebe>
		<Verbrauch strecke="100" einheit_kraftstoff="l" einheit_strecke="km">
			<value>6.9</value>
			<value>9.4</value>
			<value>5.5</value>
		</Verbrauch>
		<Klimaanlage>Klimatronik</Klimaanlage>
		<Farbe>Schwarz metallic</Farbe>
		<Zusaetze>
			<Zusatz>ABS</Zusatz>
			<Zusatz>Einparkhilfe</Zusatz>
			<Zusatz>El. Fensterheber</Zusatz>
			<Zusatz>El. Wegfahrsperre</Zusatz>
			<Zusatz>ESP</Zusatz>
			<Zusatz>Leichtmetallfelgen</Zusatz>
			<Zusatz>Servolenkung</Zusatz>
			<Zusatz>Sitzheizung</Zusatz>
			<Zusatz>Tempomat</Zusatz>
			<Zusatz>Zentralverriegelung</Zusatz>
			<Zusatz>Front-, Seiten- und weitere Airbags</Zusatz>
		</Zusaetze>
</Fahrzeugangebot>


Ich bin kein XML-Profi. Wahrscheinlich gibt es noch gegen das eine oder andere Einwände. Aber so halte ich es für relativ gut Maschinenlesbar.

Noch eine Anmerkung zur Maschinenlesbarkeit: Alle Tags kann man in einem XML-Dokument und verschiedene Bedingungen dazu kann man in einem XML-Schema festlegen. Somit kann z.B. gezielt nach Benzin oder Diesel als Kraftstoff gesucht werden. Lässt man es als Text zwischen den Tags, so kann nicht per XML-Schema geprüft werden, ob es ein gültiger Kraftstoff ist.

Ich hoffe das ist halbwegs eingänglich. Zu XPath kann ich sicher auch noch etwas beitragen. Habe es schonmal verwendet.

Gruß,

Karlito
20.12.2014 16:40 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
123michi19
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank Karlito für deine Hinweise.

Hier noch zu XPath:

15. Formulieren Sie XPath Statements, um in unten stehender XML Datei folgende Knoten auszuwählen:
a. Die Namen aller Zeitschriften
b. Alle Ausgaben aller Zeitschriften des Jahres 2010
c. Die Titel der Artikel von Susi Sonne
d. Die Nummern der Ausgaben mit Artikeln die länger als 3 Seiten sind
<Liste>
<Zeitschrift Name="iX">
<Ausgabe Nr="10" Jahr="2010">
<Artikel Startseite="15" AnzSeiten="3"> <!-- weiter auf der Rückseite, bitte wenden --><Autor>Hans Dampf</Autor>
<Autor>Toni Träumer</Autor>
<Titel>XML leicht gemacht</Titel>
</Artikel>
<Artikel Startseite="20" AnzSeiten="5">
<Autor>Monika Müller</Autor>
<Titel>Mit XPath zum Erfolg</Titel>
</Artikel>
</Ausgabe>
<Ausgabe Nr="11" Jahr="2009">
<Artikel Startseite="20" AnzSeiten="1"
<Autor>Susi Sonne</Autor>
<Titel>Elemente und Attribute in XSD</Titel>
</Artikel>
</Ausgabe>
</Zeitschrift>
<Zeitschrift Name="Informatik Spektrum">
<Ausgabe Nr="10" Jahr="2010">
<Artikel Startseite="15" AnzSeiten="4">
<Autor>Lothar Leicht</Autor>
<Autor>Susi Sonne</Autor>
<Titel>Einführung in XSLT</Titel>
</Artikel>
</Ausgabe>
</Zeitschrift>
</Liste>


Ich habe mich auch schon in das Thema eingelesen, für den Aufgabenteil von a hätte ich die folgende Lösung:

/Liste/Zeitschrift Name



Vielen Dank für deine Hilfe ;-)
22.12.2014 01:21
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Name ist ein Attribut, es muss also ein "@" irgendwie vorkommen...

Ich würde es mit
code:
1:
/Liste/Zeitschrift/@Name

probieren.
Du musst das ausprobieren, sonst weißt Du ja nie, ob es funktioniert oder nicht. Im Netz gibt es online-XPath Processoren, such mal nach so was mit Google.
Bei der b) würde ich mit
code:
1:
/Liste/Zeitschrift/Ausgabe[@Jahr=2010]

starten.
Bei der d) musst Du z. B. mal nach der Funktion count schauen.

Gruß
Marco
22.12.2014 22:15 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke fürs Einspringen as_string Daumen hoch Wink
23.12.2014 11:39 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
123michi19
Mitglied


Dabei seit: 22.12.2014
Beiträge: 45

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für Eure Antworten. Leider blicke ich bei XML garnicht durch. Das Problem ist, dass es da so viele verschiedene Sachen gibt. Einmal lese ich dann wieder XSD (ist dies das XML-Datenschema) und dann kommt wieder XPath (müsste dann zur Auswahl bestimmter Bereiche in XML - Dateien sein). Dann finde ich mal wieder DTD (ich weiß nicht so recht, was ich damit anfangen soll). Genauso wann ich ein Attribut und wann ein Element verwenden soll? Ist das reine Gefühlssache?

Vielen Dank für Eure Unterstützung :-)
29.12.2014 13:28 123michi19 ist offline Beiträge von 123michi19 suchen Nehmen Sie 123michi19 in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo 123michi19,

ja, das ist am Anfang etwas verwirrend.

XSD und DTD haben den selben Zweck. Sie beschreiben das XML-Schema. Das XML-Schema drückt aus, wie eine XML-Datei "wohlgeformt" ist. D.h. welche Elemente es gibt und wie sie ineinander geschachtelt werden können. Weiterhin gibt es an, welche Attribute zulässig sind. XSD ist dabei die modernere Variante und welche mächtiger und selbst in XML verfasst ist. Ich finde es wichtig zu wissen, dass es DTD gibt, da es auch teilweise noch verwendet wird. Benutzen würde ich aber nur noch XSD.

XPath ist eine Abfragesprache. Diese ist prinzipiell erst einmal nur dazu da, Elemente aus dem XML zu extrahieren. Ähnlich wie bei SQL geht es also nur darum. Daten aus dem XML abzufragen.

Für die Entscheidung, ob man ein Attribut nimmt oder ein Element, weiß ich tatsächlich nicht, ob es einen formalen Prozess gibt. Ich würde meine Herangehensweise so beschreiben: Ich sehe ein XML-Element als Container an. Der Inhalt des Containers sind weitere Elemente. Die Eigenschaften des Containers oder Eigenschaften, welche sich die Kinder des Containers auswirken sind Attribute. Das ist aber schwammig... Wenn mir noch mal etwas Besseres einfällt, schreibe ich das hier.

Gruß,

Karlito
29.12.2014 14:37 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
123michi19
Mitglied


Dabei seit: 22.12.2014
Beiträge: 45

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank an dich als XML-Experten und sorry, dass zu diesem Thema so viele Fragen kommen (da finde ich HTML viel besser großes Grinsen )

Ich würde es gerne einmal zusammenfassen, so wie ich das Thema verstehe:

XML ist eine Art Oberbegriff. Eine XML - Datei kann mit frei wählbaren Tags geschrieben werden und enthält Attribute und Elemente.

Dann gibt es XSD (Sie beschreiben das XML - Schema). Dazu gehört auch die Document Type Definition (DTD). Die DTD wiederum gibt an, ob ein Dokument wohlgeformt ist (wohlgeformt heißt, dass gewisse Standards eingehalten werden müssen). Zur DTD gehören auch noch PCDATA und CDATA? CDATA ist wie in der Java - Programmierung der Kommentar, welcher einfach (im Fall von XML) vom Parser überlesen wird. PCDATA ist mir nicht wirklich klar, was das bewirken soll.
Dann gibt es sogenannte XML-Schema-Elemente?
xs: element
xs: attribute

xs: complexType
xs: simpleType

xs: sequence
xs: choice
xs:all

Und auch die Begriffe minOccur und maxOccur tauchen häufiger auf?

Mit diesen Elementen kann ich leider überhaupt nichts anfangen und weiß auch nicht recht, wie ich sie einbauen muss.

Und zu guter Letzt gibt es noch XPath, welches für die Abfrage der einzelnen Dateien zuständig ist. Dort gibt es die Selektoren:

/ Pfad ist absolut und startet am Wurzelknoten
./ Pfad ist relativ und startet beim aktuellen Kontext
../ Pfad ist relativ und startet beim Elternelement
// Suchpfad, der das ganze Dokument durchsucht
/element selektiert das angegebene Element
/element/@attribut selektiert das Attribut des Elements
/element/text() selektiert den Textinhalt des Elements
/element[Bedingung] selektiert die angegebenen Elemente, wenn sie die Bedingung erfüllen
or und and als boolsche Operatoren
| als Vereinigungsmenge zwischen zwei Ergebnissen


Ich weiß, es sind leider Fragen über Fragen, aber du kennst dich klasse mit dem Thema aus und ich möchte ungern erst zwei Tage vor der Klausur mit XML anfangen Daumen hoch
29.12.2014 17:29 123michi19 ist offline Beiträge von 123michi19 suchen Nehmen Sie 123michi19 in Ihre Freundesliste auf
123michi19
Mitglied


Dabei seit: 22.12.2014
Beiträge: 45

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi Karlito,

könntest du mir vielleicht mit dem Thema weiterhelfen? Wenn es dir zu viel Arbeit ist, dann gib mir bitte kurz Bescheid, sodass ich mir anderweitig Unterstützung suchen kann.

Besten Dank Daumen hoch
31.12.2014 14:08 123michi19 ist offline Beiträge von 123michi19 suchen Nehmen Sie 123michi19 in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie Dir schon gesagt wurde: DTD ist die alte Art, ein XML-Schema zu definieren, XSD die neuere, die einen großen Nachteil von DTD behebt: DTD ist selbst kein XML, XSD aber schon. DTD ist also nicht "Teil" der XSD sondern wird dadurch ersetzt.

Leider kenne ich mich mit XSD und auch DTD nicht genau genug aus: Aber was ein XML-Element und ein XML-Attribut ist, weißt Du ja schon und xs:element und xs:attribute beschreiben diese jeweils. Die minOccurs und maxOccurs geben an, wie häufig ein Element in einem anderen vorkommen kann: Darf es nur einmal vorkommen, muss es genau einmal vorkommen, muss es mindestens einmal vorkommen, sollen es genau 3 sein, etc...

Ich meine, das meiste ist doch auch hier ganz gut beschrieben: http://www.w3schools.com/schema/. Was willst Du jetzt noch genau von uns wissen? Wir können doch sicher hier nicht besser beschreiben, als das in diesen Seiten schon getan ist. Was wir machen können ist, auf konkrete und spezielle Fragen zu antworten. Bei Dir sehe ich aber entweder keine echten Fragen oder sehr allgemeine, die auch allgemein schon tausende Male im Internet beantwortet sind. Sollen wir für Dich Googlen oder was sollen wir tun?

Gruß
Marco
31.12.2014 15:42 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
123michi19
Mitglied


Dabei seit: 22.12.2014
Beiträge: 45

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Besten Dank. Das mit minOccurs und maxOccurs habe ich nicht so recht rausfinden können.

Übungen habe ich schon vor mir liegen, diese werde ich jetzt lösen und falls damit Probleme auftreten gezielt bei Euch nachfragen.
31.12.2014 15:46 123michi19 ist offline Beiträge von 123michi19 suchen Nehmen Sie 123michi19 in Ihre Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Sonstige Fragen » XML - Verständnis