fjh: Wozu braucht man das targetNamespace-Attribut?

Beitrag lesen

Hi, fjh

*g* Ich arbeite grad an einem WebService Projekt, von daher hast du mir nicht wirklich was neues erzählt *gg*

Hm, interessant. Worum gehts denn. Erzähl doch mal ein wenig, wenn Du Lust hast und darfst.

Was hat aber targetNamespace in meinem XML- (korrekt erkannt, eigentlich: WSDL-)Dokument zu suchen? Weil den default Namespace für das Dokument leg ich meines Wissens nach mit xmlns="URI" fest. Und wie gesagt, den Namespace von dem Webservice leg ich nach Standart mit xmlns:tns="URI" fest, wobei tns auch targetNamespace heisst, soweit ich weiss. *grübel*

WSDL nutzt XML-Schema zur Beschreibung der *Struktur* eines Web Services, d.h. in einer WSDL-Datei gibt es eine Sektion

<types>
...
</types>

in der das Schema einer Message (SOAP, HTTP oder was auch immer für ein Protokoll-Binding für den Web-Service verwendet wird) definiert wird.

Z.B.

<types>
  <schema targetNamespace="http://meinNamensraum/schema.xsd">
    <element name="Methodenaufruf">
      <complexType>
        ...
      </complexType>
    </element>
  </schema>
</types>

Definiert würde hier ein Element namens "Methodenaufruf", Dieses Element wird über targetNamespace dem Namensraum "http://meinNamensraum/schema.xsd" zugeordnet.

Nutzt du dieses Element nun z.B. in einem <message>-Tag Deiner WSDL-Datei, dann muss es dort ein Namensraumpräfix erhalten, das den targetNamespace vertritt:

<message name="RufeMethodeAuf">
  <part name="body" element="schema1:Methodenaufruf">
</message>

Und in deinem <definitions>-Element steht dann die Deklaration dieses Namensraums

<definitions .....
        xmlns:schema1="http://meinNamensraum/schema.xsd">

Es ist also beim targetNamespace was anderes als mit der Namensraumdeklaration. Über targetNamespace gibst Du den Namensrauman, zu dem alle deklarierten Elemente des Schemas bzw. auch der WSDL-Datei gehören. Mit der Namensraumdeklaration ordnest du ein Präfix diesem Namensraum zu, was Du dann benutzt, um die Elemente als aus einem Namensraum stammend zu bezeichnen.

Gruß
Franz