SOAP Webサービスを勉強しています。Webサービスは初めてです。WSDLでは、定義のtargetNamespace
要素とnamespace
はxsd:schema
に含まれます。
<definitions .... targetNamespace=" " >
<xsd:schema>
<xsd:import namespace=" " schemaLocation=""/>
</xsd:schema>
これらの2つの要素の意味は何ですか。また、Webの多くの記事を検索しましたが、これを明確に特定できませんでした。誰か説明してくれますか?
これら2つは同じ値を取得しますか?
WSDLファイルのターゲット名前空間は、SOAPサービス自体に関連付けられた名前空間です。たとえば、顧客サービスがある場合、名前空間はhttp://www.acme.com/Customer/V1/CustomerService
のようなものになります。
[XSDインポート]セクションでは、インポートするXSDのネームスペースを指定します。 XSDファイルには、サービスが送信するデータが含まれます。つまり、XMLにシリアル化され、要求と応答として上下に送信されるオブジェクト定義が含まれます。 XSDには、WSDLが公開する操作を含めることもできます。
WSDLは1つ以上のXSDファイルをインポートでき、各XSDには独自の名前空間があります。 XSDには、次のような名前空間が含まれます。
http://www.acme.com/Customer/V1/GetCustomerRequest
GetCustomerRequestの場合、これはGetCustomerRequest操作のデータ構造を定義します。http://www.acme.com/Customer/V1/CustomerObject
CustomerObjectの場合、これはCustomerObjectのデータ構造を定義します。名前空間はJavaパッケージのようなもので、オブジェクトの階層を定義するだけです。理解すべき重要なことの1つは、販売システムに属するCustomerオブジェクトと、これらを別々のネームスペースに配置することにより、一意のネームスペースがある限り、同じサービスで両方のCustomerオブジェクトを使用できます。
通常、これらの名前空間はSOAカタログの一部を形成し、それらを定義することはSOAガバナンス標準の一部になります。 SOA成功。
Javaの類推を使用して説明します。
名前空間はJava名前空間に似ています。各xml要素は名前空間にあります。 targetNamespaceを指定すると、内部で定義されたすべての要素(および型)がその名前空間に含まれることになります。すべてのJavaクラスがパッケージ内にあることに似ています。
インポートされるxsdには、xsd内のすべての要素が定義された名前空間内にあることを意味する独自のターゲット名前空間があります。
Wsdlのインポートは、パッケージを指定するJavaインポートを提供するようなものです。
私は明確で役立つことを願っています:D。
targetNamespaceは、XMLスキーマ「アーティファクト」です。ユーザー定義のデータ型別のチームと作業する場合、名前が衝突する可能性があります。これは、schema
要素の属性がnamespaceパッケージを定義します。慣例により、URI/URLを使用しますが、任意の文字列を使用できます。
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="namespace">
...
</xs:schema>
例えば:
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/beans/spring-mvc.xsd" xmlns:mvc="http://www.springframework.org/schema/mvc"
// or if the schema exist in current directory we can declare as follows
xsi:schemaLocation="http://www.springframework.org/schema/mvc spring-mvc.xsd" xmlns:mvc="http://www.springframework.org/schema/mvc"
//for import xml schema
<xsd:import schemaLocation="http://localhost:9999/ws/hello?xsd=1" namespace="http://ws.peter.com/"/>
注:xsi:schemaLocation
は、名前空間とURLが空白で区切られていることを意味します。そして、xmlns:mvc
は名前空間を意味するhttp://www.springframework.org/schema/mvc
mvc
エイリアスとして定義します。
例:春では、beans xmlスキーマは、spring-beans.xsdの異なるバージョンに対して同じtargetNamespaceを持っています。
namespaceアナロジー:
+---------+--------------------------------------------------------+------------------------------+------------------------+
| Context | Name | Namespace identifier | Local name |
+---------+--------------------------------------------------------+------------------------------+------------------------+
| Path | /home/user/readme.txt | /home/user (path) | readme.txt (file name) |
| XML | xmlns:xhtml="http://www.w3.org/1999/xhtml"<xhtml:body> | http://www.w3.org/1999/xhtml | body |
| Java | Java.util.Date | Java.util | Date |
+---------+--------------------------------------------------------+------------------------------+------------------------+