Hallo!
XML-Dokumente bestechen ja unter anderem auch dadurch, dass man ohne große Kenntnisse deren Aufbau verstehen und Nachbilden kann. Jetzt stellen sich mir aber doch einige Fragen.
1. Es gibt ja diese CDATA Markierungen. Laut Wikipedia dienen diese dazu, den gekapselten Inhalt aufjedenfall als Text anzuerkennen, auch wenn er aus Steuerzeichen besteht.
Wenn ich nun z.B. eine Bücherverwaltung schreiben möchte und auch Buchtitel wie "Math > Me" darin vorkommen, sollte ich dann die Buchtitel im <title>-Element aufjedenfall mit CDATA kapseln?
Also wenn ich den Wiki-Artikel richtig deute, dann aufjedenfall schon. Allerdings habe ich vor kurzem im Netz eine Radiosender-Playlist entdeckt, welche durch PHP aus XML generiert wurde und dann in HTML gegossen wurde. Da waren auch Titel mit "<" dabei, und ich kann definitiv ausschließen, dass in der Quell-XML CDATA benutzt wurde. Warum hat das trotzdem funktioniert? Hat das die entsprechende PHP-Funktion einfach nicht gejuckt, dass das Dokument genaugenommen nicht valid ist?
2. Sind <, > und & alle Steuerzeichen, oder muss man noch auf andere aufpassen? Gilt cdata nur für Element-Inhalte, oder muss man auch Attribute bei Bedarf so kapseln?
3. Sehe ich das richtig, dass man XML-Dateien nicht einfach so erzeugen kann, wenn unbekannte Strings darin gespeichert werden sollen - selbst wenn man CDATA zur Absicherung benutzt?
Was ich mir konkret als Problem vorstelle:
Ich möchte String-Felder aus einer Datenbank in einem XML-Dokument abspeichern, von mir aus mittels PHP. Da die Strings in der Datenbank Steuerzeichen enthalten können, verwende ich in XML also CDATA an den entsprechenden Stellen. Wenn jetzt zufälligerweise ein String aus der DB das CDATA Close-Tag "]]>" enthält, machts aber trotzdem Bumm, oder?
Sprich: automatisch XML generieren ohne vorher den Inhalt zu überprüfen ist nicht drin?
4. Noch eine Frage zur Kodierung. Wenn ich das Dokument in UTF-8 abspeichere, kann es ja Problemlos ä, ö, ü und Co. enthalten.
Wenn jetzt eine aufrufende Stelle das XML zwischenspeichert - allerdings in mit einer anderen Kodierung - dann sind die Umlaute ja dahin (zumindest, solange nicht wieder UTF-8 verwendet wird). Folglich steht irgendein Kauderwelsch da.
Ist es möglich, dass dieses Kauderwelsch (aufgrund der falschen Kodierung) nun zufällig ausgerechnet XML-Steuerzeichen enthält und das Dokument somit invalid macht?
Sprich, das Dokument ist nichtmehr gültig, obwohl nur die Kodierung, nicht aber der Inhalt verändert wurde.
Danke
XML-Dokumente bestechen ja unter anderem auch dadurch, dass man ohne große Kenntnisse deren Aufbau verstehen und Nachbilden kann. Jetzt stellen sich mir aber doch einige Fragen.
1. Es gibt ja diese CDATA Markierungen. Laut Wikipedia dienen diese dazu, den gekapselten Inhalt aufjedenfall als Text anzuerkennen, auch wenn er aus Steuerzeichen besteht.
Wenn ich nun z.B. eine Bücherverwaltung schreiben möchte und auch Buchtitel wie "Math > Me" darin vorkommen, sollte ich dann die Buchtitel im <title>-Element aufjedenfall mit CDATA kapseln?
Also wenn ich den Wiki-Artikel richtig deute, dann aufjedenfall schon. Allerdings habe ich vor kurzem im Netz eine Radiosender-Playlist entdeckt, welche durch PHP aus XML generiert wurde und dann in HTML gegossen wurde. Da waren auch Titel mit "<" dabei, und ich kann definitiv ausschließen, dass in der Quell-XML CDATA benutzt wurde. Warum hat das trotzdem funktioniert? Hat das die entsprechende PHP-Funktion einfach nicht gejuckt, dass das Dokument genaugenommen nicht valid ist?
2. Sind <, > und & alle Steuerzeichen, oder muss man noch auf andere aufpassen? Gilt cdata nur für Element-Inhalte, oder muss man auch Attribute bei Bedarf so kapseln?
3. Sehe ich das richtig, dass man XML-Dateien nicht einfach so erzeugen kann, wenn unbekannte Strings darin gespeichert werden sollen - selbst wenn man CDATA zur Absicherung benutzt?
Was ich mir konkret als Problem vorstelle:
Ich möchte String-Felder aus einer Datenbank in einem XML-Dokument abspeichern, von mir aus mittels PHP. Da die Strings in der Datenbank Steuerzeichen enthalten können, verwende ich in XML also CDATA an den entsprechenden Stellen. Wenn jetzt zufälligerweise ein String aus der DB das CDATA Close-Tag "]]>" enthält, machts aber trotzdem Bumm, oder?
Sprich: automatisch XML generieren ohne vorher den Inhalt zu überprüfen ist nicht drin?
4. Noch eine Frage zur Kodierung. Wenn ich das Dokument in UTF-8 abspeichere, kann es ja Problemlos ä, ö, ü und Co. enthalten.
Wenn jetzt eine aufrufende Stelle das XML zwischenspeichert - allerdings in mit einer anderen Kodierung - dann sind die Umlaute ja dahin (zumindest, solange nicht wieder UTF-8 verwendet wird). Folglich steht irgendein Kauderwelsch da.
Ist es möglich, dass dieses Kauderwelsch (aufgrund der falschen Kodierung) nun zufällig ausgerechnet XML-Steuerzeichen enthält und das Dokument somit invalid macht?
Sprich, das Dokument ist nichtmehr gültig, obwohl nur die Kodierung, nicht aber der Inhalt verändert wurde.
Danke
Kommentar