Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Ableitung eines Abstract Types instanziieren (https://www.delphipraxis.net/186963-ableitung-eines-abstract-types-instanziieren.html)

Sherlock 16. Okt 2015 12:06

Ableitung eines Abstract Types instanziieren
 
Ich kämpfe mit der Erzeugung eines SOAP-Envelopes. Mir zur Verfügung steht eine WSDL, die einen Stapel XSD referenziert. Ich habe ein konkretes Problem bei der korrekten Erzeugung eines Knotens. Hier mal ein Auszug aus den Definitionen:
Code:
   <xsd:element name="Request" type="Request" />
   <xsd:complexType name="Request">
      <xsd:sequence>
         <xsd:element ref="ClientInfo" />
         <xsd:element ref="WorkflowInfoRequest" />
         <xsd:element name="RequestDetail" type="RequestDetail" />
      </xsd:sequence>
      <xsd:attribute name="schemaVersion" type="xsd:decimal" use="required" fixed="1.0" />
   </xsd:complexType>

   <xsd:complexType name="RequestDetail" abstract="true" />
In einer anderen XSD dann
Code:
   <xsd:element name="AnzeigeGeburtRequest" type="AnzeigeGeburtRequest"/>
   <xsd:complexType name="AnzeigeGeburtRequest">
      <xsd:complexContent>
         <xsd:extension base="AnzeigeRequest">
            <xsd:sequence>
               <xsd:element ref="AnzeigeGeburt"/>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
Ein gültiges XML würde dann zum Beispile beinhalten:

Code:
<ns3:RequestDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns3:AnzeigeGeburtRequest">
            <ns3:AnzeigeGeburt>
               <ns3:EntityInfo>
                  <ns3:SourceSystem>ZPS</ns3:SourceSystem>
                  <ns3:Zeitpunkt />
                  <ns3:DurchgefuehrtVon>
Hier nun mein Problem: Wie bekomme ich Delphi beigebracht, daß der Knoten RequestDetail genauso wie im Beispiel auszusehen hat? Der SOAP Assistent bringt mir übrigens nicht, da ich den Soap-Envelope als XML-Datei an ein anderes Programm geben muss, und die ObjectTosOAP-Methode in einen Schemafehler läuft. Darum habe ich den SOAP-Anteil entfernt und die XSDs selbst per Assistenten eingebunden. Das klappt weitestgehend bisher, nur bekomme ich eben diese Abstrakt nach Konkretisierung nicht geregelt.
Ich versuche zB:

Delphi-Quellcode:
  einRequest.RequestDetail.DeclareNamespace('xsi', XSI_NS);
  einRequest.RequestDetail.SetAttributeNS('xsi:type', '',TYPE_GEBURT);
Und bekomme mit Ausführung der zweiten Zeile den foglenden Fehler:
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt GebDat_QS.exe ist eine Exception der Klasse EOleException mit der Meldung 'Verweis auf ein nicht deklariertes Namespace-Präfix: 'xsi'' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Ich bin in XML so gar nicht versiert...eventuell gibt es hier aber jemanden, der mir helfen kann?

Gruß,
Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.

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