XML Tool gesucht

Hallo

Ich verwende verschiedene OpenSource Tools für das Reengineering von z.B. Datenbanken (DBDesigner) oder C++ Source (Umbrello) unter Linux.
Dabei tritt immer das gleiche Problem auf. Füge ich ein neues bestehendes Objekt oder eine neue bestehende Tabelle einem bereits gespeicherten UML- bzw. ERD- Diagramm hinzu, muss ich mit der Formatierung (X-/Y- Position) immer wider von neuem beginnen.
Beide Tools erzeugen beim Speichern XML- Dateien. Diese XML- Dateien habe ich mir einmal genauer angesehen. Folgendes habe ich gefunden:

etc.

Nun dachte ich, ich könne alle diese Table ID’s oder auch die Object ID’s herausfiltern (inkl. Name, XPos und YPos) und in einer Backupdatei speichern. Nach erneutem Reengineering, bei dem die Formatierung Flöten geht, möchte ich nun mit dieser Backupdatei die alten X-/Y- Positionen zurück schreiben. So müsste ich nur die neuen Objekte bzw. Tabellen neu positionieren.

Wie mach ich das? Gibt es ein Tool, das so was kann?

Dank und Gruss.
Olli

hallo olli,

ich kenne kein tool das dies macht, weiss aber auch nicht, was du mit ‚tool‘ meinst, wie einfach das sein soll etc.

was du aber machen kannst ist dir ein xslt zu schreiben, das deinen zweck erfüllt. das würde dann deine ge-back-up-te datei und die neu erzeugte datei nehmen, beide vergleichen und bei übereinstimmender id die attribute die du beibehalten willst in das zugehörige xml-element der neuen datei schreiben / die dortigen ersetzen.

das ist einfach, wenn man weiss wies geht…

jetzt weiss ich nicht ob dir das hilft, ob du weisst wovon ich rede. wenn nicht, kannst du dich gerne nochmal melden…

hth,

stefan

hallo stefan

die idee verstehe ich, aber bei der ausführung happert es noch.
ok, ich werde mal zwei xml-beispiel-dateien posten:

// backup
<?xml version="1.0" standalone="yes" ?>

// neu

<?xml version="1.0" standalone="yes" ?>

der unterschied besteht in der XPos und YPos.
nun meine fragen:

  • muss ich erst ein stylesheet schreiben, weil ja standalone=„yes“ steht?
  • welches tool (program) übernimmt das transformieren (zusammenfügen) der beiden xml-dateien?

das ist einfach, wenn man weiss wies geht…

das ist ja das problem :wink: aber mir reicht oft ein kleines „hallo welt mässiges“ beispiel, ein doku (so wie diese: http://www.w3schools.com/xsl/xsl_languages.asp … werde ich mal durcharbeiten ) und etwas zeit, um solche probleme zu lösen.

jetzt weiss ich nicht ob dir das hilft, ob du weisst wovon ich
rede. wenn nicht, kannst du dich gerne nochmal melden…

vielen dank für deine hilfe.
gruss, olli

hallo olli,

glückwunsch, das habe ich bisher noch nie egsehen, dass jemand den text so breit bekommt, dass man den antwort-schreiben link nicht mehr sieht :wink:

die idee verstehe ich, aber bei der ausführung happert es
noch.

das hatte ich vermutet und daher vorsichtig formuliert…

erst mal meine standard hilfe-seite:
http://www.zvon.org/xxl/XSLTutorial/Output/index.html

ok, also erst mal musst du auf beide xml-dateien zugreifen. die eine übergibst du auf der kommando-zeile für deine transformation, die andere zb. so im xslt angeben:

(die datei muss dann parallel zur xslt liegen!)
dann kannst du über:

auf die knoten zugreifen.

jetzt könntest du mit

über alle elemente deines kommandozeilen-xml-docs iterieren.

innerhalb holst du dir dann aus dem anderen das element mit dergleichen ID, also:

dann könntest du diese beiden konten mit identischer id einem template übergeben, das ungefähr so aussieht:

so, dir bleibt jetzt noch die denkaufgabe, evtl. das styleshet nicht so flach zu schreiben wie ich es hier angedeutet habe (kann sein, dass so die hierarch. struktur deines xml durcheinander kommt, die elemente ohne id werden so zb. gar net mehr herausgeschrieben.

  • muss ich erst ein stylesheet schreiben, weil ja
    standalone=„yes“ steht?

hm, ich verstehe die frage nicht so ganz…

  • welches tool (program) übernimmt das transformieren
    (zusammenfügen) der beiden xml-dateien?

das tool ein sog. parser musst du downloaden. beliebt sind (bei mir :wink: xalan und saxon (sagt die michael kay was…der nette ‚opi‘ auf den xml/xslt-büchern?, der steckt hinter saxon). der 6.5.5er gibts bei:
http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip

hier mein real-life beispiel für die kommandozeile die du nach dem download (java muss auf deiner kiste sein) aufrufst:
java -jar C:\Programme\saxon\Java\old\saxon.jar -o transformiertes.xml ausgangs.xml deinGenialesStylesheet.xsl

das ist ja das problem :wink: aber mir reicht oft ein kleines
„hallo welt mässiges“ beispiel, ein doku (so wie diese:
http://www.w3schools.com/xsl/xsl_languages.asp … werde ich
mal durcharbeiten ) und etwas zeit, um solche probleme zu
lösen.

vermutlich habe ich dir genügend stichworte gegeben. wie gesagt, die hierarchie und die non-id elemente wieder ins ausgabe dokument zu bekommen ist jetzt dein job :wink:

wobei, ich hab da noch was, ein namensvetter von dir hat ein ziemlich geniales stylesheet geschrieben, das zwei xml-files merged, ich vermute, dass du dir von dort hilfe bei der hierarchie geschichte abgucken kannst:
http://www2.informatik.hu-berlin.de/~obecker/XSLT/me…

viel glück!

stefan

glückwunsch, das habe ich bisher noch nie egsehen, dass jemand
den text so breit bekommt, dass man den antwort-schreiben link
nicht mehr sieht :wink:

Hmmm … muss wohl am

HTML-Tag liegen.

erst mal meine standard hilfe-seite:
http://www.zvon.org/xxl/XSLTutorial/Output/index.html

Guter Link, werde ich gleich zu meinen Bookmarks hinufügen.

muss ich erst ein stylesheet schreiben, weil ja
standalone=„yes“ steht?

hm, ich verstehe die frage nicht so ganz…

Hat sich erledigt.

  • welches tool (program) übernimmt das transformieren
    (zusammenfügen) der beiden xml-dateien?

das tool ein sog. parser musst du downloaden. beliebt sind
(bei mir :wink: xalan und saxon (sagt die michael kay was…der
nette ‚opi‘ auf den xml/xslt-büchern?, der steckt hinter
saxon). der 6.5.5er gibts bei:
http://prdownloads.sourceforge.net/saxon/saxon6-5-5.zip

Mit einem XML-(DOM vermutlich)-Parser also.

hier mein real-life beispiel für die kommandozeile die du nach
dem download (java muss auf deiner kiste sein) aufrufst:
java -jar C:\Programme\saxon\Java\old\saxon.jar -o
transformiertes.xml ausgangs.xml deinGenialesStylesheet.xsl

Habe Linux, da gitbes kein „C:“, der Parser ist auch gleich mit dabei.

Danke Stefan, für die Infos. Ich denke ich weiss jetzt genug, um loslegen zu können.

Gruss, Olli