Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

WSDL - jak zdefiniować wymagalność conajmniej jednego pola

296 views
Skip to first unread message

poshbilly

unread,
Oct 1, 2009, 3:48:31 AM10/1/09
to
Witam,
Muszę wystawić WSDL i mam problem z jedną sprawą.
Mianowicie nie wiem jak zdefiniować w WSDL, że w przypadku trech pól
conajmniej jedno jest wymagane.
Nie chciałbym obsługiwać tego w webServicie, mam nadzieję, że da to
się załatwić w definicji WSDLa.

<docRequest>
<email></email>
<telefon></telefon>
<miasto></miasto>
</docRequest>
Conajmniej jedno z pól email, telefon, miasto musi zostać wypełnione


Dziękuję za pomoc.

bsodzik

unread,
Oct 1, 2009, 6:56:25 AM10/1/09
to

Osobiście uważam że Twoje podejście jest trochę bez sensu. WSDL to
tylko pewna definicja która pomaga wołać webserwisy, ale tak na prawdę
w ogóle nie jest potrzebna do wołania owych usług. Jak ktoś będzie
chciał to i tak sobie zawoła Twoją usługę bez WSDLa. Zmierzam do tego,
że walidację powinieneś zrobić właśnie po stronie usługi, a w WSDLu
najwyżej dopisać obsługę odpowiednich wyjątków.
A jeśli mimo wszystko chcesz to zrobić po stronie WSDLa to ja nie wiem
jak takie coś zrobić ;)

Pozdrawiam, Tomek

Waldek Kot

unread,
Oct 1, 2009, 8:54:29 AM10/1/09
to
On Oct 1, 9:48 am, poshbilly <jarek...@gmail.com> wrote:
> Mianowicie nie wiem jak zdefiniować w WSDL, że w przypadku trech pól
> conajmniej jedno jest wymagane.

Cześć,

Tego rodzaju rzeczy nie definiuje się w WSDLu (z różnych powodów,
choćby takiego, że usługi opisane za pomocą dokumentów WSDL mogą
wymieniać komunikaty o dowolnej strukturze - nie tylko XML, a i te
komunikaty mogą być opisane za pomocą dowolnych języków - nawet w
przypadku XML nie musi to być tylko XML Schema). To co chcesz zrobić
odnosi się do schematu dokumentu XML, czyli jedną z właściwych
technologii będzie tu XML Schema.

Oczywiście, WSDL będzie się odnosił do tego schematu, więc koniec-
końców ta informacja będzie "w WSDL" :-)
Nawet jeśli miałbyś taką walidację obsługiwać (lub nie) "w
webService", to i tak warto informację o wymaganych typach przekazać w
WSDL, bo WSDL to kontrakt między klientem usługi a jej dostawcą -
upraszczam trochę, ale WSDL można rozumieć jako interfejs plus
dodatkowe informacje (security, itp.). Im bardziej kontrakt
precyzyjny, tym lepiej (będziesz mieć mniej telefonów od ludzi
chcących z Twojego web service'u skorzystać).

Weź także pod uwagę, że najczęściej implementacje web service'ów
domyślnie nie dokonują walidacji komunikatów - trzeba tę walidację
włączyć (dodatkowo walidację może robić zarówno web service klient,
jak i web service provider - także jednocześnie).

Pozdrawiam,
Waldek Kot

yacoll

unread,
Oct 1, 2009, 4:55:41 PM10/1/09
to
poshbilly pisze:

> Mianowicie nie wiem jak zdefiniowa� w WSDL, �e w przypadku trech p�l


Hej!

Po kr�tkim research'u: takie co� powinno da� rad�:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="docRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="opcje" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:group name="opcje">
<xsd:choice>
<xsd:element name="email"/>
<xsd:element name="telefon"/>
<xsd:element name="miasto"/>
</xsd:choice>
</xsd:group>
</xsd:schema>

W grupie "opcje" wyst�pi dok�adnie jedna z trzech mo�liwo�ci
(xsd:choice). minOccurs w xsd:group wymusza przynajmniej jeden element.

Pozdrawiam!

--
yacoll
$> cd pub
$> more beer

poshbilly

unread,
Oct 2, 2009, 10:41:04 AM10/2/09
to

> W grupie "opcje" wystąpi dokładnie jedna z trzech możliwości

> (xsd:choice). minOccurs w xsd:group wymusza przynajmniej jeden element.
>
> Pozdrawiam!

Dziękuję za konkretną odpowiedz, właśnie tego potrzebowałem.
Pozdrawiam!

Filozof71

unread,
Oct 6, 2009, 12:30:48 PM10/6/09
to
Hej,

Nie wiem jak to sie ma do WSDL, ja robi�em tak� konstrukcje w XSD:

<xs:choice>

<xs:sequence>

<xs:element name="email" maxOccurs="1" minOccurs="1"></xs:element>
<xs:element name="telefon" maxOccurs="1"
minOccurs="0"></xs:element>
<xs:element name="miasto" maxOccurs="1"
minOccurs="0"></xs:element>

</xs:sequence>

<xs:sequence>

<xs:element name="telefon" maxOccurs="1"
minOccurs="1"></xs:element>
<xs:element name="miasto" maxOccurs="1"
minOccurs="0"></xs:element>
<xs:element name="email" maxOccurs="1" minOccurs="0"></xs:element>

</xs:sequence>

<xs:sequence>

<xs:element name="miasto" maxOccurs="1" minOccurs="1"></xs:element>
<xs:element name="email" maxOccurs="1" minOccurs="0"></xs:element>
<xs:element name="telefon" maxOccurs="1"
minOccurs="0"></xs:element>

</xs:sequence>

</xs:choice>

i by�em zadowolony ze mi sie walidacja z automatu robi.

pozdr Filozof71

U�ytkownik "poshbilly" <jare...@gmail.com> napisa� w wiadomo�ci
news:af260920-e014-41a9...@c28g2000yqd.googlegroups.com...
Witam,
Musz� wystawi� WSDL i mam problem z jedn� spraw�.
Mianowicie nie wiem jak zdefiniowa� w WSDL, �e w przypadku trech p�l
conajmniej jedno jest wymagane.
Nie chcia�bym obs�ugiwa� tego w webServicie, mam nadziej�, �e da to
si� za�atwi� w definicji WSDLa.

<docRequest>
<email></email>
<telefon></telefon>
<miasto></miasto>
</docRequest>

Conajmniej jedno z p�l email, telefon, miasto musi zosta� wype�nione


Dzi�kuj� za pomoc.


0 new messages