- PR -

XindiceはXPを未サポート?

1
投稿者投稿内容
にんじゃ
会議室デビュー日: 2002/08/19
投稿数: 1
投稿日時: 2002-08-19 18:27
”Xindice:無料で使えるXMLデータベース”で勉強させて頂いているのですが、
xpathを使った検索
例えば、xindiceadmin xpath -c /db/sampledb -q "/problem[@status='open']"
実行時に
C:\Xindice>xindiceadmin xpath -c /db/sampledb -q "/problem[@status='open']"
='open']""=="" の使い方が誤っています。
とエラーが出ます。
OSはWindowsXPProfessionalなのですが、XPでは動かないのでしょうか?
ちなみに、Windows2000のマシンで試した所、OKでした。

以上、よろしくお願いします。
ケビン・ジョーンズ
会議室デビュー日: 2003/09/26
投稿数: 2
投稿日時: 2003-09-26 11:41
私も同様な現象に遭遇しました.

そこでxindiceadmin.batというバッチファイルを調べてみたところ、
パラメータをCLという変数に取り込もうとしている処理があり、

set CL=
:LOOP
if "%1"=="" goto DONE
set CL=%CL% %1
echo %CL%
shift
goto LOOP
ONE

CLをechoで出力させてみたところ
xpath -c /db/sampledb -q "/problem[@status 'open']"
となってしまい、イコールがスペースに置き換わっていました.
NTや2000ではダブルコーテーションで括っておけばイコールは出力されたのですが、XPだと調子悪いです.

というわけでxindiceの問題というよりはXPにおけるバッチファイル上の問題といった感じがします.

というわけで、どなたかXPのバッチファイル内でパラメータで使用しているイコール(=)を変数に正しく取り込む方法をご存知の方いらっしゃいませんか?
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2003-09-26 23:17
if "%1"=="" goto :EOF
逆転比較すると通りました
if ""=="%1" goto :EOF

残り全部のパラメータをコピーするなら
set CL=%*
echo %CL%
もできました。

Windows のコマンドプロンプトは任意文字列の引数は困難度が高いです
ワンライナーは書きにくい、
ファイル名引数しか考えていないような作りです。

コマンドプロンプトで詰まったら、最新Cygwin BASH も試しましょう
(正しい日本語設定は?ですが)

[ メッセージ編集済み 編集者: MMX 編集日時 2003-09-28 21:37 ]
ケビン・ジョーンズ
会議室デビュー日: 2003/09/26
投稿数: 2
投稿日時: 2003-09-29 10:14
MMXさん、
ご回答ありがとうございます.

ご教授いただいたとおり逆転比較
if ""=="%1" goto DONE
をするとうまく動きました.

また、
set CL=%*
でも動きました.

ところで、
if "%1"=="" goto DONE と
if ""=="%1" goto DONE との間にはどのような違いがあるか、
もしよろしければ教えていただけませんか?

ちなみに、
if "%~1"=="" goto DONE
と、1の前にチルダを入れても動きました.


とりあえず動いてすっきりしました.ありがとうございます.

MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2003-09-29 14:18
ヘルプとサポート 「バッチ パラメータを使用する」
ms-its:C:\WINDOWS\Help\ntcmds.chm::/percent.htm
の最終段落には、環境変数とバッチパラメータは違うと書いてある。
この「ビミョー」さナドなどが原因では?

コマンドプロンプトは部分的には新人類的「式言語」ぽく便利なヶ所
もあるのだが、全体のバランスは練れていないよーな
1

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