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