Veröffentlicht 13. April 201015 j Hallo allerseits, ich habe eine Frage zu xslt. Ich möchte ein csv-file in ein xml umwandeln. dabei möchte ich in einem Zwischenschritt eine Prüfung einbauen, ob das csv-file einem bestimmten Format genügt und dannd ie Konvertierung durchführen. Für den Fall xml2xml tut dies xslt wenn ich das richtig sehe. Gibt es auch eine Möglochkeit für csv2xml? ... eventuell existiert dafür ja auch eine andere Technologie als xslt, jedenfalls brauche ich am Ende des Tages ein script welches ich laufen lassen kann. Danke schon einmal, Gruß schlumsch
13. April 201015 j csv2xml - A csv to xml converter Sollte damit doch eigentlich funktionieren... oder hast du spezielle Anforderungen?
13. April 201015 j Ja nee, spezielle Anforderungen habe ich nicht, nur eben das ich ein script brauche welches ich auf meinem server laufen lassen kann. Sprich ein Prgoramm, sei es auch Freeware, welches ich starten muss bringt mir nichts
13. April 201015 j Ok, nun habe ich ein weiteres Problem. Die pure Übersetzung von csv in xml ist erstmal klar. Nun müsste ich allerdings zuvor noch eine Formatprüfung durchführen ob das cvs-file zu dem von mir später verwendeten Datenformat kompatibel ist. Ich habe quasi ein csv in welchem jede Zeile einen abgeschlossenen Datensatz repräsentiert. An einer bestimmten Position der Zeile, z.b. Element 3, steht ein String welcher definiert wieviele Attribute der Datensatz haben darf und welche Bedeutung diese haben. Kann (wie?) ich vor der Umwandlung in xml eben dieses prüfen?
13. April 201015 j Mit xslt kommst du da nicht weiter. Am einfachsten geht sowas mit einem php/perl etc script. Willst du eine xml Datei erstellen oder das ganze direkt als xml ausgeben? ***Hässlichs mini script*** <?php //Datei Zeilenweise einlesen $lines = file('foo.csv'); for($i=0;$i<count($lines);$i++){ //Jede zeile in Felder zerlegen $lines[$i] = explode(',',$lines[$i]); //überprüfen ob die Anzahl an feldern stimmt if(count($lines[$i])!=3) Die("Fehler in CSV Datei"); } echo "<root>"; for($i=0;$i<count($lines);$i++){ echo "<name>{$lines[$i][0]}</name><age>{$lines[$i][1]}</age><sex>{$lines[$i][2]}</sex>"; } echo "</root>"; ?> ***Beispiel csv*** name, alter, geschlecht Kurt, 27, m Karla, 24, w ***Beispiel xml** <root><name>name</name><age> alter</age><sex> geschlecht </sex><name>Kurt</name><age> 27</age><sex> m </sex><name>Karla</name><age> 24</age><sex> w</sex></root>
13. April 201015 j Kann (wie?) ich vor der Umwandlung in xml eben dieses prüfen? In CSV nicht, da CSV keine Typen kennt. Ich würde nach der Konvertierung (obwohl ich auch die Konvertierung von CSV nach XML etwas skeptisch sehe), die XML prüfen, ob sie einem entsprechenden Schema genügt, damit kannst Du dann auch Datentypen und -strukturen validieren
13. April 201015 j Die überprufung musst du dann halt in die erste for schleife packen. Was soll das denn für ein string sein?
13. April 201015 j Ich habe ein csv in welchem zum Beispiel eine Zeile so aussieht: 01|02|ObjektXYZ|03|04 daraus soll werden: <ObjektXYZ> <Bedeutung1> <01> </Bedeutung1> <Bedeutung2> <02> </bedeutung2> ... </ObjektXYZ> Zusätzlich will ich noch vorher prüfen, wie viele Attribute das Objekt insg. hat und ob dies zulässig ist. (Ich habe also mehrere verschiedene Objekte mit unterschiedlichen Attributen etc.) Mein resultierendes xml dient als Import für eine andere Applikation. Da ich nun allerdings nicht jedesmal wenn sich mein Auftraggeber zu einer Formatänderung entscheidet meine ganze Applikation umschreiben will, möchte ich diese Prüfung und xml-Erstellung der Applikation voraus laufen lassen.
13. April 201015 j Da ich nun allerdings nicht jedesmal wenn sich mein Auftraggeber zu einer Formatänderung entscheidet meine ganze Applikation umschreiben will, möchte ich diese Prüfung und xml-Erstellung der Applikation voraus laufen lassen. Was spricht dagegen auf Deine CSV das genannte Tool anzuwenden, die daraus resultierende XML mit XSLT in eine andere XML (passend für die Applikation) umzuwandeln und die XML Dateien mittels Schema zu validieren !?
13. April 201015 j Ja das dachte ich auch schon und darauf wird es wohl hinauslaufen. Als absoluter neuling in xslt muss ich da gleich nochmal nachfragen - mit xslt kann ich dann den von mir unten beschriebenen Sachverhalt umsetzen? Also zum Beispiel Anhand des 3ten Strings in einer Zeile überprüfen wie viele Strings die Zeile insgesammt hat und diese dann um weitere Elemente anreichern?
13. April 201015 j Also zum Beispiel Anhand des 3ten Strings in einer Zeile überprüfen wie viele Strings die Zeile insgesammt hat und diese dann um weitere Elemente anreichern? XSL Transformation ? Wikipedia XSLT ist nicht auf eine CSV anwendbar !
13. April 201015 j steht das entscheidende Objekt immer an der gleichen stelle(z.B immer der dritte Eintrag? Hast du mit Erfahrung mit Scripts?
13. April 201015 j mein neuester Wissensstand Du sollst hier nicht irgendwelche Bruchstücke posten und darauf hoffen, dass Dir jemand diese Bruchstücke zusammensetzt, denn das ist Deine Aufgabe. 1. Du hast eine CSV (hierzu bitte ein Bsp). 2. Du hast dann aus dieser CSV eine XML mit Hilfe des Tools erstellt (hierzu auch Bsp erstellen). 3. Wie sieht diese XML aus? aus 3 folgt dann eine Struktur und aufgrund folgt dann eine Prüfung und wie sieht diese Prüfung aus?
14. April 201015 j Ich glaube du hast mich da missverstanden. Ich wollte nicht das du/ihr mir den Link übersetzt. Ich wollte damit zum Ausdruck bringen, dass man wohl doch mit xslt 2.0 csv in xml übersetzen kann, das wars schon. Genau das werde ich nun versuchen, wenn mir da jemand helfen will poste ich natürlich gerne mein csv-file *g*
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.