AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Vom XSD zum neuen XML

Ein Thema von Sherlock · begonnen am 15. Okt 2014 · letzter Beitrag vom 17. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.355 Beiträge
 
Delphi 10.3 Rio
 
#1

Vom XSD zum neuen XML

  Alt 15. Okt 2014, 16:00
XE2

Ich muss aus einem XSD (im Anhang) ein XML erzeugen. Jetzt habe ich aus einigen Forenbeträgen herausgelesen, wie einfach das sein soll und scheitere dennoch. Ich muss nämlich eine AnzeigeLebendGeburtMed erzeugen und nicht nur eine AnzeigeGeburtMed, die halt nur die Oberklasse ist. Aber nur dafür wurde eine globale Erzeugerfunktion bereitgestellt. Muss ich an irgendeiner Option beim Import schrauben? Oder händisch das Ding herstellen (dann käme gleich das "Wie")?

Sherlock
Angehängte Dateien
Dateityp: xml AnzeigeLebendgeburtMed.xsd.xml (3,2 KB, 33x aufgerufen)
Dateityp: pas AnzeigeLebendgeburtMed.pas (35,4 KB, 35x aufgerufen)
Dateityp: xml AnzeigeGeburtMed.xsd.xml (9,2 KB, 18x aufgerufen)
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Vom XSD zum neuen XML

  Alt 15. Okt 2014, 17:25
Man erzeugt aus einer XSD keine XML sondern verwendet die XSD zum Validieren einer XML.

Du kannst aus einer Pascal-BNF ja auch nicht einfach das Pascal-Programm machen.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
2.670 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Vom XSD zum neuen XML

  Alt 15. Okt 2014, 17:53
Hab das schon lang nicht mehr gemacht mit Delphi und finde das Verfahren (XML /XSD) irgendwie gruselig. Und damit wären wir gleich beim Inhalt.

Kann es sein, dass AnzeigeGeburt mehr oder weniger das Gegenteil von AnzeigeLebendgeburt ist, also Totgeburt?
Ich hätte jetzt erwartet, dass sich da nur ein Flag oder so unterscheidet. Aber offenbar sind die Fälle <> Lebendgeburt viel komplizierter.
Falls AnzeigeGeburt wirklich eine Oberklasse ist, was mir auf Anhieb nicht so aussieht, müsstest Du mit einem Teil der aufgeführten Funktionen ja den anderen Fall > XML produzieren können und per zugehöriger XSD die Richtigkeit prüfen können.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.950 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Vom XSD zum neuen XML

  Alt 15. Okt 2014, 19:56
Man erzeugt aus einer XSD keine XML sondern verwendet die XSD zum Validieren einer XML.
Jupp, dafür ist ja auch das XSL (XSL-Transformation / XSLT) da, um z.B. eine XML in irgendwas umzuwandeln.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (15. Okt 2014 um 19:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.355 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Vom XSD zum neuen XML

  Alt 16. Okt 2014, 08:42
Aha, das ist interessant. Wie ist denn der Weg gültige XML zu erzeugen, wenn man nur ein XSD als Spezifikation erhalten hat?
Weil eigentlich wird das auch hier im Forum so beschrieben, wie ich mir das gedacht hatte...nur eben für den typischen Simpelfall à la Embarcadero (Buchladen, Buch).

@jobo: Die AnzeigeGeburt ist eine Oberklasse. Ich habe die AnzeigeTotGeburt jetzt einfach mal unterschlagen, um die Sache nicht zu komplex und deprimierend zu gestalten

@Dejan Vu: Muss ich wirklich erläutern, daß ich nicht umwandeln, sondern auf Grundlage des XSD ein XML mit Daten aus einer anderen Quelle erzeugen möchte?

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock (16. Okt 2014 um 08:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.950 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Vom XSD zum neuen XML

  Alt 16. Okt 2014, 10:36
Aha, das ist interessant. Wie ist denn der Weg gültige XML zu erzeugen, wenn man nur ein XSD als Spezifikation erhalten hat?
Umwandeln kann man damit eigentlich nicht.
Du kannst die XSD verwenden, um den gültigen Aufbau der XML zu prüfen und dann eventuell einen Fehler zu werfen
oder um ungültige Dinge aus der XML zu entfernen.


Delphi nutzt z.B. eine XSL um den DokInsight-Kommentar in eine HTML umzuwandeln.
> XML nehmen, per XSL-Befehlen eine neue Ausgabe erzeugen (XML mit anderem Aufbau oder einfach nur nach bestimmten Kriterien gefiltert, Text, HTML oder sonstwas)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.742 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Vom XSD zum neuen XML

  Alt 16. Okt 2014, 10:49
XE2

Ich muss aus einem XSD (im Anhang) ein XML erzeugen.

Sherlock
Der Quelltext im Anhang wurde mit dem Data Binding Wizard (Enterprise / Architect) erzeugt?

Einfacher und ab Professional finde ich den Web über den Schema Binding Wizard, um aus dem XSD die Mappingklassen zu erstellen.

Der dadurch erzeugte Quelltext ist dann zwar nicht unmittelbar TDataset-Kompatibel, aber zum Aufbauen von XML Dateien brauchbar.

(XSD ist nicht nur für's Validieren geeignet.)
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.355 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Vom XSD zum neuen XML

  Alt 16. Okt 2014, 11:18
Also ich glaube ich habe mich vollumfänglich blöd ausgedrückt. Ich probiere es nochmal und stelle noch ein paar Anmerkung vorweg:
1. die .xml in meinem anhang sind reine xsd, die ich um ein .xml im Namen erweitert habe, damit ich sie hochladen konnte.
2. Ich habe aus den xsd per Datei -> Neu -> Weitere -> XML-Datenbindung die angehängte .pas erzeugt.
3. Ich möchte eine XML Datei auf Grundlage der Spezifikation in der XSD mit Daten aus einer dritten Quelle befüllen

Jetzt mein Problem. Ich kann die .pas nicht verwenden, um das geforderte Objekt zu erzeugen. Ich brauche ein TXMLAnzeigeLebendgeburtMed, das von diesem Typ ist
TXMLAnzeigeLebendgeburtMed = class(TXMLAnzeigeGeburtMed, IXMLAnzeigeLebendgeburtMed) . Der generierte Code bietet mir lediglich eine Konstruktorenmethode für das TXMLAnzeigeGeburtMed. Das kann ich aber nicht gebrauchen, da ich die eben erwähnte Subklasse erzeugen muss. Wie muss ich vorgehen? XML per xsd oder Wizard oder wie auch immer das genannt werden möchte ist für mich neu. Bisher habe ich die XML selber erstellt. Das ist diesmal aber nicht ohne weiteres möglich.

Es kann doch nicht sein, daß es nur Methoden gibt XML einzulesen.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.742 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Vom XSD zum neuen XML

  Alt 16. Okt 2014, 11:29
2. Ich habe aus den xsd per Datei -> Neu -> Weitere -> XML-Datenbindung die angehängte .pas erzeugt.
Hier kann, wenn ich mich richtig erinnere, im Wizard ein Fehler gemacht werden: man hat die Möglichkeit ein Root-Element festzulegen. Das hier gewählte Element wird dann das Element, für das die Erzeugungsmethode im Quelltext erstellt wird. Hierbei würde man dann TXMLAnzeigeLebendgeburtMed wählen.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.355 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Vom XSD zum neuen XML

  Alt 16. Okt 2014, 14:01
In der Tat stellt der Wizard nur eine Frage, nämlich nach dem Namen des Dokumentelemttyps. Siehe Screenshots. Da kann ich im Prinzip angeben was ich will, es wird immer ein AnzeigeGeburtMed daraus erzeugt.

Das ist doch irgendwie ein wenig frustrierend.

Sherlock
Miniaturansicht angehängter Grafiken
2014-10-16_13h54_58.png   2014-10-16_13h55_12.png  
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf