Frage von Zlatan1904, 17

Wie kann ich mithilfe von XSLT eine XML datei darstellen. Ich habe schon die fertige XML datei. Jetzt muss ich das ganze grafisch darstellen. Gebäudeplan->ZIEL?

Kann mir jemand sagen, wie ich die Räume mit xslt darstellen kann? es muss wie ein Gebäudeplan sein dort wo alle Zimmer drauf sind. Danke schonmal:)

Antwort
von grtgrt, 11

XSLT ist eine XML-basierte Skriptsprache, die XML-Texte zu analysieren und in irgendwelch andere Texte umzuformen gestattet.

Wenn deine XML-Datei einen Zimmerplan darstellt, enthält sie in XML dargestellte Information über Zimmer, ihren Zuschnitt und ihre relative Lage zueinander.

Mit Hilfe von XSLT kannst du diese Information der Datei entnehmen - wie die so entnommende Information dann aber in ein Bild (einen Zimmerplan) umzusetzen ist, musst du dir selbst überlegen, denn:

XSLT kann dir nicht sagen, wie du diese Daten zu einem Zimmerplan machen kannst. Dies zu tun musst du dich zunächst entscheiden, mit welcher Programmiersprache du den Plan erzeugen möchtest.

Erst dann kann entschieden werden, ob es Sinn macht und möglich ist, das entsprechende Programm mit Hilfe von XSLT aus XML zu erzeugen. 

Naheliegenster Kandidat für die Wahl dieser Programmiersprache scheint mir SVG zu sein (Scalable Vektor Graphics - eine XML-basierte Sprache zur Definition von 2D-Graphiken).

Vielleicht aber wäre ein CAD-Programm noch besser geeignet. Wenn ja, würde der Text, den du aus deiner XML-Datei mit Hilfe von XSLT zu machen hast, Input für dieses Programm sein müssen, d.h. nur die Dokumentation dieses CAD-Programms wird dir dann sagen können, was genau du per XSLT zu erzeugen haben wirst.

Kommentar von Zlatan1904 ,

ICH MUSS mit XML arbeiten.

<Gebäude name="Schule">

<Stock n="0" name="Erdgeschoss">

<Raum nummer="084" typ="Unterrichtsraum" sitz="Herr Mustermann/>

.................................und so weiter

so sieht meine XML aus jetzt muss ich sie noch grafisch darstellen!!!!

Kommentar von grtgrt ,

Zwingt dich jemand, das mit Hilfe von XSLT zu tun?

Kommentar von grtgrt ,

Mit anderen Worten: Würde es nicht reichen, den Plan mit irgend einem Graphikeditor von Hand zu erstellen?

Kommentar von Zlatan1904 ,

Ich muss auf jedenfall mit xml arbeiten

Kommentar von grtgrt ,

Schon, aber was genau meinst du denn damit?

Schließlich arbeitest du ja schon allein deswegen mit XML, weil die die Daten, welche die Zimmer beschreiben, in XML angeliefert werden (bzw. du sie nur in XML verfügbar hast). 

Kommentar von Zlatan1904 ,

Ja und deshalb ist meine Frage wie ich das grafisch darstellen muss welche infos sollte über die räume drin stehen?

Kommentar von grtgrt ,

Ob du alle oder nur einige der für jedes Zimmer in deiner XML-Datei enthaltenen Informationen in die Zeichnung mit übernehmen willst, entscheidest du alleine (oder der Lehrer, der dir die Aufgabe gestellt hat).

Die Graphik selbst zu erstellen - den Zimmerplan also - ist mit Sicherheit SVG die beste Möglichkeit. Schreibe diesen SVG-Text (er ist auch ein XML-Text) doch einfach von Hand.

Dies tun zu können, würde man aber erst mal von Hand einen Zimmerplan skizzieren, so dass dir klar wird, wie dein Zimmerplan denn nun eigentlich genau aussehen sollte. 

Kommentar von Zlatan1904 ,

könntest du mir ein beispiel schicken von svg und xml?

Kommentar von grtgrt ,

Ein solches Beispiel wäre https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/svg.svg ( dem XML-Text, der dieses Bild darstellt, kannst du einsehen, über die Funktion "Seitenquelltext anzeigen"  deines Browsers ).

Kommentar von grtgrt ,
Kommentar von Zlatan1904 ,

hab dir meine aufgabe geschickt

Kommentar von Zlatan1904 ,

das ist nicht das was ich suche

Kommentar von grtgrt ,

Habe die Aufgabenstellung gelesen. 

Sie verlangt überhaupt nicht das Erstellen eines Zimmerplans als Graphik, sondern sie verlangt das Erstellen der XML-Datei, welche die Zimmer beschreibt (das Erstellen der Datei also, von der du oben sagst, dass du sie schön hättest).

Du musst dir also zunächst ein Datenmodell überlegen, welches festlegt, welche Information genau deine XML-Datei enthalten soll:

Es wird dies sein müssen Information über jedes einzelne Zimmer (mindestens Länge, Breite und Lage der Türen, die aus dem Raum in Gänge führen, sowie entsprechende Information über die Gänge selbst, die als Fluchtwege in Frage kommen).

Dann musst du eine DTD formulieren, welches dieses Datenmodell auch seiner von dir gewünschten formalen Struktur nach beschreibt (so dass klar wird, welche Struktur genau für deine XML-Datei erlaubt sein soll).

Konform zu dieser DTD (Document Type Definition) muss dann dein XML formuliert sein.

Schließlich und endlich verlangt die Aufgabenstellung noch das Erstellen eines Programmes, welches, wenn aufgerufen, dir aus jedem Zimmer heraus jeden möglichen Fluchtweg in Freie nennt.

Zu diesem Zweck musst du dir erst mal überlegen, wie Text aussehen kann, der einen Fluchtweg beschreibt.

Dein Programm - nennen wir es Fluchtweg.exe - wird dann wohl zwei Parameter haben müssen: 

  • 1. Parameter: die Nummer des Zimmers, aus dem man fliehen möchte,
  • 2. Parameter: der Pfad hin zur XML-Datei, die alle Zimmer und Gänge im Haus beschreibt.

Wird das Programm aufgerufen, könnte es nach stdout (d.h. auf dem Bildschirm) den Text schreiben, der sämtliche Fluchtwege aus dem Zimmer heraus ins Frei beschreibt.

In der Aufgabenstellung steht nichts darüber, dass für die Erstellung des Programms eine ganz bestimmte Programmiersprache zu verwenden sei. Die also kannst du wohl selbst bestimmen.

Eine noch viel schönere Lösung wäre, wenn dein Programm, statt Text ins Konsolfenster zu schreiben, eine Bilddatei erzeugen und im Browser öffnen würde, welche die Gänge, durch die der Fluchtweg führt, zeigt. Das entsprechende Bild könnte durch dein Programm generierter SVG-XML-Text sein (sprich eine Datei Fluchtweg.SVG entsprechend der beiden Beispiele oben).

Kommentar von Zlatan1904 ,

könntest du mir vllt bitte ein beispiel zu einem zimmer schicken(also xml code) dass ich weiß wie ich es mir vorstellen muss:) aber ich kann doch nicht 400 zimmer ausmessen?

Kommentar von grtgrt ,

Na ja: Dieses kleine Projekt ist ja keine Hausaufgabe, von der man erwarten kann, dass du sie in einigen wenigen Stunden erledigen kannst. 

Kleiner Tipp noch: Man könnte jedes Zimmer (und die Lage der Türen) ja auch in einem 3-dimensionalen Koordinatensystem beschreiben. Länge und Breite festzuhalten wäre dann gar nicht notwendig - die Koordinaten der Ecken der Zimmer müsstest du aber schon in einem Plan finden oder eben selbst feststellen. Anders geht's sicher nicht.

Vorteil des Arbeitens mit Koordinaten wäre, dass so auch gleich die Lage der Zimmer relativ zueinander festgehallten ist.

Auf jeden Fall hast du hier ein ganz wunderschönes Projekt, an dem du viel lernen wirst. Details aber musst du natürlich schon selbst erarbeiten. 

Keine passende Antwort gefunden?

Fragen Sie die Community