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): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen XML - Verständnis
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
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

Zitat:
Original von Karlito
Für die Entscheidung, ob man ein Attribut nimmt oder ein Element, weiß ich tatsächlich nicht, ob es einen formalen Prozess gibt.


Hallo Karlito!

Ja, das ist mir auch noch nie so ganz klar geworden. Vielleicht erstmal eine Einschränkung: Man kann natürlich technisch nur solche Elemente auch als Attribute darstellen, die nur immer einmalig vorkommen können und deren Reihenfolge auch egal ist (so weit ich weiß muss die Reihenfolge von Attributen beliebig sein, die von Elementen kann (muss aber nicht) relevant sein. Ich kann mich da aber auch irren...).

Dann ist es so eine Sache: Es sollen ja letztlich Datenstrukturen abgebildet werden und es sollte u. U. Entsprechungen zu Datenstrukturen in Programmen existieren. Z. B. wenn man Objekte in XML serialisieren will, dann haben diese ja Attribute (also Member-Variablen) und die können wiederum Collections sein und so. Wenn man erreichen will, dass die Abbildung sowohl von Object in der jeweiligen Programmiersprache nach XML als auch umgekehrt eindeutig ist, einigt man sich auf passende Transformationen. Ich bin mal über so etwas gestolpert, als ich mir SOAP angeschaut habe: Hier werden ja Methoden auf entfernten Systemen aufgerufen, indem dort hin XML übertragen wird und die Antwort auch in XML formuliert ist. Im SOAP-Standard ist deshalb auch definiert, wie die Transformation eines Objekts im Speicher auf die XML-Repräsentation passieren muss und in diesem Rahmen ist dann auch festgelegt, was Attribut und was Element im XML wird.

Ansonsten ist es mE häufig eine Frage, wie das XML weiter verarbeitet werden soll. Häufig ist es programmatisch einfacher, die Attribute eines Elementes abzufragen, also noch zusätzlich über seine Kinder zu iterieren. Deshalb kenne ich es i. A. so, dass alles, was nur einmal für ein Element vorkommen kann (oder muss) und das wirklich ein einfaches Namen-Wert-Paar ist (also keine weiteren Unterlemente mehr vorhanden sein können) dann meistens als Attribut gemacht wird. Also statt so was:
code:
1:
2:
3:
4:
5:
6:
<person>
  <firstname>Vorname</firstname>
  <lastname>Nachname</lastname>
</person>

Eher das hier geschrieben wird:
code:
1:
2:
3:
<person firstname="Vorname" lastname="Nachname" />

Obwohl beides problemlos "funktioniert".

Gruß
Marco
31.12.2014 15:57 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 abermals für's einspringen, Marco Wink

Ich denke wir beide werden gerne weitere Fragen beantworten. Enrtschuldige bitte die hohe Latenz.

Gruß,

Karlito
31.12.2014 16:01 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

Danke euch beiden Daumen hoch
31.12.2014 16:05 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

@ CDATA und PCDATA:
Ich denke der unterschied ist einfach, dass die eine Variante nicht geparst werden soll und die andere schon. Wie das genau geschieht, ist nicht festgelegt. Ist aber nur eine Vermutung.

@Attribute oder Nicht Attribute:
Ich stimme as_string zu. Es liegt wahrscheinlich einfach im Ermessen des Programmierers. Ich kann mir jedoch gut vorstellen, dass es dafür einen formalen Prozess gibt, den wir nicht kennen.

Gruß,

Karlito
31.12.2014 16:14 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

So ihr lieben XML-Profis Wink

Jetzt habe ich mich einmal an einem Beispiel versucht und wäre Euch für die Überprüfung dankbar.

Finden Sie Fehler und Ungereimtheiten in folgender XML – Datei!

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-12"?>
<Festplatte Modellbezeichnung=ST31000528AS>
<Serie>Barracuda 7200.12</Serie>
<BauForm>3,5 Zoll</Bauform>
<Kapazitaet capacity="1000" einheit="GB">
<Schnittstelle typ="Serial ATA/300" Preis="47,95"/>
<Datentransferrate wert="bis zu 125 MB/s (lesen)" waehrung="EUR"/>
<Geschwindigkeit> <Drehzahl>7200 U/min</Drehzah1>
<Zugriffszeit>8.5 ms (lesen), 9.5 ms (schreiben), Cache 32 MB</Zugriffszeit>
</Festplatte>
<Festplatte Modell="WD10EADS">
<Serie> Caviar Green</Serie>
<Kapazität capacity="1000" einheit="GB">
<BauForm>3,5 Zoll</Bauform>
<Schnittstelle typ="Serial ATA/300" Preis="48,95"/>
<Datentransferrate wert="bis zu 125 MB/s (lesen)" waehrung="EUR"/>
<Geschwindigkeit> <Drehzahl>7200 U/min</Drehzah1>
<Zugriffszeit>8.9 ms (lesen), Cache 32 MB</Zugriffszeit></Geschwindigkeit>
<Festplatte>


Mein Vorschlag für die Fehler:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<?xml version="1.0" encoding="UTF-8"?>
<Festplatte>     			<!--Wurzelelement-->
<Festplattenmodell> ST31000528AS </Festplattenmodell>
<Serie>Barracuda 7200.12</Serie>
<Bauform>3,5 Zoll</Bauform>
<Kapazitaet capacity="1000" einheit="GB">
<Schnittstellentyp> Serial ATA/300 </Schnittstellentyp> 
<Datentransferratenwert> bis zu 125 MB/s (lesen) </Datentransferratenwert> 
<Preis= “47,95" waehrung="EUR">
<Drehzahl>7200 U/min</Drehzahl>
<Zugriffszeit Lesen=“8.5 ms“ Schreiben=“9.5 ms“>
<Cache> 32 MB </Cache>
<Festplattenmodell="WD10EADS">
<Serie> Caviar Green</Serie>
<Kapazität capacity="1000" einheit="GB">
<Bauform>3,5 Zoll</Bauform>
<Schnittstellentyp> Serial ATA/300 </Schnittstellentyp
<Datentransferratenwert> bis zu 125 MB/s (lesen) </Datentransferratenwert>
<Drehzahl>7200 U/min </Drehzahl>
<Zugriffszeit> 8,9ms (lesen) <Zugriffszeit> 
<Cache> 32 MB </Cache>
</Festplatte> 
31.12.2014 19:24 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

XSD möchte ich auch gleich noch hinterher"schießen --> passt zu Silvester :-)"

Mir ist klar, dass hier bestimmt einige Fehler vorhanden sind. Aber ohne Übung kann das ja nie klappen. Daher danke ich Euch für Eure Hilfe :-)

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:
XML - Datei (Buch von Meier Hans mit dem Titel "Ein Sommertraum" als XML - Dokument)

<?xml version="1.0" encoding = "UTF-8"?>
<Buch>
	<Autor Name = "Meier" Vorname = "Hans">
	<Titel> Ein Sommertraum </Titel>
</Buch>



Zugehörige XSD - Datei

<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3org/2001/XMLSchema">   <!-- Namensraum -->
<xs: element name = "Buch">							    <!-- Oberbegriff -->
<xs:complexType name = "Name">						    <!-- Namenszuweisung -->
<xs: sequence>								<!-- öffnender sequence-Tag -->
<xs: element Name = "Meier" type = "xs:string"/>	<!-- Element Name und Typ string -->
<xs:element Vorname = "Hans" type = "xs:string"/> <!-- Element Vorname und Typ string -->
</xs: sequence>							!-- schließender sequence-Tag -->
</xs: complexType name>				<!-- schließender Tag - Namenszuweisung -->
	<xs: complexType name = "titel">			<!-- nächster Namen -->
	<xs: sequence >										
	<xs:element Titel = " Ein Sommertraum " type = "xs:string">	
	</xs:sequence>									
	<xs: complexType>									
 
31.12.2014 20:58 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

Hallo 123michi19!

Ich verstehe nicht, was Du mit "meinen Vorschlag für die Fehler" genau meinst. Du solltest doch einfach zuerst Fehler in der gegebenen Datei finden und nicht gleich alles anders schreiben.

Z. B. fehlt am Ende der Datei bei dem schließenden "Festplatte"-Tag offenbar ein "/", also statt
code:
1:
<Festplatte>
sollte wohl
code:
1:
</Festplatte>
dort stehen. Dann sind bei dem Wert des einzigen Attributs von "Festplatte" die doppelten Hochkomma offenbar vergessen worden. Dann heißt das Attribut beim ersten Festplatte-Tag Modellbezeichnung und beim zweiten Modell und so weiter...

Bei Deiner Datei würde ich auch einiges auszusetzen haben. Wenn Du mehrere Festplatten hast und ein einziges Wurzelelement haben möchtest (was durchaus sinnvoll ist), dann macht man normalerweise ein Tag mit dem Plural außenrum, also etwa:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<Festplatten>
  <Festplatte...>
  ...
  </Festplatte>
  <Festplatte...>
  ...
  </Festplatte>
</Festplatten>


Dann hast Du bei Deinem "Preis"-Tag einen Fehler. Ein Tag muss immer zuerst den Tag-Namen haben (der dann kein Gleichheitszeichen und einen Wert zugewiesen haben darf, also <Preis=..."> ist auf jeden Fall falsch) und dann erst die Namen-Wert-Paare von den einzelnen Attributen.
Generell bin ich skeptisch mit den Einheiten. Mal schreibst Du Attribute mit einem Wert und noch eines mit einer Einheit, mal einen String "7200 U/min" der ja auch aus einer Zahl und einer Einheit besteht, aber jetzt nicht mehr semantisch interpretiert werden kann (ein Computer würde nicht so einfach verstehen, dass es Einheiten sind und könnte nicht automatisch umrechnen, z. B.).

Generell ist es meistens vernünftig, die Einheit als Attribut des Tags zu nehmen und den Wert dann eben als Tag-Wert. Ob es da aber "verbindliche" Regeln gibt, weiß ich genau so wenig wie mit der Frage, was macht man als Unter-Element und was als Attribut.
Bei Zugriffszeit fehlt der schließende Tag (oder eben das "/" am Ende des Tags als Abkürzung).

Was aber irgendwie ganz falsch bei Deinem Vorschlag ist: Es geht hier um zwei verschiedene Festplatten! Eine Barracuda vom Hersteller Seagate und einer vom Hersteller Western Digital. Du hast jetzt bei Dir im Tag "Festplatte" die ganzen Angaben doppelt. Da weiß man doch gar nicht mehr, zu welcher der beiden Festplatten ein einzelner Wert jetzt gehört! Du musst schon für jede der beiden Festplatten einen Tag haben mit den Eigenschaften dann als Attribute und Unterelemente. Das ist ja sogar in der ursprünglichen Datei besser: Da gibt es zwei Festplatten-Tags, der erste wird geschlossen, bevor der zweite aufgemacht wird und alle Angaben, die zur ersten Festplatte gehören sind auch in dem Tag für die erste Festplatte drin.

Schau Dir das noch einmal genauer an!

Gruß
Marco
01.01.2015 22:32 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Erstsemester
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

Hallo,

habe diese Aufgabe mit XPath auch versucht und stelle fest, dass ich bei der Teilaufgabe c scheitere (a und b kein Problem)

Die Titel der Artikel von Susi Sonne

Habe jetzt folgendes versucht:

/Liste/Zeitschrift/Ausgabe/Artikel/Autor

Dann werden mir alle Autoren angezeigt. Jetzt müsste ich ja noch auf Susi Sonne eingrenzen und ihre Titel ausgeben.

Habe dann folgendes versucht um zumindest einmal die Titel aller Autoren zu bekommen, funktioniert aber laut Online XPath - Test nicht:

/Liste/Zeitschrift/Ausgabe/Artikel/Autor/Titel


Wo liegt denn mein Fehler?


Vielen Dank
22.01.2015 09:14
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Sonstige Fragen » XML - Verständnis