Forums: 公開ディスカッション (Thread #31347)

応答メッセージのルート属性に「xml:space」 (2012-01-13 13:56 by Anonyme #61667)

応答メッセージのルート属性に「xml:space」が設定されている場合未知の要素「space」とエラーとなります。
「xml:space」を外すことで正常動作は行われますが、ルート属性に「xml:space」を設定することは出来ませんでしょうか。

Répondre à 61667×

You can not use Wiki syntax
Vous n'êtes pas connecté. Pour distinguer vos messages en provenance du reste, vous devez choisir un surnom. (L'unicité du surnom est pas réservé. Il est possible que quelqu'un d'autre pourrait utiliser exactement le même surnom. Si vous voulez l'assurance de votre identité, nous vous recommandons de vous connecter avant de poster.) Connexion

RE: 応答メッセージのルート属性に「xml:space」 (2012-01-25 18:50 by kominen #61914)

お伝えいただいた内容に対応するためには、マスカットの一部のメソッドをオーバライドする形で拡張する必要があります。

拡張方法をお伝えしますので、ご利用になられているマスカットのバージョンをお教えください。
Répondre à #61667

Répondre à 61914×

You can not use Wiki syntax
Vous n'êtes pas connecté. Pour distinguer vos messages en provenance du reste, vous devez choisir un surnom. (L'unicité du surnom est pas réservé. Il est possible que quelqu'un d'autre pourrait utiliser exactement le même surnom. Si vous voulez l'assurance de votre identité, nous vous recommandons de vous connecter avant de poster.) Connexion

RE: 応答メッセージのルート属性に「xml:space」 (2012-01-26 10:25 by Anonyme #61925)

ご回答ありがとうございます。

バージョンは「maskat-2.3.0.v20110408」となっております。

よろしくお願い致します。
Répondre à #61914

Répondre à 61925×

You can not use Wiki syntax
Vous n'êtes pas connecté. Pour distinguer vos messages en provenance du reste, vous devez choisir un surnom. (L'unicité du surnom est pas réservé. Il est possible que quelqu'un d'autre pourrait utiliser exactement le même surnom. Si vous voulez l'assurance de votre identité, nous vous recommandons de vous connecter avant de poster.) Connexion

RE: 応答メッセージのルート属性に「xml:space」 (2012-01-30 17:21 by kominen #62019)

インデントは崩れてしまいますが…下記のコードをjsファイルに保存したうえで、index.html 上の script タグにて読み込んでください。
# 対象の通信を行う前に、patch 内の処理を実行することでも対応は可能です。

「ここから」「ここまで」の間に処理を追加することで、任意の属性の存在を許容するように拡張しています。

maskat.lang.Class.declare("maskat.core.CorePatchPlugin")
.extend("maskat.core.Plugin", {

_static: {
initialize: function() {
maskat.core.Plugin.register(this);
maskat.core.PluginManager.getInstance().
setProperties("corePatch", { enabled: true });
}
},

getPluginId: function() {
return "corePatch";
},

getVersion: function() {
return "1.0.0";
},

getDependencies: function() {
return [ "core" ];
},

start: function() {
/* オーバライド処理を定義 */

maskat.event.XMLResponseUnmarshaller.prototype.configure = function() {
if (this.configured) {
return;
}
this.configured = true;
this.binder = new maskat.xml.XMLObjectBinder();

if (this.targets.length <= 0) {
return;
}
var root;

for (var i = 0, l = this.targets.length; i < l; i++) {
var target = this.targets[i];
var path = [];
path[path.length] = this.rootNode;
this.binder.strictCheck = true;

if (target.type == "local") {
continue;
}
// 同一ノードを複数のターゲットで取得するさいのデータ位置を保持する
var name = target.node || target.childNode;
this.nodes[name] = (this.nodes[name] == undefined) ? -1 : i;

if (this.soap) {
// TODO: add soap envelope
} else {
this.binder.setRootElement(this.ns, this.rootNode);
}
/* 応答メッセージのルート要素に対応するバインディングを生成 */
if (!root) {
// ここから
var config = {
attributes: {
"*": { type: "string" }
}
};
root = this.binder.addElementBinding(this.ns, this.rootNode, config);
// root = this.binder.addElementBinding(this.ns, this.rootNode);
// ここまで
}
var wrapper;
if (target.node) {
/*
* アンマーシャル対象のデータはルート要素の子要素 (wrapper) の
* 内部に格納されている
*/
path[path.length] = target.node;
wrapper = this.binder.addElementBinding(this.ns, path.join("."));
root.addChildBinding(path.join("."));
root.addChildBinding("*", { validate: false });
} else {
/* アンマーシャル対象のデータはルート要素の内部に格納されている */
wrapper = root;
}
var object;
if (target.childNode) {
/*
* 繰り返し要素が定義されている場合、繰り返し単位となる個々の
* 要素をオブジェクトへバインドし、それらを要素とする配列を
* マスカット部品または変数にバインドする
*/
path[path.length] = target.childNode;
object = this.binder.addElementBinding(this.ns, path.join("."));
wrapper.addChildBinding(target.childNode, { property: i, repeat: true });
if (target.binds) {
wrapper.addChildBinding("*", { validate: false });
} else {
wrapper.addChildBinding(target.childNode, { repeat: true });
}
} else if (target.binds) {
/*
* 繰り返し要素は未定義だが、プロパティへのバインドが定義されて
* いる場合、単一のオブジェクトへのバインドを定義
*/
root.addChildBinding(target.node, { property: i });
object = wrapper;
} else {
/* テキスト要素から文字列へのバインドを定義 */
wrapper.addChildBinding("#text", { property: i });
object = null;
}
if (object) {
if (target.binds) {
/* オブジェクトのプロパティへのバインドを定義 */
for (var j = 0, m = target.binds.length; j < m; j++) {
var bind = target.binds[j];
path[path.length] = bind.node;
var property = this.binder.addElementBinding(this.ns, path.join("."));
property.addChildBinding("#text", { property: bind.property });
object.addChildBinding(bind.node);
path.pop();
}
object.addChildBinding("*", { validate: false });
} else {
object.addChildBinding("#text", { property: i, repeat: true });
}
}
}
}
}

});
Répondre à #61667

Répondre à 62019×

You can not use Wiki syntax
Vous n'êtes pas connecté. Pour distinguer vos messages en provenance du reste, vous devez choisir un surnom. (L'unicité du surnom est pas réservé. Il est possible que quelqu'un d'autre pourrait utiliser exactement le même surnom. Si vous voulez l'assurance de votre identité, nous vous recommandons de vous connecter avant de poster.) Connexion

RE: 応答メッセージのルート属性に「xml:space」 (2012-02-07 15:21 by Anonyme #62122)

確認が遅くなりました。

ご提示頂いた通りにjsの作成、index.htmlでの読み込みを行うことでエラーが解消されることが確認出来ました。

ありがとうございます。
Répondre à #62019

Répondre à 62122×

You can not use Wiki syntax
Vous n'êtes pas connecté. Pour distinguer vos messages en provenance du reste, vous devez choisir un surnom. (L'unicité du surnom est pas réservé. Il est possible que quelqu'un d'autre pourrait utiliser exactement le même surnom. Si vous voulez l'assurance de votre identité, nous vous recommandons de vous connecter avant de poster.) Connexion