Gauche > Archives > 2015/04/13

2015/04/13 22:00:15 UTCcranebird
#
こんにちは。sxml-serializer について質問です。
2015/04/13 22:01:00 UTCshiro
#
はいはーい
2015/04/13 22:01:34 UTCcranebird
#
文字列から ssax:xml->sxml でsxmlを生成して srl:sxml->xml で元に戻したいのですが、うまくいかない場合があります。例として、
#
(srl:sxml->xml (ssax:xml->sxml (open-input-string "<feed xmlns=\"http://www.w3.org/2005/Atom\"/>") '())) =>
#
"<prfx1:feed xmlns:prfx1=\"http://www.w3.org/2005/Atom\"/>"
#
こんな感じになります。名前空間の指定の問題だと思うのですが何か回避方法はあるでしょうか?
2015/04/13 22:03:45 UTCshiro
#
もともと作者が違うのであまり対称じゃないんですよね。
2015/04/13 22:04:33 UTCcranebird
#
あ、そうなんですか。
#
期待する動作は chicken scheme の sxml-serializer で、こちらはデフォルトの名前空間が指定できる?ためか、期待する動作になります。
#
#;2>  (serialize-sxml '(*TOP* (@ (*NAMESPACES* (atom "http://test.org")))
			      (atom:feed))
		      ns-prefixes: '((*default* . "http://test.org"))) =>
#
"<feed xmlns=\"http://test.org\" />"
#
とりあえずは自前でSXML-> XML のシリアライザーを書くことにしてみます。わたしの要件だと、単純に書いた通りにシリアライズしてくれればよいので。
2015/04/13 22:11:08 UTCshiro
#
ふーむ、namespace prefixの指定は下請け関数のsrl:sxml->stringとか使えば出来るんですが、デフォルトの名前空間、という指定方法が無い感じです。
2015/04/13 22:26:44 UTCcranebird
#
了解です。適当な手段で回避しますです。SXML はこの名前空間とか XML には存在しない *TOP* が出てくるところとか、妙に複雑ですね。ありがとうございました。