- PR -

XML Namespaceについて

1
投稿者投稿内容
WT
常連さん
会議室デビュー日: 2004/07/22
投稿数: 29
投稿日時: 2007-02-28 17:25
SOAPで使用するXMLのNamespace指定でアドバイスが頂きたく投稿します。


.NET(C#)を使用してSOAP通信を行うプログラムを作成しています。
その中でSoapRpcMethodAttribute()を使っています。


[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://webservice.common.hoge.co.jp", ResponseNamespace="http://localhost:8080/WSProject/services/Requester")]

[return:System.Xml.Serialization.SoapElementAttribute("executeSoapActionReturn")]

public ResponseSoap sendSoap(RequestSoap in0){
object[] results = this.Invoke("sendSoap",new object[] {in0});
return ((ResponseSoap)(results[0]));
}


上記コード中、「ResponseNamespace="http:localhost・・・」と記述した部分が気になっています。
この箇所はSOAPレスポンスに対応付けられたXML名前空間(Namespace)を設定するのだと認識しています。
通常であれば、WebServiceを提供するサイトのドメイン名等を記述するものと思っていますが、今回、そのドメイン名が未だ未決な為、仮置きで「localhost」等としています。

質問:
本来、ResponseNamespace(XML Namespace)には「実際に通信可能なドメイン名やホスト名、IPアドレス」を指定しなければいけないものなのでしょうか?
仮にResponseNamespaceに実際には存在しない適当なホスト名や、適当な文字列(例えば「SOAPService」とか)等を使用した場合、弊害ってあるのでしょうか?

宜しくアドバイスお願いします。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-03-01 10:47
URIを使う理由は、Namespaceがダブらないようにするためと記憶しています。URIが指す場所にスキーマや説明ページが存在すれば親切なんでしょうけどね。

xml 名前空間
xml namespace
で検索するとそのへん詳しく出てくると思いますよ。
WT
常連さん
会議室デビュー日: 2004/07/22
投稿数: 29
投稿日時: 2007-03-01 13:54
返信ありがとうございます。


>xml 名前空間
>xml namespace
>で検索するとそのへん詳しく出てくると思いますよ。

はい。調べてみた所、XML名前空間の仕様書に

The namespace name, to serve its intended purpose, should have the characteristics of uniqueness and persistence. It is not a goal that it be directly usable for retrieval of a schema (if any exists).

と、言う記述があるらしく、URIは仕様やスキーマを取り出すためのものではなく、ユニークで永続的な識別が目的である。と、言う説明ページがありました。
(参照ページのURLは記載していいのか分からないので、記述しませんが・・・)

つまり、必ずしもURIを記述しなくても良い。と、判断しました。
今回はプログラム中では

   ResponseNamespace="GERO"

とし、WSDD上の記述を下記のように合わせる事としました。
<typeMapping
・・・
type="java:com.hoge.WebService.Requester" xmlns:REQ_NS="GERO" />

これから実験してみます。
返信ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)