Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Vom XSD zum neuen XML (https://www.delphipraxis.net/182289-vom-xsd-zum-neuen-xml.html)

Sherlock 15. Okt 2014 15:00


Vom XSD zum neuen XML
 
Liste der Anhänge anzeigen (Anzahl: 3)
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

Dejan Vu 15. Okt 2014 16:25

AW: Vom XSD zum neuen XML
 
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.

jobo 15. Okt 2014 16:53

AW: Vom XSD zum neuen XML
 
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.

himitsu 15. Okt 2014 18:56

AW: Vom XSD zum neuen XML
 
Zitat:

Zitat von Dejan Vu (Beitrag 1276054)
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.

Sherlock 16. Okt 2014 07:42

AW: Vom XSD zum neuen XML
 
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

himitsu 16. Okt 2014 09:36

AW: Vom XSD zum neuen XML
 
Zitat:

Zitat von Sherlock (Beitrag 1276119)
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)

mjustin 16. Okt 2014 09:49

AW: Vom XSD zum neuen XML
 
Zitat:

Zitat von Sherlock (Beitrag 1276048)
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.)

Sherlock 16. Okt 2014 10:18

AW: Vom XSD zum neuen XML
 
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
Delphi-Quellcode:
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

mjustin 16. Okt 2014 10:29

AW: Vom XSD zum neuen XML
 
Zitat:

Zitat von Sherlock (Beitrag 1276143)
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.

Sherlock 16. Okt 2014 13:01

AW: Vom XSD zum neuen XML
 
Liste der Anhänge anzeigen (Anzahl: 2)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz